<?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>229353</bug_id>
          
          <creation_ts>2021-08-20 15:01:19 -0700</creation_ts>
          <short_desc>Allow WASM to use up to 4GB</short_desc>
          <delta_ts>2021-11-02 14:14:25 -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=231795</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231797</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232244</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231795</blocked>
    
    <blocked>231797</blocked>
    
    <blocked>231935</blocked>
    
    <blocked>231975</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jonlee</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1786006</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-08-20 15:01:19 -0700</bug_when>
    <thetext>See https://v8.dev/blog/4gb-wasm-memory for details and motivation.
Currently we only support up to 2GB, and it is a slightly arbitrary restriction.
To support 4GB, there are a few changes that will have to be done. At least:
- Make the length of typed arrays/array buffers be a size_t so that it can be 1&lt;&lt;32 (which is not possible in an unsigned as currently)
- Teach the JITs how to deal with that, and how to use numbers that are greater than INT32_MAX as indices.
- increase MAX_ARRAY_BUFFER_SIZE (the trivial part)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786009</commentid>
    <comment_count>1</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-08-20 15:02:47 -0700</bug_when>
    <thetext>rdar://81603447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796284</commentid>
    <comment_count>2</comment_count>
      <attachid>438994</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-22 17:22:59 -0700</bug_when>
    <thetext>Created attachment 438994
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797079</commentid>
    <comment_count>3</comment_count>
      <attachid>439209</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-24 16:48:44 -0700</bug_when>
    <thetext>Created attachment 439209
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797095</commentid>
    <comment_count>4</comment_count>
      <attachid>439218</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-24 17:12:19 -0700</bug_when>
    <thetext>Created attachment 439218
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797561</commentid>
    <comment_count>5</comment_count>
      <attachid>439369</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-27 10:38:50 -0700</bug_when>
    <thetext>Created attachment 439369
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799095</commentid>
    <comment_count>6</comment_count>
      <attachid>439798</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-30 17:01:36 -0700</bug_when>
    <thetext>Created attachment 439798
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799416</commentid>
    <comment_count>7</comment_count>
      <attachid>439880</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-01 11:23:40 -0700</bug_when>
    <thetext>Created attachment 439880
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799426</commentid>
    <comment_count>8</comment_count>
      <attachid>439884</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-01 11:33:29 -0700</bug_when>
    <thetext>Created attachment 439884
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799492</commentid>
    <comment_count>9</comment_count>
      <attachid>439902</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-01 13:19:54 -0700</bug_when>
    <thetext>Created attachment 439902
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799604</commentid>
    <comment_count>10</comment_count>
      <attachid>439926</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-01 16:11:52 -0700</bug_when>
    <thetext>Created attachment 439926
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799629</commentid>
    <comment_count>11</comment_count>
      <attachid>439932</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-01 16:43:32 -0700</bug_when>
    <thetext>Created attachment 439932
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799673</commentid>
    <comment_count>12</comment_count>
      <attachid>439945</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-01 18:25:58 -0700</bug_when>
    <thetext>Created attachment 439945
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799752</commentid>
    <comment_count>13</comment_count>
      <attachid>439967</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-02 10:34:24 -0700</bug_when>
    <thetext>Created attachment 439967
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800246</commentid>
    <comment_count>14</comment_count>
      <attachid>440112</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-04 15:24:04 -0700</bug_when>
    <thetext>Created attachment 440112
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800333</commentid>
    <comment_count>15</comment_count>
      <attachid>440136</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-04 18:11:28 -0700</bug_when>
    <thetext>Created attachment 440136
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800732</commentid>
    <comment_count>16</comment_count>
      <attachid>440258</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 13:36:52 -0700</bug_when>
    <thetext>Created attachment 440258
Patch

Still missing a bunch of tests, but should otherwise be ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800767</commentid>
    <comment_count>17</comment_count>
      <attachid>440258</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 14:31:50 -0700</bug_when>
    <thetext>Comment on attachment 440258
Patch

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

Drive-by comment.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        - 4GB is not representable in a uint32_t, so I changed all length of ArrayBuffer/TypedArray/etc.. to being size_t

I wonder if we should use either UCPURegister or uintptr_t.
If what we need to know is sizeof CPU register, then use UCPURegister.
If what we need to know is sizeof points, then use uintptr_t.
size_t sounds platform dependent. The size definition of it sounds vague. (for example, ARM64_32 / x32, what is sizeof(size_t)?)

Here is information.
If it is ARM64_32, then sizeof(UCPURegister) is 8, while sizeof(uintptr_t) is 4.
If it is ARM64, then sizeof(UCPURegister) is 8, while sizeof(uintptr_t) is 8.
If it is X64, then sizeof(UCPURegister) is 8, while sizeof(uintptr_t) is 8.

BTW, USE(JSVALUE64) == CPU(REGISTER64). So in ARM64_32 environment, USE(JSVALUE64) is true (while sizeof(uintptr_t) is 4).

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1197
&gt; +#if USE(JSVALUE64)

How about using USE(LARGE_TYPED_ARRAYS)?

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1199
&gt; +        jit.load64(CCallHelpers::Address(baseGPR, JSArrayBufferView::offsetOfLength()), scratchGPR);

What is the sizeof(size_t) in ARM64_32 environment?
If it is 4, then let&apos;s not use USE(JSVALUE64) since ARM64_32 is using JSVALUE64 while it is using 4-byte pointers.
While ARM64_32 is not using JIT yet, we had several refactoring for the preparation of that, so we should not break things.

I think we should use either UCPURegister or uintptr_t. If we want to tie USE(JSVALUE64) to USE(LARGE_TYPED_ARRAYS), then we should use UCPURegister.

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1638
&gt; +#if USE(JSVALUE64)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800790</commentid>
    <comment_count>18</comment_count>
      <attachid>440258</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 15:09:55 -0700</bug_when>
    <thetext>Comment on attachment 440258
Patch

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

Post the current comments.

&gt; Source/WTF/wtf/CheckedArithmetic.h:1001
&gt; +template&lt;typename T&gt; bool isSumSmallerThanOrEqual(T a, T b, T bound)
&gt; +{
&gt; +    Checked&lt;T&gt; sum = a;

Should we take OverflowHandler like safeAdd and set that?
Currently, Checked&lt;T&gt; is always using CrashOnOverflow.
So, `return !sum.hasOverflowed() &amp;&amp; sum.value() &lt;= bound;` path is not used much (when overflow happens, we crash at `sum += b` place.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1268
&gt; +                Checked&lt;uint32_t&gt; dataLength = data-&gt;data().length();
&gt; +                write(dataLength);
&gt; +                write(data-&gt;data().data(), dataLength);

Can you make it DataClone failure instead of crash when transferring 4GB ArrayBuffer?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1317
&gt; +                Checked&lt;uint32_t&gt; byteLength = arrayBuffer-&gt;byteLength();
&gt; +                write(byteLength);
&gt; +                write(static_cast&lt;const uint8_t*&gt;(arrayBuffer-&gt;data()), byteLength);

Can you make it DataClone failure instead of crash when transferring 4GB ArrayBuffer?

&gt; Source/WebCore/fileapi/NetworkSendQueue.cpp:71
&gt; +        enqueue(JSC::ArrayBuffer::create(static_cast&lt;size_t&gt;(0U), 1), 0, 0);

Probably this change not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800801</commentid>
    <comment_count>19</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 15:27:27 -0700</bug_when>
    <thetext>Thanks for your comment. I agree that UCPURegister makes more sense, I&apos;ll move to it.

(In reply to Yusuke Suzuki from comment #17)
&gt; Comment on attachment 440258 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440258&amp;action=review
&gt; 
&gt; Drive-by comment.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:10
&gt; &gt; +        - 4GB is not representable in a uint32_t, so I changed all length of ArrayBuffer/TypedArray/etc.. to being size_t
&gt; 
&gt; I wonder if we should use either UCPURegister or uintptr_t.
&gt; If what we need to know is sizeof CPU register, then use UCPURegister.
&gt; If what we need to know is sizeof points, then use uintptr_t.
&gt; size_t sounds platform dependent. The size definition of it sounds vague.
&gt; (for example, ARM64_32 / x32, what is sizeof(size_t)?)
&gt; 
&gt; Here is information.
&gt; If it is ARM64_32, then sizeof(UCPURegister) is 8, while sizeof(uintptr_t)
&gt; is 4.
&gt; If it is ARM64, then sizeof(UCPURegister) is 8, while sizeof(uintptr_t) is 8.
&gt; If it is X64, then sizeof(UCPURegister) is 8, while sizeof(uintptr_t) is 8.
&gt; 
&gt; BTW, USE(JSVALUE64) == CPU(REGISTER64). So in ARM64_32 environment,
&gt; USE(JSVALUE64) is true (while sizeof(uintptr_t) is 4).
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1197
&gt; &gt; +#if USE(JSVALUE64)
&gt; 
&gt; How about using USE(LARGE_TYPED_ARRAYS)?
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1199
&gt; &gt; +        jit.load64(CCallHelpers::Address(baseGPR, JSArrayBufferView::offsetOfLength()), scratchGPR);
&gt; 
&gt; What is the sizeof(size_t) in ARM64_32 environment?
&gt; If it is 4, then let&apos;s not use USE(JSVALUE64) since ARM64_32 is using
&gt; JSVALUE64 while it is using 4-byte pointers.
&gt; While ARM64_32 is not using JIT yet, we had several refactoring for the
&gt; preparation of that, so we should not break things.
&gt; 
&gt; I think we should use either UCPURegister or uintptr_t. If we want to tie
&gt; USE(JSVALUE64) to USE(LARGE_TYPED_ARRAYS), then we should use UCPURegister.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1638
&gt; &gt; +#if USE(JSVALUE64)
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800804</commentid>
    <comment_count>20</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 15:28:22 -0700</bug_when>
    <thetext>&gt; &gt; Source/WTF/wtf/CheckedArithmetic.h:1001
&gt; &gt; +template&lt;typename T&gt; bool isSumSmallerThanOrEqual(T a, T b, T bound)
&gt; &gt; +{
&gt; &gt; +    Checked&lt;T&gt; sum = a;
&gt; 
&gt; Should we take OverflowHandler like safeAdd and set that?
&gt; Currently, Checked&lt;T&gt; is always using CrashOnOverflow.
&gt; So, `return !sum.hasOverflowed() &amp;&amp; sum.value() &lt;= bound;` path is not used
&gt; much (when overflow happens, we crash at `sum += b` place.

Oops, good catch, thank you. I&apos;ll replace Checked&lt;T&gt; by Checked&lt;T, RecordOnOverflow&gt;.

&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1268
&gt; &gt; +                Checked&lt;uint32_t&gt; dataLength = data-&gt;data().length();
&gt; &gt; +                write(dataLength);
&gt; &gt; +                write(data-&gt;data().data(), dataLength);
&gt; 
&gt; Can you make it DataClone failure instead of crash when transferring 4GB
&gt; ArrayBuffer?
&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1317
&gt; &gt; +                Checked&lt;uint32_t&gt; byteLength = arrayBuffer-&gt;byteLength();
&gt; &gt; +                write(byteLength);
&gt; &gt; +                write(static_cast&lt;const uint8_t*&gt;(arrayBuffer-&gt;data()), byteLength);
&gt; 
&gt; Can you make it DataClone failure instead of crash when transferring 4GB
&gt; ArrayBuffer?

will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800807</commentid>
    <comment_count>21</comment_count>
      <attachid>440258</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 15:30:25 -0700</bug_when>
    <thetext>Comment on attachment 440258
Patch

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

More drive-by comments.

&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:320
&gt; +        for (size_t i = 0; i &lt; length; ++i) {
&gt; +            // get() for now probably does not do the right thing for indices above UINT_MAX.
&gt; +            RELEASE_ASSERT(isInBounds&lt;unsigned&gt;(i + objectOffset));
&gt; +            JSValue value = object-&gt;get(globalObject, static_cast&lt;unsigned&gt;(i + objectOffset));

Let&apos;s split this loop into two loops. One for unsigned region (up to UINT32_MAX - 1 since UINT32_MAX is not a right index), and one for non-unsigned region.
Currently, we will crash if we have 4GB &lt; index. And I think slow behavior is OK, but crash is not OK.

JSObject::get is designed for JS&apos;s indexes. And 4GB region is not included in JS&apos;s index. So for typed-array, we should have special handling.
By splitting the loop into two, we can avoid running the above RELEASE_ASSERT for each iteration in the first loop.
And let&apos;s just perform super slow code, like, generating PropertyName via Identifier::from.

&gt;&gt; Source/WTF/wtf/CheckedArithmetic.h:1001
&gt;&gt; +    Checked&lt;T&gt; sum = a;
&gt; 
&gt; Should we take OverflowHandler like safeAdd and set that?
&gt; Currently, Checked&lt;T&gt; is always using CrashOnOverflow.
&gt; So, `return !sum.hasOverflowed() &amp;&amp; sum.value() &lt;= bound;` path is not used much (when overflow happens, we crash at `sum += b` place.

Probably, you need to specify RecordOverflow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800818</commentid>
    <comment_count>22</comment_count>
      <attachid>440258</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 15:47:00 -0700</bug_when>
    <thetext>Comment on attachment 440258
Patch

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

I think this is important question, so I&apos;ll post it quickly.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1322
&gt; -        loadi JSArrayBufferView::m_length[base], length
&gt; -        biaeq index, length, slowPath
&gt; +        loadq JSArrayBufferView::m_length[base], length
&gt; +        bqaeq index, length, slowPath
&gt; +    elsif JSVALUE64
&gt; +        # length and scratch are intentionally undefined on this branch because they are not used on other platforms.
&gt; +        bqaeq index, JSArrayBufferView::m_length[base], slowPath

Question: do we already filter out negative int32 indexes before here?
Previously, we didn&apos;t because we know that size limit is INT32_MAX: biaeq sees negative index as larger one than INT32_MAX. So we can filter negative indexes with this biaeq.
But now, we are using bqaeq. So we need to ensure that index is either negative / positive 64bit integer, or we already filtered out negative int32.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1332
&gt; +    if LARGE_TYPED_ARRAYS
&gt; +        bqbeq index, SmallTypedArrayMaxLength, .smallTypedArray
&gt; +        setLargeTypedArray()
&gt; +.smallTypedArray:
&gt; +    end

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800830</commentid>
    <comment_count>23</comment_count>
      <attachid>440258</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 16:15:00 -0700</bug_when>
    <thetext>Comment on attachment 440258
Patch

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

Some comments on Checked.

&gt; Source/JavaScriptCore/runtime/ArrayBufferView.h:140
&gt; +        Checked&lt;size_t&gt; adjustedOffset = *offset;

Use Checked&lt;size_t, RecordOverflow&gt;, or CheckedSize since default Checked&lt;size_t&gt; crashes when overflow happens.

&gt; Source/JavaScriptCore/runtime/JSArrayBufferView.cpp:87
&gt; +    Checked&lt;size_t&gt; size = length;
&gt; +    size *= elementSize;
&gt; +    if (size &gt; MAX_ARRAY_BUFFER_SIZE)
&gt;          return;

Use Checked&lt;size_t, RecordOverflow&gt;, or CheckedSize since default Checked&lt;size_t&gt; crashes when overflow happens.
And let&apos;s use

if (size.hasOverflowed() || size.value() &gt; MAX_ARRAY_BUFFER_SIZE)
    return;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800836</commentid>
    <comment_count>24</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 16:28:32 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #22)
&gt; Comment on attachment 440258 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440258&amp;action=review
&gt; 
&gt; I think this is important question, so I&apos;ll post it quickly.
&gt; 
&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1322
&gt; &gt; -        loadi JSArrayBufferView::m_length[base], length
&gt; &gt; -        biaeq index, length, slowPath
&gt; &gt; +        loadq JSArrayBufferView::m_length[base], length
&gt; &gt; +        bqaeq index, length, slowPath
&gt; &gt; +    elsif JSVALUE64
&gt; &gt; +        # length and scratch are intentionally undefined on this branch because they are not used on other platforms.
&gt; &gt; +        bqaeq index, JSArrayBufferView::m_length[base], slowPath
&gt; 
&gt; Question: do we already filter out negative int32 indexes before here?
&gt; Previously, we didn&apos;t because we know that size limit is INT32_MAX: biaeq
&gt; sees negative index as larger one than INT32_MAX. So we can filter negative
&gt; indexes with this biaeq.
&gt; But now, we are using bqaeq. So we need to ensure that index is either
&gt; negative / positive 64bit integer, or we already filtered out negative int32.

Good catch, I&apos;ve fixed it with a sign-extension as we&apos;ve discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800837</commentid>
    <comment_count>25</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 16:28:58 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/runtime/ArrayBufferView.h:140
&gt; &gt; +        Checked&lt;size_t&gt; adjustedOffset = *offset;
&gt; 
&gt; Use Checked&lt;size_t, RecordOverflow&gt;, or CheckedSize since default
&gt; Checked&lt;size_t&gt; crashes when overflow happens.

Done.

&gt; &gt; Source/JavaScriptCore/runtime/JSArrayBufferView.cpp:87
&gt; &gt; +    Checked&lt;size_t&gt; size = length;
&gt; &gt; +    size *= elementSize;
&gt; &gt; +    if (size &gt; MAX_ARRAY_BUFFER_SIZE)
&gt; &gt;          return;
&gt; 
&gt; Use Checked&lt;size_t, RecordOverflow&gt;, or CheckedSize since default
&gt; Checked&lt;size_t&gt; crashes when overflow happens.
&gt; And let&apos;s use
&gt; 
&gt; if (size.hasOverflowed() || size.value() &gt; MAX_ARRAY_BUFFER_SIZE)
&gt;     return;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800840</commentid>
    <comment_count>26</comment_count>
      <attachid>440258</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 16:32:33 -0700</bug_when>
    <thetext>Comment on attachment 440258
Patch

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

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1322
&gt;&gt; +        bqaeq index, JSArrayBufferView::m_length[base], slowPath
&gt; 
&gt; Question: do we already filter out negative int32 indexes before here?
&gt; Previously, we didn&apos;t because we know that size limit is INT32_MAX: biaeq sees negative index as larger one than INT32_MAX. So we can filter negative indexes with this biaeq.
&gt; But now, we are using bqaeq. So we need to ensure that index is either negative / positive 64bit integer, or we already filtered out negative int32.

If index is already sign-extended, then we can just use it. But if not, let&apos;s sign-extend it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800843</commentid>
    <comment_count>27</comment_count>
      <attachid>440292</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 16:40:03 -0700</bug_when>
    <thetext>Created attachment 440292
Patch

Adds a couple of new tests, and starts addressing Yusuke&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800875</commentid>
    <comment_count>28</comment_count>
      <attachid>440292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 17:09:17 -0700</bug_when>
    <thetext>Comment on attachment 440292
Patch

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

OK, I think I reviewed runtime code. Will look into LLInt / Baseline / DFG / FTL and compilers next.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2355
&gt;  

We don&apos;t need i &gt;= 0 below.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1322
&gt; +    elsif JSVALUE64

Is using LARGE_TYPED_ARRAYS better?

&gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:474
&gt; +    (void)arrayProfile;

Use `UNUSED_PARAM(arrayProfile);`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800886</commentid>
    <comment_count>29</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 17:23:56 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/jit/JITOperations.cpp:2355
&gt; &gt;  
&gt; 
&gt; We don&apos;t need i &gt;= 0 below.
Fixed.


&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1322
&gt; &gt; +    elsif JSVALUE64
&gt; 
&gt; Is using LARGE_TYPED_ARRAYS better?

I don&apos;t think so: the change to the type of length is not gated by LARGE_TYPED_ARRAYS. What I think I should be using here is REGISTER64 or something like that. It does not seem to be available in the LLInt, but I can probably add it. I&apos;ll do so right now.

&gt; &gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:474
&gt; &gt; +    (void)arrayProfile;
&gt; 
&gt; Use `UNUSED_PARAM(arrayProfile);`

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800897</commentid>
    <comment_count>30</comment_count>
      <attachid>440292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 17:31:51 -0700</bug_when>
    <thetext>Comment on attachment 440292
Patch

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

I&apos;ve posted BaselineJIT related comments.

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1197
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1200
&gt; +        state.failAndRepatch.append(jit.branch64(CCallHelpers::AboveOrEqual, propertyGPR, scratchGPR));

The question is whether this propertyGPR is sign-extended int64_t or JSValue Int32.
If it is JSValue Int32, then this branching is not correct since propertyGPR&apos;s upper 32bit can be JSValue Int32&apos;s tag.
And I think this is probably not sign-extended since we are doing `jit.signExtend32ToPtr(propertyGPR, scratchGPR); in the following code.

But be careful about sign-extension in this IC: IIUC, propertyGPR here needs to be unmodified in this IC since DFG / FTL are seeing this unmodified.
So, if we would like to get sign-extended index, then we need to use scratch GPR.

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1638
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1642
&gt; +        state.failAndRepatch.append(jit.branch64(CCallHelpers::AboveOrEqual, propertyGPR, scratchGPR));

Ditto about sign-extension. Probably, this propertyGPR is not sign-extended since `jit.signExtend32ToPtr(propertyGPR, scratchGPR);` exists in the subsequent code.
And please ensure that we are not modifying propertyGPR since DFG / FTL assumes that it is unmodified.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3252
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3261
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:8357
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11136
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11218
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:86
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:88
&gt; +        jit.load64(MacroAssembler::Address(state.baseGPR, JSArrayBufferView::offsetOfLength()), valueGPR);
&gt; +        jit.boxInt52(valueGPR, valueGPR, state.scratchGPR, state.scratchFPR);

This is not correct. Int52 is only available in DFG and FTL. So generating it in IC is not right since IC can be used in Baseline JIT too.

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:99
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:103
&gt; +        jit.boxInt52(valueGPR, valueGPR, state.scratchGPR, state.scratchFPR);

Ditto. IC can be used in BaselineJIT. And Int52 is only available in DFG and FTL.

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:143
&gt; +#if USE(JSVALUE64)

Let&apos;s use USE(LARGE_TYPED_ARRAYS).

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:144
&gt; +        jit.boxInt52(valueGPR, valueGPR, state.scratchGPR, state.scratchFPR);

Ditto. IC can be used in BaselineJIT. So always using Int52 here is not correct since Int52 is only available in DFG and FTL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800902</commentid>
    <comment_count>31</comment_count>
      <attachid>440292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 17:34:43 -0700</bug_when>
    <thetext>Comment on attachment 440292
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:88
&gt;&gt; +        jit.boxInt52(valueGPR, valueGPR, state.scratchGPR, state.scratchFPR);
&gt; 
&gt; This is not correct. Int52 is only available in DFG and FTL. So generating it in IC is not right since IC can be used in Baseline JIT too.

Ignore this. BoxInt52 is boxing Int52 values into Double-encoded format.

&gt;&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:103
&gt;&gt; +        jit.boxInt52(valueGPR, valueGPR, state.scratchGPR, state.scratchFPR);
&gt; 
&gt; Ditto. IC can be used in BaselineJIT. And Int52 is only available in DFG and FTL.

Ignore this.

&gt;&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:144
&gt;&gt; +        jit.boxInt52(valueGPR, valueGPR, state.scratchGPR, state.scratchFPR);
&gt; 
&gt; Ditto. IC can be used in BaselineJIT. So always using Int52 here is not correct since Int52 is only available in DFG and FTL.

Ignore this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800919</commentid>
    <comment_count>32</comment_count>
      <attachid>440292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-05 18:47:19 -0700</bug_when>
    <thetext>Comment on attachment 440292
Patch

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

I&apos;ve posted some more comments about DFG and FTL. I think we have several issues about type consistency between AI, constant-folding, and generated code.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:3486
&gt;          break;

In GetArrayLength, we should constant-fold only when it is Int32 range. Let&apos;s consider about this. We have a code and we already removed `length &gt; 0xfffffff0` since we said length is Int32. Then after that, if we convert it to non-Int32, then we break the invariant used in the previous optimization.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:3489
&gt; +    case GetArrayLengthAsInt52: {

We should name it GetTypedArrayLengthAsInt52 since it only handles TypedArray.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:3832
&gt;          break;

We should constant-fold only when it is in Int32 range.

&gt; Source/JavaScriptCore/dfg/DFGArrayMode.cpp:297
&gt; +        // FIXME: no idea why we only preserve this out-of-bounds information for PutByVal and not GetByVal as well.

Can you file a bugzilla and paste a URL here?

&gt; Source/JavaScriptCore/dfg/DFGArrayMode.h:153
&gt; +    ArrayMode(Array::Type type, Array::Class arrayClass, Array::Speculation speculation, Array::Conversion conversion, Array::Action action, bool mayBeLargeTypedArray = false)

Is there any code not passing `bool mayBeLargeTypedArray`? If there is no code doing that, can you change it to non-default parameter to avoid accidentally losing that information?

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1339
&gt;      case GetTypedArrayByteOffset:
&gt; +    case GetTypedArrayByteOffsetAsInt52:
&gt;          read(MiscFields);
&gt;          def(HeapLocation(TypedArrayByteOffsetLoc, MiscFields, node-&gt;child1()), LazyNode(node));

We should have different heap location for different types. See https://bugs.webkit.org/show_bug.cgi?id=170990.

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1453
&gt; +        def(HeapLocation(ArrayLengthLoc, MiscFields, node-&gt;child1()), LazyNode(node));

We should have different heap location for different types. See https://bugs.webkit.org/show_bug.cgi?id=170990.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1297
&gt; +                //if (child2-&gt;shouldSpeculateInt32() || !node-&gt;arrayMode().mayBeLargeTypedArray())
&gt; +                    fixEdge&lt;Int32Use&gt;(child2);
&gt; +                //else
&gt; +                //    fixEdge&lt;Int52RepUse&gt;(child2);

Please remove comment-out part.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:2806
&gt; +            //if (m_graph.varArgChild(node, 1)-&gt;shouldSpeculateInt32() || !node-&gt;arrayMode().mayBeLargeTypedArray())
&gt; +                fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 1));
&gt; +            //else
&gt; +            //    fixEdge&lt;Int52RepUse&gt;(m_graph.varArgChild(node, 1));

Please remove comment-out part.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:8354
&gt;          GPRTemporary result(this, Reuse, base);

And compileGetTypedArrayByteOffset needs to perform OSR exit if it is out-of-range from Int32 since it is an invariant declared in AI.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:8359
&gt; +        speculationCheck(Overflow, JSValueSource(), nullptr, m_jit.branch64(MacroAssembler::Above, resultGPR, TrustedImm64(std::numeric_limits&lt;uint32_t&gt;::max())));

This is right. We need this check otherwise, it breaks AI&apos;s invariant that GetArrayLength returns Int32.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4887
&gt; +        LValue result = emitGetTypedArrayByteOffsetExceptCastingResult();
&gt; +        setInt32(m_out.castToInt32(result));

This is not correct. GetTypedArrayByteOffset must return Int32 valid value because AI says it returns SpecInt32Only.
If the value is outside of Int32 range, then we should OSR exit because Int32 is an invariant (not prediction) used in an optimization.
And we should check this OSR exit, and next time, we should emit AsInt52 version.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5083
&gt; +                speculate(Overflow, noValue(), nullptr, m_out.aboveOrEqual(length, m_out.constInt64(std::numeric_limits&lt;int32_t&gt;::max())));

Yes, this is correct. We need this Overflow check. And in DFGByteCodeParser, we should check this Overflow exit to emit GetTypedArrayLengthAsInt52 instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800943</commentid>
    <comment_count>33</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 22:01:03 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:3486
&gt; &gt;          break;
&gt; 
&gt; In GetArrayLength, we should constant-fold only when it is Int32 range.
&gt; Let&apos;s consider about this. We have a code and we already removed `length &gt;
&gt; 0xfffffff0` since we said length is Int32. Then after that, if we convert it
&gt; to non-Int32, then we break the invariant used in the previous optimization.

Good point, fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:3489
&gt; &gt; +    case GetArrayLengthAsInt52: {
&gt; 
&gt; We should name it GetTypedArrayLengthAsInt52 since it only handles
&gt; TypedArray.

Done.

&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:3832
&gt; &gt;          break;
&gt; 
&gt; We should constant-fold only when it is in Int32 range.

Fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGArrayMode.cpp:297
&gt; &gt; +        // FIXME: no idea why we only preserve this out-of-bounds information for PutByVal and not GetByVal as well.
&gt; 
&gt; Can you file a bugzilla and paste a URL here?

Done: https://bugs.webkit.org/show_bug.cgi?id=231276

&gt; &gt; Source/JavaScriptCore/dfg/DFGArrayMode.h:153
&gt; &gt; +    ArrayMode(Array::Type type, Array::Class arrayClass, Array::Speculation speculation, Array::Conversion conversion, Array::Action action, bool mayBeLargeTypedArray = false)
&gt; 
&gt; Is there any code not passing `bool mayBeLargeTypedArray`? If there is no
&gt; code doing that, can you change it to non-default parameter to avoid
&gt; accidentally losing that information?

Lots of code in DFG::ArrayMode::fromObserved does not pass mayBeLargeTypedArray. The flag is later taken from ArrayProfile when fromObserved calls withProfile.

&gt; &gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1339
&gt; &gt;      case GetTypedArrayByteOffset:
&gt; &gt; +    case GetTypedArrayByteOffsetAsInt52:
&gt; &gt;          read(MiscFields);
&gt; &gt;          def(HeapLocation(TypedArrayByteOffsetLoc, MiscFields, node-&gt;child1()), LazyNode(node));
&gt; 
&gt; We should have different heap location for different types. See
&gt; https://bugs.webkit.org/show_bug.cgi?id=170990.

Oh, I did not know that HeapLocation worked that way. Fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1453
&gt; &gt; +        def(HeapLocation(ArrayLengthLoc, MiscFields, node-&gt;child1()), LazyNode(node));
&gt; 
&gt; We should have different heap location for different types. See
&gt; https://bugs.webkit.org/show_bug.cgi?id=170990.

Fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1297
&gt; &gt; +                //if (child2-&gt;shouldSpeculateInt32() || !node-&gt;arrayMode().mayBeLargeTypedArray())
&gt; &gt; +                    fixEdge&lt;Int32Use&gt;(child2);
&gt; &gt; +                //else
&gt; &gt; +                //    fixEdge&lt;Int52RepUse&gt;(child2);
&gt; 
&gt; Please remove comment-out part.

Oops, I thought I already did. Fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:8354
&gt; &gt;          GPRTemporary result(this, Reuse, base);
&gt; 
&gt; And compileGetTypedArrayByteOffset needs to perform OSR exit if it is
&gt; out-of-range from Int32 since it is an invariant declared in AI.

Good catch, I thought of it for GetArrayLength, but forgot it for GetTypedArrayByteOffset. Fixed.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4887
&gt; &gt; +        LValue result = emitGetTypedArrayByteOffsetExceptCastingResult();
&gt; &gt; +        setInt32(m_out.castToInt32(result));
&gt; 
&gt; This is not correct. GetTypedArrayByteOffset must return Int32 valid value
&gt; because AI says it returns SpecInt32Only.
&gt; If the value is outside of Int32 range, then we should OSR exit because
&gt; Int32 is an invariant (not prediction) used in an optimization.
&gt; And we should check this OSR exit, and next time, we should emit AsInt52
&gt; version.

Fixed (both here, and taking it into account in the ByteCodeParser).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800951</commentid>
    <comment_count>34</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 22:41:53 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1200
&gt; &gt; +        state.failAndRepatch.append(jit.branch64(CCallHelpers::AboveOrEqual, propertyGPR, scratchGPR));
&gt; 
&gt; The question is whether this propertyGPR is sign-extended int64_t or JSValue
&gt; Int32.
&gt; If it is JSValue Int32, then this branching is not correct since
&gt; propertyGPR&apos;s upper 32bit can be JSValue Int32&apos;s tag.
&gt; And I think this is probably not sign-extended since we are doing
&gt; `jit.signExtend32ToPtr(propertyGPR, scratchGPR); in the following code.
&gt; 
&gt; But be careful about sign-extension in this IC: IIUC, propertyGPR here needs
&gt; to be unmodified in this IC since DFG / FTL are seeing this unmodified.
&gt; So, if we would like to get sign-extended index, then we need to use scratch
&gt; GPR.

Ah, this is tricky. I&apos;ve fixed it, by moving the allocation of scratch2GPR a bit. It results in doing the sign-extension twice on 64-bit platforms, but I don&apos;t see how to avoid that without allocating a third scratch register. Do you think it would be better? (or is there a simpler way that I am missing?)

&gt; &gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1642
&gt; &gt; +        state.failAndRepatch.append(jit.branch64(CCallHelpers::AboveOrEqual, propertyGPR, scratchGPR));
&gt; 
&gt; Ditto about sign-extension. Probably, this propertyGPR is not sign-extended
&gt; since `jit.signExtend32ToPtr(propertyGPR, scratchGPR);` exists in the
&gt; subsequent code.
&gt; And please ensure that we are not modifying propertyGPR since DFG / FTL
&gt; assumes that it is unmodified.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800966</commentid>
    <comment_count>35</comment_count>
      <attachid>440336</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-05 23:26:23 -0700</bug_when>
    <thetext>Created attachment 440336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800975</commentid>
    <comment_count>36</comment_count>
      <attachid>440336</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-06 00:10:13 -0700</bug_when>
    <thetext>Comment on attachment 440336
Patch

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

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1211
&gt; +#if CPU(REGISTER64)

Hmm, this sounds strange. Length is 64bit only when USE(LARGE_TYPED_ARRAYS) is true, correct?
I think using USE(LARGE_TYPED_ARRAYS) is better. Anyway, we should not use different macro in different places.
Let&apos;s use one of USE(LARGE_TYPED_ARRAYS), CPU(REGISTER64), or USE(JSVALUE64) exclusively.

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1219
&gt; +#endif

Ah, unfortunately, this does not work. This does not work. If we call preserveReusedRegistersByPushing thing, then when jumping to the different place (e.g. state.failAndRepatch.append()), we need to restore registers.
See the case like IndexedScopedArgumentsLoad.

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1664
&gt; +#endif

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3818
&gt; +#if !USE(LARGE_TYPED_ARRAYS)
&gt; +        if (!isInt32Speculation(prediction))
&gt; +            return false;
&gt; +#endif

I think we should align this condition to `!isInt32Speculation(prediction) || m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Overflow)`, or

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3854
&gt; +        if (!isInt32Speculation(prediction))

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3879
&gt; +        if (!isInt32Speculation(prediction))

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1911
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewInt8ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1927
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewInt16ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1959
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewUint8ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1975
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewUint8ClampedArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1991
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewUint16ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2007
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewUint32ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2023
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewFloat32ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2039
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewFloat64ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2055
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewBigInt64ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2071
&gt; +JSC_DEFINE_JIT_OPERATION(operationNewBigUint64ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))

Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize is using CPURegister and the original code was int32_t).

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3252
&gt; +#if CPU(REGISTER64)

Let&apos;s use one of USE(LARGE_TYPED_ARRAYS), CPU(REGISTER64), or USE(JSVALUE64) exclusively.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3254
&gt; +        return m_jit.branch64(
&gt; +            MacroAssembler::AboveOrEqual, indexGPR, MacroAssembler::Imm64(length));

I think this is strict-int32_t (please double-check). And if it is true, then this above-or-equal does not work since the upper bits are 0.
So, negative int32_t will be interpret as large INT32_MAX &lt; x &lt;= UINT32_MAX range value incorrectly.
See fillSpeculateInt32Internal for example.

```
  1108     case DataFormatJSInt32: {
  1109         // In a strict fill we need to strip off the value tag.
  1110         if (strict) {
  1111             GPRReg gpr = info.gpr();
  1112             GPRReg result;
  1113             // If the register has already been locked we need to take a copy.
  1114             // If not, we&apos;ll zero extend in place, so mark on the info that this is now type DataFormatInt32, not DataFormatJSInt32.
  1115             if (m_gprs.isLocked(gpr))
  1116                 result = allocate();
  1117             else {
  1118                 m_gprs.lock(gpr);
  1119                 info.fillInt32(*m_stream, gpr);
  1120                 result = gpr;
  1121             }
  1122             m_jit.zeroExtend32ToWord(gpr, result);
```
StrictInt32 is int32_t, and it is zero-extended.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3261
&gt; +#if CPU(REGISTER64)

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3264
&gt; +    return m_jit.branch64(
&gt; +        MacroAssembler::AboveOrEqual, indexGPR,
&gt; +        MacroAssembler::Address(baseGPR, JSArrayBufferView::offsetOfLength()));

Ditto. This indexGPR is not correct.
And please ensure that sign-extend indexGPR would change GPR which should not be changed. (since indexGPR is derived from some edge).

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:8362
&gt; +#if CPU(REGISTER64)

Ditto. We should use one macro exclusively.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11141
&gt; +#if CPU(REGISTER64)

Ditto. We should use one macro exclusively.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11143
&gt; +    m_jit.signExtend32ToPtr(sizeGPR, sizeGPR);

This is not correct since sizeGPR is tied to node-&gt;child1() edge. So we cannot change it.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11165
&gt;      slowCases.append(m_jit.branch32(
&gt;          MacroAssembler::Above, sizeGPR, TrustedImm32(JSArrayBufferView::fastSizeLimit)));

This is not correct since sizeGPR can include Int52 integer. If we use branch32, we only check slice of 32bit.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11223
&gt; +#if CPU(REGISTER64)

Ditto. We should use one macro exclusively.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2734
&gt; +    ASSERT(baseGPR != vectorGPR);
&gt; +    ASSERT(baseGPR != dataGPR);
&gt; +    ASSERT(vectorGPR != dataGPR);

This is fundamental invariant in DFG. So we do not need ASSERT here.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5688
&gt;          m_jit.zeroExtend32ToWord(indexGPR, t2);
&gt;          if (data.byteSize &gt; 1)
&gt;              m_jit.add64(TrustedImm32(data.byteSize - 1), t2);
&gt; -        m_jit.load32(MacroAssembler::Address(dataViewGPR, JSArrayBufferView::offsetOfLength()), t1);
&gt; +        m_jit.load64(MacroAssembler::Address(dataViewGPR, JSArrayBufferView::offsetOfLength()), t1);
&gt;          speculationCheck(OutOfBounds, JSValueRegs(), node,
&gt;              m_jit.branch64(MacroAssembler::AboveOrEqual, t2, t1));

I think this is not correct. Previously, we are ensuring that t1&apos;s max value is INT32_MAX. Thus, if indexGPR is negative value, then t2 is always larger if upper 32bit is zero-extended. So that was fine.
But now, t1 can be larger than INT32_MAX. So this speculation check is not correct if indexGPR is negative int32.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5889
&gt; -        m_jit.load32(MacroAssembler::Address(dataViewGPR, JSArrayBufferView::offsetOfLength()), t1);
&gt; +        m_jit.load64(MacroAssembler::Address(dataViewGPR, JSArrayBufferView::offsetOfLength()), t1);
&gt;          speculationCheck(OutOfBounds, JSValueRegs(), node,
&gt;              m_jit.branch64(MacroAssembler::AboveOrEqual, t2, t1));

Ditto.

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:86
&gt; +#if CPU(REGISTER64)

Ditto. We should use one macro exclusively.

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:99
&gt; +#if CPU(REGISTER64)

Ditto. We should use one macro exclusively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801396</commentid>
    <comment_count>37</comment_count>
      <attachid>440336</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-06 15:55:32 -0700</bug_when>
    <thetext>Comment on attachment 440336
Patch

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

I think currently bound-check-lowering support in FTL is missing for TypedArray. While DFG performs bound check in GetByVal etc. itself, FTL decouples it from that node, and perform bound checking in CheckInBounds.
And currently, CheckInBounds only accepts Int32. And we exclusively use GetArrayLength / GetVectorLength. See DFGSSALoweringPhase.cpp for more information.
So, for larger TypedArray, I think these CheckInBounds always fail. So right now, probably, 4GB TypedArray always OSR exits on FTL.

We also need to check whether the current (exiting) CheckInBounds is correctly implemented for new 4GB TypedArray.
And if we implement Int52 version of CheckInBounds, then we also need to ensure that the other phase (e.g. DFGIntegerRangeOptimizationPhase) works correctly with that.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:15651
&gt;          LValue indexToCheck = m_out.zeroExtPtr(index);
&gt;          if (data.byteSize &gt; 1)

I looks not correct. index is zero-extended. So if it is negative integer, it just becomes large index.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:15795
&gt; -        LValue length = m_out.zeroExtPtr(m_out.load32NonNegative(dataView, m_heaps.JSArrayBufferView_length));
&gt; +        LValue length = m_out.load64NonNegative(dataView, m_heaps.JSArrayBufferView_length);
&gt;          LValue indexToCheck = m_out.zeroExtPtr(index);
&gt;          if (data.byteSize &gt; 1)
&gt;              indexToCheck = m_out.add(indexToCheck, m_out.constInt64(data.byteSize - 1));

Ditto. These code is not correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802731</commentid>
    <comment_count>38</comment_count>
      <attachid>440817</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-11 12:16:37 -0700</bug_when>
    <thetext>Created attachment 440817
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802741</commentid>
    <comment_count>39</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-11 12:34:38 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1211
&gt; &gt; +#if CPU(REGISTER64)
&gt; 
&gt; Hmm, this sounds strange. Length is 64bit only when USE(LARGE_TYPED_ARRAYS)
&gt; is true, correct?
&gt; I think using USE(LARGE_TYPED_ARRAYS) is better. Anyway, we should not use
&gt; different macro in different places.
&gt; Let&apos;s use one of USE(LARGE_TYPED_ARRAYS), CPU(REGISTER64), or USE(JSVALUE64)
&gt; exclusively.

Since using LARGE_TYPED_ARRAYS throughout was not practical (as the types change based on CPU(REGISTER64, not LARGE_TYPED_ARRAYS), and JSVALUE64 is not appropriate as we discussed earlier, I removed LARGE_TYPED_ARRAYS and switched everything to CPU(REGISTER64).

&gt; &gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1219
&gt; &gt; +#endif
&gt; 
&gt; Ah, unfortunately, this does not work. This does not work. If we call
&gt; preserveReusedRegistersByPushing thing, then when jumping to the different
&gt; place (e.g. state.failAndRepatch.append()), we need to restore registers.
&gt; See the case like IndexedScopedArgumentsLoad.

I fixed this by moving the scratch register allocation back to where it was and instead relying on the fact that branch64/branch32 can apparently accept an Address. It is a bit messy (scratchGPR contains first the property then the length then the property again), but should work unless I missed something else.

&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3818
&gt; &gt; +#if !USE(LARGE_TYPED_ARRAYS)
&gt; &gt; +        if (!isInt32Speculation(prediction))
&gt; &gt; +            return false;
&gt; &gt; +#endif
&gt; 
&gt; I think we should align this condition to `!isInt32Speculation(prediction)
&gt; || m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Overflow)`

Good catch, I fixed this in all three places.
 
&gt; &gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1911
&gt; &gt; +JSC_DEFINE_JIT_OPERATION(operationNewInt8ArrayWithSize, char*, (JSGlobalObject* globalObject, Structure* structure, UCPURegister length, char* vector))
&gt; 
&gt; Is UCPURegister correct? Isn&apos;t it CPURegister? (since newTypedArrayWithSize
&gt; is using CPURegister and the original code was int32_t).

You are correct, I thought that the check for &gt;= 0 was before that point, but it is after. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802765</commentid>
    <comment_count>40</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-11 13:17:37 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3254
&gt; &gt; +        return m_jit.branch64(
&gt; &gt; +            MacroAssembler::AboveOrEqual, indexGPR, MacroAssembler::Imm64(length));
&gt; 
&gt; I think this is strict-int32_t (please double-check). And if it is true,
&gt; then this above-or-equal does not work since the upper bits are 0.
&gt; So, negative int32_t will be interpret as large INT32_MAX &lt; x &lt;= UINT32_MAX
&gt; range value incorrectly.
&gt; See fillSpeculateInt32Internal for example.

I thought that strictInt32 led to sign-extension. I fixed this by passing a scratch register and doing a sign-extension into it, then doing the test against it.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11143
&gt; &gt; +    m_jit.signExtend32ToPtr(sizeGPR, sizeGPR);
&gt; 
&gt; This is not correct since sizeGPR is tied to node-&gt;child1() edge. So we
&gt; cannot change it.

Fixed (using a scratch register).

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11165
&gt; &gt;      slowCases.append(m_jit.branch32(
&gt; &gt;          MacroAssembler::Above, sizeGPR, TrustedImm32(JSArrayBufferView::fastSizeLimit)));
&gt; 
&gt; This is not correct since sizeGPR can include Int52 integer. If we use
&gt; branch32, we only check slice of 32bit.

Good catch, fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2734
&gt; &gt; +    ASSERT(baseGPR != vectorGPR);
&gt; &gt; +    ASSERT(baseGPR != dataGPR);
&gt; &gt; +    ASSERT(vectorGPR != dataGPR);
&gt; 
&gt; This is fundamental invariant in DFG. So we do not need ASSERT here.

I simply copied it from the original (non-Int52) version of the code. I removed it from both versions.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5688
&gt; &gt;          m_jit.zeroExtend32ToWord(indexGPR, t2);
&gt; &gt;          if (data.byteSize &gt; 1)
&gt; &gt;              m_jit.add64(TrustedImm32(data.byteSize - 1), t2);
&gt; &gt; -        m_jit.load32(MacroAssembler::Address(dataViewGPR, JSArrayBufferView::offsetOfLength()), t1);
&gt; &gt; +        m_jit.load64(MacroAssembler::Address(dataViewGPR, JSArrayBufferView::offsetOfLength()), t1);
&gt; &gt;          speculationCheck(OutOfBounds, JSValueRegs(), node,
&gt; &gt;              m_jit.branch64(MacroAssembler::AboveOrEqual, t2, t1));
&gt; 
&gt; I think this is not correct. Previously, we are ensuring that t1&apos;s max value
&gt; is INT32_MAX. Thus, if indexGPR is negative value, then t2 is always larger
&gt; if upper 32bit is zero-extended. So that was fine.
&gt; But now, t1 can be larger than INT32_MAX. So this speculation check is not
&gt; correct if indexGPR is negative int32.

Fixed by using a sign-extension instead of a zero-extension.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5889
&gt; &gt; -        m_jit.load32(MacroAssembler::Address(dataViewGPR, JSArrayBufferView::offsetOfLength()), t1);
&gt; &gt; +        m_jit.load64(MacroAssembler::Address(dataViewGPR, JSArrayBufferView::offsetOfLength()), t1);
&gt; &gt;          speculationCheck(OutOfBounds, JSValueRegs(), node,
&gt; &gt;              m_jit.branch64(MacroAssembler::AboveOrEqual, t2, t1));
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802768</commentid>
    <comment_count>41</comment_count>
      <attachid>440828</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-11 13:19:42 -0700</bug_when>
    <thetext>Created attachment 440828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802796</commentid>
    <comment_count>42</comment_count>
      <attachid>440828</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-11 14:18:23 -0700</bug_when>
    <thetext>Comment on attachment 440828
Patch

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

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1198
&gt; +        // All of this code is a bit messy with length and property taking turns being in scratchGPR, but I don&apos;t see any simpler solution without requiring some extra scratch registers.

I don&apos;t think this comment is necessary.

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1644
&gt; +        // All of this code is a bit messy with length and property taking turns being in scratchGPR, but I don&apos;t see any simpler solution without requiring some extra scratch registers.

I don&apos;t think this comment is necessary.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1320
&gt; +        # We have to sign-extend index here, so that the comparison with length will also catch any negative value
&gt; +        sxi2q index, index

I looked the code in LLInt and ensured that this is not necessary because this is already done by the caller of getByValTypedArray.
Can you remove this, and add comment about it in getByValTypedArray&apos;s prologue as my earlier change did (https://bugs.webkit.org/attachment.cgi?id=440817&amp;action=diff)?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1325
&gt; +        # We have to sign-extend index here, so that the comparison with length will also catch any negative value
&gt; +        sxi2q index, index

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802797</commentid>
    <comment_count>43</comment_count>
      <attachid>440832</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-11 14:19:24 -0700</bug_when>
    <thetext>Created attachment 440832
Patch

rebased, fix missing include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802803</commentid>
    <comment_count>44</comment_count>
      <attachid>440836</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-11 14:24:18 -0700</bug_when>
    <thetext>Created attachment 440836
Patch

Applying Yusuke&apos;s last comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802828</commentid>
    <comment_count>45</comment_count>
      <attachid>440836</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-11 15:12:46 -0700</bug_when>
    <thetext>Comment on attachment 440836
Patch

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

Can you check https://bugs.webkit.org/show_bug.cgi?id=229353#c37 &apos;s comment about FTL &amp; CheckInBounds?

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1147
&gt; +                fixEdge&lt;KnownCellUse&gt;(m_graph.varArgChild(node, 0));
&gt; +                fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 1));

Let&apos;s add FIXME+bugzilla URL since currently we cannot handle Int52 index while it can be useful.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:2170
&gt; +#if CPU(REGISTER64)

Let&apos;s remove this if-def switch and always compile GetTypedArrayLengthAsInt52 / GetTypedArrayByteOffsetAsInt52.
This is cleaner, and they will not appear if `!CPU(REGISTER64)`

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5671
&gt; +#if USE(REGISTER64)

We will never use JSVALUE64 for non REGISTER64.
So let&apos;s remove this if-def. We should always use `m_jit.signExtend32ToPtr(indexGPR, t2);`

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5876
&gt; +#if USE(REGISTER64)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1028
&gt; +#if CPU(REGISTER64)

Let&apos;s remove this if-def. GetTypedArrayLengthAsInt52 is here only when CPU(REGISTER64) is true.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1184
&gt; +#if CPU(REGISTER64)

Let&apos;s remove this if-def. GetTypedArrayByteOffsetAsInt52 is here only when CPU(REGISTER64) is true.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4887
&gt; +#if CPU(REGISTER64)

Let&apos;s remove this if-def. We already have code like `m_out.load64NonNegative(lowCell(m_node-&gt;child1()), m_heaps.JSArrayBufferView_length);` without this check.
FTL is currently 64bit only.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4889
&gt; +        speculate(Overflow, noValue(), nullptr, m_out.aboveOrEqual(result, m_out.constInt64(std::numeric_limits&lt;int32_t&gt;::max())));

Why does it include Equal?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4893
&gt; +#if CPU(REGISTER64)

Let&apos;s remove this if-def. GetTypedArrayByteOffsetAsInt52 is here only when CPU(REGISTER64) is true.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5087
&gt; +                speculate(Overflow, noValue(), nullptr, m_out.aboveOrEqual(length, m_out.constInt64(std::numeric_limits&lt;int32_t&gt;::max())));

Why does it include Equal?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8214
&gt; +#if CPU(REGISTER64)

Let&apos;s remove this if-def.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:15650
&gt;          LValue indexToCheck = m_out.zeroExtPtr(index);

I think this needs to be sign extension, correct?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:15793
&gt;          LValue indexToCheck = m_out.zeroExtPtr(index);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803060</commentid>
    <comment_count>46</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-12 03:43:33 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #37)
&gt; Comment on attachment 440336 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440336&amp;action=review
&gt; 
&gt; I think currently bound-check-lowering support in FTL is missing for
&gt; TypedArray. While DFG performs bound check in GetByVal etc. itself, FTL
&gt; decouples it from that node, and perform bound checking in CheckInBounds.
&gt; And currently, CheckInBounds only accepts Int32. And we exclusively use
&gt; GetArrayLength / GetVectorLength. See DFGSSALoweringPhase.cpp for more
&gt; information.
&gt; So, for larger TypedArray, I think these CheckInBounds always fail. So right
&gt; now, probably, 4GB TypedArray always OSR exits on FTL.
&gt; 
&gt; We also need to check whether the current (exiting) CheckInBounds is
&gt; correctly implemented for new 4GB TypedArray.
&gt; And if we implement Int52 version of CheckInBounds, then we also need to
&gt; ensure that the other phase (e.g. DFGIntegerRangeOptimizationPhase) works
&gt; correctly with that.

Fixed, I added CheckInBoundsInt52.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:15651
&gt; &gt;          LValue indexToCheck = m_out.zeroExtPtr(index);
&gt; &gt;          if (data.byteSize &gt; 1)
&gt; 
&gt; I looks not correct. index is zero-extended. So if it is negative integer,
&gt; it just becomes large index.

Fixed, replaced by a sign extension.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:15795
&gt; &gt; -        LValue length = m_out.zeroExtPtr(m_out.load32NonNegative(dataView, m_heaps.JSArrayBufferView_length));
&gt; &gt; +        LValue length = m_out.load64NonNegative(dataView, m_heaps.JSArrayBufferView_length);
&gt; &gt;          LValue indexToCheck = m_out.zeroExtPtr(index);
&gt; &gt;          if (data.byteSize &gt; 1)
&gt; &gt;              indexToCheck = m_out.add(indexToCheck, m_out.constInt64(data.byteSize - 1));
&gt; 
&gt; Ditto. These code is not correct.

Fixed, replaced by a sign extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803062</commentid>
    <comment_count>47</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-12 03:53:58 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1147
&gt; &gt; +                fixEdge&lt;KnownCellUse&gt;(m_graph.varArgChild(node, 0));
&gt; &gt; +                fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 1));
&gt; 
&gt; Let&apos;s add FIXME+bugzilla URL since currently we cannot handle Int52 index
&gt; while it can be useful.

I have a pretty long TODO-list of such things to improve in this patch, I&apos;ll file the bugzilla as soon as I get this patch across the finish line.

&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:2170
&gt; &gt; +#if CPU(REGISTER64)
&gt; 
&gt; Let&apos;s remove this if-def switch and always compile
&gt; GetTypedArrayLengthAsInt52 / GetTypedArrayByteOffsetAsInt52.
&gt; This is cleaner, and they will not appear if `!CPU(REGISTER64)`

Done.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5671
&gt; &gt; +#if USE(REGISTER64)
&gt; 
&gt; We will never use JSVALUE64 for non REGISTER64.
&gt; So let&apos;s remove this if-def. We should always use
&gt; `m_jit.signExtend32ToPtr(indexGPR, t2);`

Done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1028
&gt; &gt; +#if CPU(REGISTER64)
&gt; 
&gt; Let&apos;s remove this if-def. GetTypedArrayLengthAsInt52 is here only when
&gt; CPU(REGISTER64) is true.

Done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1184
&gt; &gt; +#if CPU(REGISTER64)
&gt; 
&gt; Let&apos;s remove this if-def. GetTypedArrayByteOffsetAsInt52 is here only when
&gt; CPU(REGISTER64) is true.

Done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4887
&gt; &gt; +#if CPU(REGISTER64)
&gt; 
&gt; Let&apos;s remove this if-def. We already have code like
&gt; `m_out.load64NonNegative(lowCell(m_node-&gt;child1()),
&gt; m_heaps.JSArrayBufferView_length);` without this check.
&gt; FTL is currently 64bit only.

Done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4889
&gt; &gt; +        speculate(Overflow, noValue(), nullptr, m_out.aboveOrEqual(result, m_out.constInt64(std::numeric_limits&lt;int32_t&gt;::max())));
&gt; 
&gt; Why does it include Equal?

I don&apos;t remember why I made that choice. Removing it.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4893
&gt; &gt; +#if CPU(REGISTER64)
&gt; 
&gt; Let&apos;s remove this if-def. GetTypedArrayByteOffsetAsInt52 is here only when
&gt; CPU(REGISTER64) is true.

Done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5087
&gt; &gt; +                speculate(Overflow, noValue(), nullptr, m_out.aboveOrEqual(length, m_out.constInt64(std::numeric_limits&lt;int32_t&gt;::max())));
&gt; 
&gt; Why does it include Equal?

Removed.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8214
&gt; &gt; +#if CPU(REGISTER64)
&gt; 
&gt; Let&apos;s remove this if-def.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803064</commentid>
    <comment_count>48</comment_count>
      <attachid>440916</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-12 03:58:49 -0700</bug_when>
    <thetext>Created attachment 440916
Patch

Applied the last of Yusuke&apos;s comments, but there are still some frustrating LayoutTests failures for me to finish debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803286</commentid>
    <comment_count>49</comment_count>
      <attachid>440966</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-12 12:03:39 -0700</bug_when>
    <thetext>Created attachment 440966
Patch

rebased, still has the LayoutTests failures and too few tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803322</commentid>
    <comment_count>50</comment_count>
      <attachid>440966</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-12 12:51:12 -0700</bug_when>
    <thetext>Comment on attachment 440966
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1266
&gt; +                Checked&lt;uint32_t, RecordOverflow&gt; dataLength = data-&gt;data().length();

CheckedUint32

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1319
&gt; +                Checked&lt;uint32_t, RecordOverflow&gt; byteLength = arrayBuffer-&gt;byteLength();

CheckedUint32</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803478</commentid>
    <comment_count>51</comment_count>
      <attachid>440966</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-12 15:30:02 -0700</bug_when>
    <thetext>Comment on attachment 440966
Patch

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

r=me. When landing, please ensure the following things too.

1. Land tests that exercise new paths. The test we discussed on slack should be included.
2. Make sure all JSC tests are passed. Currently, some tests are failing.

&gt; Source/JavaScriptCore/dfg/DFGIntegerRangeOptimizationPhase.cpp:1312
&gt; +                case CheckInBoundsInt52: {

We should not enable range optimization for Int52 since currently range optimization is based on Int32.

&gt; Source/JavaScriptCore/dfg/DFGIntegerRangeOptimizationPhase.cpp:1387
&gt; +        case CheckInBoundsInt52: {

We should not enable range optimization for Int52 since currently range optimization is based on Int32.

&gt; Source/JavaScriptCore/dfg/DFGIntegerRangeOptimizationPhase.cpp:1504
&gt; +        case GetTypedArrayLengthAsInt52:

We should not enable range optimization for Int52 since currently range optimization is based on Int32.

&gt; Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp:107
&gt; +                    Node* length = m_insertionSet.insertNode(
&gt; +                        m_nodeIndex, SpecInt52Any, GetTypedArrayLengthAsInt52, m_node-&gt;origin,
&gt; +                        OpInfo(m_node-&gt;arrayMode().asWord()), base, storage);
&gt; +                    m_graph.varArgChild(m_node, 4) = Edge(length, Int52RepUse);

Just changing this is not correct. It is modifying PutByVal&apos;s 5th child. So all the code using PutByVal / PutByValDirect needs to be revisited and ensured that length can be Int52.
I&apos;ve checked briefly and FTLLowerDFGToB3 is not handling this change. Please review all code using PutByVal / PutByValDirect to ensure that this change is correctly accepted.

   6012                     m_out.branch(
   6013                         m_out.aboveOrEqual(index, lowInt32(child5)),
   6014                         unsure(isOutOfBounds), unsure(isInBounds));

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5149
&gt; +        speculate(
&gt; +            OutOfBounds, noValue(), nullptr,
&gt; +            m_out.aboveOrEqual(lowStrictInt52(m_node-&gt;child1()), lowStrictInt52(m_node-&gt;child2())));

I think using lowStrictInt52 for child1 is not correct because I don&apos;t see any conversion from Int32 to Int52. (And I think it should be Int32 right now since we do not have GetByVal etc. with Int52 index).
I think it is Int32. And if it is Int32, please remember that we need to have sign-extension after lowInt32 to extend it to 64bit.
And can you add a test to exercise this path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803912</commentid>
    <comment_count>52</comment_count>
      <attachid>441120</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-13 12:27:27 -0700</bug_when>
    <thetext>Created attachment 441120
Patch

Fixed both the LayoutTests and the failed jsc-tests.
Applied the last of Yusuke&apos;s comments, and fixed the style nits.

Still missing:
- Extra tests requested by Yusuke
- Updating the Changelogs
I am uploading this patch so that EWS can double-check that I fixed every outstanding bug while I take care of these two last things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803913</commentid>
    <comment_count>53</comment_count>
      <attachid>441120</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-13 12:29:49 -0700</bug_when>
    <thetext>Comment on attachment 441120
Patch

Changes to SerializedScriptValue look good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804039</commentid>
    <comment_count>54</comment_count>
      <attachid>441154</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-13 16:03:28 -0700</bug_when>
    <thetext>Created attachment 441154
Patch

Fix various issues found at the last minute by EWS.
Also updated the Changelogs, and added a test requested by Yusuke. I believe the other tests he asked for are already covered by the two tests I added earlier.

I&apos;m going to wait for EWS before sending this to the commit queue, but hopefully the patch is now ready-to-land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804040</commentid>
    <comment_count>55</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-13 16:04:18 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #53)
&gt; Comment on attachment 441120 [details]
&gt; Patch
&gt; 
&gt; Changes to SerializedScriptValue look good to me.

Many thanks for your help in debugging that part!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804054</commentid>
    <comment_count>56</comment_count>
      <attachid>441157</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-13 16:27:59 -0700</bug_when>
    <thetext>Created attachment 441157
Patch

Fix watch build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804106</commentid>
    <comment_count>57</comment_count>
      <attachid>441168</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-13 17:54:38 -0700</bug_when>
    <thetext>Created attachment 441168
Patch

Attempt to fix build on 32-bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804487</commentid>
    <comment_count>58</comment_count>
      <attachid>441275</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-14 13:58:54 -0700</bug_when>
    <thetext>Created attachment 441275
Patch

Fixes a couple LayoutTests failures which I recently introduced, fix a build issue on watch, and tries to fix 32-bit builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804582</commentid>
    <comment_count>59</comment_count>
      <attachid>441303</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-14 16:28:52 -0700</bug_when>
    <thetext>Created attachment 441303
Patch

The last patch did not seem to have any test failure, but it still had build issues on 32-bit and on watch.
In this patch, I used the more semantically correct size_t instead of UCPURegister, and ADDRESS64 instead of REGISTER64, I believe it should fix the problem at least on the watch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804619</commentid>
    <comment_count>60</comment_count>
      <attachid>441310</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-14 17:19:27 -0700</bug_when>
    <thetext>Created attachment 441310
Patch

Fix the issue with builds on watch, and moves from using CPU(ADDRESS64) to a a proper USE(LARGE_TYPED_ARRAYS) relying on the size of size_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804622</commentid>
    <comment_count>61</comment_count>
      <attachid>441311</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-14 17:27:09 -0700</bug_when>
    <thetext>Created attachment 441311
Patch

Fix yet another build issue on watch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804630</commentid>
    <comment_count>62</comment_count>
      <attachid>441315</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-14 17:45:58 -0700</bug_when>
    <thetext>Created attachment 441315
Patch

Fix yet another build issue on watch (caused by a remaining UCPURegister this time).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804638</commentid>
    <comment_count>63</comment_count>
      <attachid>441315</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-14 18:39:46 -0700</bug_when>
    <thetext>Comment on attachment 441315
Patch

It finally compiled fine on watch, sending it to the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804667</commentid>
    <comment_count>64</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-14 20:06:06 -0700</bug_when>
    <thetext>Committed r284230 (243039@main): &lt;https://commits.webkit.org/243039@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441315.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804728</commentid>
    <comment_count>65</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-15 00:54:16 -0700</bug_when>
    <thetext>This was reverted by https://bugs.webkit.org/show_bug.cgi?id=231797</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804729</commentid>
    <comment_count>66</comment_count>
      <attachid>441344</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-15 01:06:58 -0700</bug_when>
    <thetext>Created attachment 441344
Patch

Another try, fixing the issue described in https://bugs.webkit.org/show_bug.cgi?id=231795.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804872</commentid>
    <comment_count>67</comment_count>
      <attachid>441392</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-15 10:03:45 -0700</bug_when>
    <thetext>Created attachment 441392
Patch

Same as the last one, let&apos;s hope that EWS does not crash this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804877</commentid>
    <comment_count>68</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-15 10:13:40 -0700</bug_when>
    <thetext>Reopened, I forgot to do it when I reverted this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805009</commentid>
    <comment_count>69</comment_count>
      <attachid>441392</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-15 14:19:17 -0700</bug_when>
    <thetext>Comment on attachment 441392
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4894
&gt; +#pragma clang diagnostic push
&gt; +#pragma clang diagnostic ignored &quot;-Wmissing-noreturn&quot;

These trigger -Wunknown-pragmas from GCC so can&apos;t do it unless you&apos;re sure you&apos;re building with clang. Use IGNORE_CLANG_WARNINGS_BEGIN/END instead it will take care of this for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805035</commentid>
    <comment_count>70</comment_count>
      <attachid>441431</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-15 14:51:21 -0700</bug_when>
    <thetext>Created attachment 441431
Patch

Patch with a slight tweak in setLargeTypedArray in LowLevelInterpreter64.asm, in the hopes of fixing the GTK/WPE EWS build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805047</commentid>
    <comment_count>71</comment_count>
      <attachid>441435</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-15 15:09:01 -0700</bug_when>
    <thetext>Created attachment 441435
Patch

Replacing &quot;#pragma clang diagnostics ...&quot; by &quot;IGNORE_CLANG_WARNINGS...&quot; as suggested by Michael Catanzaro to avoid causing issues on GCC builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805119</commentid>
    <comment_count>72</comment_count>
      <attachid>441453</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-15 16:30:42 -0700</bug_when>
    <thetext>Created attachment 441453
Patch

Now with uint64_t instead of unsigned long long in SerializedScriptValue.cpp to fix some build issues for the GTK EWS bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805121</commentid>
    <comment_count>73</comment_count>
      <attachid>441454</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-15 16:32:00 -0700</bug_when>
    <thetext>Created attachment 441454
patch

Now with uint64_t instead of unsigned long long in SerializedScriptValue.cpp to fix some build issues of the GTK EWS bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805302</commentid>
    <comment_count>74</comment_count>
      <attachid>441504</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-16 13:40:37 -0700</bug_when>
    <thetext>Created attachment 441504
Patch for landing

The only difference from the last patch I sent through EWS is fixing a missing initialization of a scratch register in the DFG (which was caught by the bots as a flakey/crashing test).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805303</commentid>
    <comment_count>75</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-16 13:41:54 -0700</bug_when>
    <thetext>ChangeLog entry in LayoutTests/ChangeLog is not at the top of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805341</commentid>
    <comment_count>76</comment_count>
      <attachid>441513</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-16 19:25:40 -0700</bug_when>
    <thetext>Created attachment 441513
patch for landing

Fix changelogs which had been badly merged when I rebased the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805348</commentid>
    <comment_count>77</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-16 21:00:25 -0700</bug_when>
    <thetext>Committed r284330 (243125@main): &lt;https://commits.webkit.org/243125@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441513.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438994</attachid>
            <date>2021-09-22 17:22:59 -0700</date>
            <delta_ts>2021-09-24 16:48:44 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>103924</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKaW5kZXggNDNmNzg0YTRhYjkzLi5lYzMyYjcyMjFjODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0yOTgsOSArMjk4LDkgQEAgcHVibGljOgogICAgIC8vIGluIGEgY2xhc3Mg
cmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZmZXJlbnRpYXRl
CiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3NlcyB0byBtZW1v
cnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGljIFRydXN0ZWRJ
bW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVz
dGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRy
KGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZElt
bVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAg
ICAgICAgewogICAgICAgICB9CkBAIC0zMTEsMjEgKzMxMSwyMSBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpudWxs
cHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHN0ZDo6bnVs
bHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVk
SW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgaW50cHRy
X3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRwdHIoKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV92
YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAgICAgIGNvbnN0
ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzM1LDEyICszMzUsMTIgQEAgcHVi
bGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0cgogICAgIHsK
LSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBs
aWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBU
cnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUcnVz
dGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNv
bnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9
CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTM1OCw3ICszNTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzY5LDE3ICszNjksMTcgQEAg
cHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7Ci0g
ICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIo
dmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBl
eHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIo
cHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdCBUcnVzdGVk
SW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
Y29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJl
dHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIHB1Ymxp
YzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZyb20gYWNjaWRl
bnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMuCiAgICAgc3Ry
dWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tNjQoKSB7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAgICAKLSAgICAg
ICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDogbV92
YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQo
VHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1t
NjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRy
KCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDA5LDE3ICs0MDksMTcgQEAgcHVibGljOgog
CiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7Ci0gICAgICAg
IGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQodmFsdWUp
CiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwg
Q1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQor
ICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAg
ICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlm
Ci0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBjb25zdCB7IHJl
dHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1Ry
dXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAgICAKICAgICAv
LyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMKQEAgLTEwODYs
OSArMTA4Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAgIHN0YXRpYyBi
b29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQgY2xhc3MgRGF0
YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCmluZGV4IGQ3ZmUzYTgxZTM0MS4uZThkZWM4NjM0MTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMjc1LDcg
KzEyNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB2YWx1ZSA+IDB4ZmY7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgc2hvdWxkQmxpbmRQb2ludGVyRm9yU3BlY2lmaWNBcmNoKHVpbnRwdHJf
dCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZFBvaW50ZXJGb3JTcGVjaWZp
Y0FyY2godWludHB0cl90IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHNpemVvZih2b2lkKikg
PT0gNCkKICAgICAgICAgICAgIHJldHVybiBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaChzdGF0
aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKTsKQEAgLTE0NjAsNiArMTQ2MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBhbmQ2NChpbW0uYXNUcnVzdGVkSW1tMzIoKSwg
ZGVzdCk7CiAgICAgfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogI2lmICFDUFUoWDg2
KSAmJiAhQ1BVKFg4Nl82NCkgJiYgIUNQVShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNDI1MDkwM2Jj
MzIyLi5iMzdmNGQyOGJkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0
LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQog
ICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4
MmQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3Ro
MzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVu
Z3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAgICAg
ICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9hZDY0
KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVBdXRo
ID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlk
R1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRh
dGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0
MDE3Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRlclJl
Z2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3Rl
cklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgCi0gICAg
c3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wg
c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
ID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3Qg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBj
b25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBv
cGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggNjMzNTY1MmZjNTQ0Li45NmQ2M2Qw
MjYxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTEwODcsNiArMTA4NywyNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAg
fQogCisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgbGVmdCwgSW1tNjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmln
aHQpKSB7CisgICAgICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkp
IHsKKyAgICAgICAgICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25C
bGluZENvbnN0YW50KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZv
ckJsaW5kaW5nKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24n
dCBoYXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAor
ICAgICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAg
ICB1aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChu
b3BDb3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgp
KTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIuY21wcV9tcihyaWdodC5vZmZzZXQsIHJpZ2h0LmJhc2UsIGxlZnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDA4MjRlNmViOTVkMi4u
Y2FiMzM1ODAyMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCkBAIC0xMTk1LDggKzExOTUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZVdpdGhHdWFyZCgKICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAg
IGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
c2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKHR5cGUpKSkpOwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0
aCBpcyBhIHNpemVfdCwgc28gZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBw
bGF0Zm9ybS4KKyAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBl
cnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbHNlCiAgICAg
ICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHN0YXRlLmZh
aWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCAwNGMxM2I5OWIwMWYuLjQ5YzQwYzhiYTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApA
QCAtMzQ4Niw2ICszNDg2LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1v
ZGUoKSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAg
ICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAg
YnJlYWs7CkBAIC0zODIxLDYgKzM4MzIsMTkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdl
dEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKKyAgICAgICAg
aWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZz
ZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0
ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpi
eXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkp
ICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmlu
ZGV4IDZlMjc1MzEwNGJkMy4uZTlkMDU2NzdmZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAg
LTMyNSw2ICszMjUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2Fw
ZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisg
ICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBzaG91
bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVh
ZDogewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJp
dFZlY3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFk
VGltZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQobm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCAwMzllNzY5ZGNlNzcuLjYyOTQzZTc2NDRkZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MjEsMjEgKzM4
MjEsMjMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJh
eVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBs
ZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShh
cnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9k
ZSogbGVuZ3RoTm9kZTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChH
ZXRBcnJheUxlbmd0aEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6
UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hv
dWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3
aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9H
cmFwaChFeGl0T0spOwogCi0KICAgICAgICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBz
ZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlw
ZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBv
dmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNO
dW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0
TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVz
ZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxl
bmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0Nv
bnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTM4NTIsNyArMzg1NCwxMCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAg
ICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5n
dGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0
aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQor
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZv
KEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJy
YXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQp
LmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjhi
NmI5MzEzY2U5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
QEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNl
IEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAg
ICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKQEAgLTEzMzMs
NiArMTMzNCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxk
cywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTE0NDQsNiArMTQ0NiwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB9CiAg
ICAgfQogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlN
b2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9k
ZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihBcnJheUxlbmd0aExvYywgTWlzY0ZpZWxkcywgbm9kZS0+
Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpOwogICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDcwYTQ4NTQ3YTk3Li42MDlmZjA4NTc3
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE5NywxMCAr
MTk3LDEyIEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldEdldHRlcjoKICAgICBjYXNlIEdldFNldHRlcjoKICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVu
Z3RoOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2lu
dEF0OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBj
YXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGUxYjkzZWVlNmNhLi5iNTJmZTlk
ZGE2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApA
QCAtMTcxNywxMiArMTcxNywxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2Rl
KTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RH
ZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEFueUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0yMTQ5LDcgKzIxNTMsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dDogeworICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICAgICAg
QXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZShtX2dyYXBoLCBu
b2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpLCBBcnJheU1vZGU6OnVudXNlZEluZGV4
U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKGFycmF5TW9kZS5pc1NvbWVUeXBl
ZEFycmF5VmlldygpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUp
OworICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgRWRnZSgp
LCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKKworICAgICAgICAgICAgZml4
RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKICAgICAgICAgICAgIGZp
eEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtNDA5NiwxNCArNDExMSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAg
ICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNo
aWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9
IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVk
c1N0b3JhZ2UpOwotICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwg
b3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hp
bGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29u
dmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4u
MmQ4NmViNzU3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dl
bmVyYXRpb25JbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0
aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2Yg
bGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9y
bWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5k
IGlmIHNvIHdoaWNoLAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhl
IFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFp
bHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBi
b3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJv
eCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFp
biwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1h
bnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25v
dyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2Np
YXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MS4uNDNiNWQxMDEy
ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTQ5OSw2ICsxNDk5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNl
IEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICAgICAgc2V0UmVsYXRpb25zaGlwKFJlbGF0aW9u
c2hpcChub2RlLCBtX3plcm8sIFJlbGF0aW9uc2hpcDo6R3JlYXRlclRoYW4sIC0xKSk7CiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3
MDY4YTljLi44MWRjNDkwMTUxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0xOTY1LDYgKzE5NjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAg
ICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAg
ICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgog
CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7
CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4u
NzI2NGRjMmY1NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0yNjEsOCArMjYxLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhNdWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVs
dGlEZWxldGVCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlz
IG9ubHkgcmVsZXZhbnQgZm9yIFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVz
IHRoYXQgY2FuIGhhdmUgYSBsZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8g
XAorICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAg
ICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggODllNWVmNGQ4NTFlLi4wNmNm
ZjM2MDBiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODYsNiArOTg2LDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uNWJkMzc3ZGFmODk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzczLDYgKzM3
Myw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
KyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDoKICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYg
KzM4Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNo
ZWQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAg
ICAgIAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI0NmMxNmM0ODhlOS4uOWIzMzFmYTEx
YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcApAQCAtMzIzOSwxNiArMzIzOSwyOCBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2
ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiBub2RlLCBHUFJSZQogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZp
ZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDAp
KS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAg
dWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBsZW5ndGgg
PSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgo
KS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJD
b25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYg
KGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8
IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6
SW1tNjQobGVuZ3RoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9B
c3NlbWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQorCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UK
ICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9k
ZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKQEAgLTc5NTQsNyArNzk2Niw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJl
ZywgR1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZd
KCkgewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0
LnVudGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRl
QXV0aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAg
ICAgVU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODMzNiwxMiArODM0OCwxOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1Zh
bHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92
ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVz
dWx0R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTc5LDkgKzEx
MTk3LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQu
c3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vs
c2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBUcnVzdGVkSW1t
MzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAtMTQxNTQsOCAr
MTQxNzgsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9k
ZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAg
IGNhc2UgSW50MzJVc2U6Ci0gICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUobm9k
ZSk7CisgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKICAg
ICAgICAgYnJlYWs7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIEFueUludFVzZToKKyAg
ICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBi
cmVhazsKKyNlbmRpZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5Li40NGQ0
MzQ0MjQ1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTEzMDIsNyArMTMwMiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTmV3
U3ltYm9sKE5vZGUqKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSopOwotICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBp
bGVJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
KTsKICAgICB2b2lkIGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpS
ZWxhdGlvbmFsQ29uZGl0aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzYs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAg
ICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAK
ICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzNSw2ICsxNDQxLDkgQEAgcHVibGljOgogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3Vu
ZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7
CiAgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIGluZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldChOb2RlKik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29w
ZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBw
cmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUq
LCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJl
Z3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBA
IC0yNDI3LDcgKzI0MzYsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsK
IH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hp
ZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50
NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3Mg
U3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKQEAgLTI0NzUsNyArMjQ4NCw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJ
bnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXls
b2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVk
KS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0
aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBT
cGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNTFmZTJmNGJiZTBmLi4xYzMzNGU2YmJmNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcApAQCAtMzUzNCw2ICszNTM0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBX
ZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBw
bGF0Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVC
eUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MTYsNiArMzYyMSwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBH
ZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKaW5kZXggZGI2YzZiMjc5ODVmLi40M2E1MDk2MjU4YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAt
MjY5Myw2ICsyNjkzLDg0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChO
b2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShO
b2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5n
cmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIGF1dG8g
dHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOworICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOworCisgICAgLy8gRklYTUU6
IGNvbXBsZXRlIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbgorfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgUkVM
RUFTRV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Cisg
ICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgxdWxsIDw8IDUyKSwgInRoZXJlIGlzIGEgcmlz
ayB0aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJyYXkgd29uJ3QgZml0IGluIGFuIEludDUyIik7
CisgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKiBu
b2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3IodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IGRh
dGEodGhpcyk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVn
IHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKKyAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3By
KCk7CisgICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKKyAgICBBU1NFUlQoYmFzZUdQ
UiAhPSBkYXRhR1BSKTsKKyAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRhdGFHUFIpOworCisgICAg
R1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1w
IGVtcHR5Qnl0ZU9mZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihX
YXN0ZWZ1bFR5cGVkQXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2
ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJy
YW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0Fy
cmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQo
KSksIGRhdGFHUFIpOworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpK
U1ZhbHVlLCBkYXRhR1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2
ZWN0b3JHUFIpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhk
YXRhR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BS
KTsKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRP
ZkRhdGEoKSksIGRhdGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJy
YXlQdHJUYWcoZGF0YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2
ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
KworI2lmIENQVShBUk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYK
KyAgICBlbXB0eUJ5dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihudWxscHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOwor
I2lmICFDUFUoQVJNNjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0
b3JQdHIoKSk7CisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0
cmljdEludDUyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7
CkBAIC00Mzc0LDYgKzQ0NTIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNvbXBpbGVH
ZXRBcnJheUxlbmd0aEFzSW50NTIobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBE
ZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTQ0OTIsNiArNDU3NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
R2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uNmIzZTI1M2Vm
OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSw2ICsyNzksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICAgICAgICAg
ICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0zNTksNiArMzYwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4u
Yzk5MGQ1OWNiYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgog
ICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBj
YXNlIFN0b3JlQmFycmllcjoKQEAgLTM5MSw2ICszOTIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50
QXJndW1lbnRzOgogICAgIGNhc2UgQ1BVSW50cmluc2ljOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JM
ZW5ndGg6CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNjc3
YWNhNDRiZDdlLi5jZmRjMDlmNmVjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMjQsNiArMTAyNCw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5n
dGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgICAg
IGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTA1MSw2
ICs1MDU0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBp
bGVHZXRBcnJheUxlbmd0aEFzSW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgc2V0
SW50NTIobV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIHZvaWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPdXRwdXQuaAppbmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgog
ICAgIExWYWx1ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJu
IGxvYWRJbnN0cnVjdGlvbjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBv
aW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxv
YWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7
IHJldHVybiBsb2FkMzIoYmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0
aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2Fk
NjQoYmFzZSwgZmllbGQpOyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwog
ICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFlLi4yZGNjOGE0
ZWExODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlC
dWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0
b3IuZ2V0KCkuY29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFy
ZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVyQ29u
dGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemUs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0
YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAg
ICAgLCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29u
dGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQog
ICAgIG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNvbnRl
bnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRh
KGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKIHsK
QEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQog
ICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRy
eUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6
dHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3QgYWxsb3cgMzEt
Yml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVtZW50cykgewot
ICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6
ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6
ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAgIHJl
c2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVja2VkPHNpemVf
dCwgUmVjb3JkT3ZlcmZsb3c+IHNpemVJbkJ5dGVzID0gbnVtRWxlbWVudHM7CisgICAgc2l6ZUlu
Qnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXplSW5CeXRlcy5oYXNPdmVyZmxv
d2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgewor
ICAgICAgcmVzZXQoKTsKKyAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2l6ZV90IHNpemVJbkJ5
dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gc2l6ZUlu
Qnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlcy52YWx1ZSgp
OwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRpb25TaXplID0gMTsg
Ly8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRoaW5nLCBidXQgbm90
IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZlciBpcyBkZXRhY2hl
ZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRhLCBzaXpl
SW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMudmFsdWUo
KSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQogICAgIGlmIChwb2xp
Y3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRhLCAwLCBhbGxvY2F0aW9u
U2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7CisgICAgbV9zaXplSW5C
eXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zaXplSW5C
eXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1Y3RvciA9IEFycmF5
QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAgLTE3OCw3ICsxNzYs
NyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJheUJ1ZmZlckNvbnRl
bnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJbkJ5dGVzIDw9IE1B
WF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQor
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRl
KG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMTkx
LDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1
ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUob3RoZXIuZGF0YSgp
LCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90
IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUoc291cmNlLCBieXRl
TGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBAQCBSZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRz
KQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4gdGhhdCBjYXNlLCB0
aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9tIHRoZSBjYWdlLgot
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBk
YXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6OmNvbnRhaW5zKGRh
dGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJvbUJ5dGVzKGRhdGEs
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSk7
CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
QWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QKIC8vICAgbG9uZ2Vy
IGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5cGVkIGFycmF5IHR5
cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBkaWZmZXJlbnRseS4K
IC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20gdGhlIGNhZ2UuCi1S
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCog
ZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24m
JiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5
dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEgJiYgIUdpZ2FjYWdl
Ojppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAgICBHaWdhY2FnZTo6
ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcgQEAgUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVu
c2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29udGVudHMpKTsKIH0K
IAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVu
dEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6ZSk7CiB9CkBAIC0y
MzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90aGVyLmRhdGEoKSwg
b3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVu
dHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlCdWZmZXJD
b250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RGTW92ZShjb250ZW50
cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAK
LVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBhdXRvIGJ1
ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwog
ICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVJlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMm
JiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQog
ewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1dG8gYnVmZmVyID0g
YWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkpOwotICAgIG1lbWNw
eShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBpZiAoYnl0ZUxlbmd0
aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0
YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4gYnVmZmVyOwogfQog
Ci1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7
CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxv
Y2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwpAQCAtMjkxLDcgKzI5
MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29u
dGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4
LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xh
bXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCkKIHsKICAgICBBU1NF
UlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAxLDkgKzMwMSw5IEBA
IHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0
LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZm
ZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90IEFycmF5QnVmZmVyOjpj
bGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBjdXJyZW50TGVu
Z3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0
aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0aCAr
IGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsK
QEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGlj
ZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENsYW1wZWRJbmRleChj
bGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1bnNp
Z25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdp
dGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25zdAogewotICAgIHVu
c2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgc2l6ZV90
IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAgYXV0byByZXN1bHQg
PSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
ICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJlc3VsdC0+c2V0U2hh
cmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLmMyYjQ0YzI0MmJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksMTQg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBDUFUoQUREUkVTUzY0KQorI2RlZmluZSBNQVhf
QVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxzZQorLy8gQmVjYXVzZSB3ZSBhcmUg
dXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVy
cywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBOb3RlIHRo
YXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1aXRlIG1lc3N5IG9u
IDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1bGF0ZSBpdC4KKy8v
IFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9yeSBiZSBwb3Nz
aWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVzLgogI2RlZmlu
ZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBjbGFzcyBWTTsK
IGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNTgsNyBAQCB1c2luZyBQYWNrZWRBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9p
ZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKLSAgICBT
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHModm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYpOwogICAgIH5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKCk7CiAgICAgCiAgICAgdm9pZCog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwobV9zaXplSW5CeXRlcyk7
IH0KQEAgLTYwLDE0ICs2NywxNCBAQCBwcml2YXRlOgogICAgIHVzaW5nIERhdGFUeXBlID0gQ2Fn
ZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIERhdGFU
eXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rl
c3RydWN0b3I7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXpl
SW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMpOwogcHVibGljOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJh
eUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJy
YXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMmIG9wZXJhdG9yPShBcnJheUJ1ZmZlckNvbnRlbnRz
JiYpOwpAQCAtNzksNyArODYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUluQnl0ZXMoKSk7IH0KLSAgICB1bnNpZ25l
ZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KKyAgICBzaXpl
X3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CiAgICAgCiAg
ICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9CiAgICAgCkBAIC05
NCw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICBEb250SW5pdGlhbGl6ZQogICAgIH07CiAK
LSAgICB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICB2b2lkIHRyeUFsbG9jYXRl
KHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXph
dGlvblBvbGljeSk7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCB0cmFu
c2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsKQEAgLTEwNSwyOCArMTEyLDI4IEBAIHByaXZh
dGU6CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICBQYWNrZWRSZWZQdHI8U2hhcmVkQXJyYXlCdWZm
ZXJDb250ZW50cz4gbV9zaGFyZWQ7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBz
aXplX3QgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdD
SW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQg
Ynl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZl
ckNvbnRlbnRzJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJv
bUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVy
RGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3Ro
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVG
cm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVy
RGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwg
dW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVM
ZW5ndGgpOwogCiAgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
LgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplKTsKIAogICAgIGlubGluZSB2b2lkKiBkYXRhKCk7CiAgICAgaW5saW5l
IGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZUxlbmd0
aCgpIGNvbnN0OworICAgIGlubGluZSBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogICAgIAog
ICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgc2V0U2hhcmluZ01vZGUoQXJyYXlCdWZm
ZXJTaGFyaW5nTW9kZSk7CkBAIC0xMzcsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJs
ZSBlbmQpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8
QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWdu
ZWQgZW5kKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+
IHNsaWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpIGNvbnN0Owog
ICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7CkBA
IC0xNjEsMTIgKzE2OCwxMiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9y
KCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNp
Z25lZCk7Ci0gICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVu
dHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZv
aWQqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShz
aXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVm
ZmVyQ29udGVudHMmJik7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGlu
ZGV4KSBjb25zdDsKLSAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91Ymxl
IHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsKKyAgICBpbmxpbmUgc2l6ZV90IGNs
YW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKKyAgICBzdGF0aWMgaW5saW5lIHNpemVfdCBj
bGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KTsKIAogICAgIHZv
aWQgbm90aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTE5Miw3ICsxOTksNyBAQCBjb25zdCB2b2lk
KiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMuZGF0YSgp
OwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitzaXplX3Qg
QXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRlbnRz
LnNpemVJbkJ5dGVzKCk7CiB9CkBAIC0yMDUsNyArMjEyLDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6
aXNTaGFyZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVmZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0
ZXMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIHNjYWxlIHRo
aXMgYnkgdGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29tZXRoaW5nLgotICAgIHJldHVybiBzaXpl
b2YoQXJyYXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlTGVuZ3RoKCkpOworICAg
IHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0ZUxlbmd0aCgpOwogfQogCiB2b2lkIEFy
cmF5QnVmZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNzY4ZmVhOTA5YmFiLi40NzM3MjI3NDUzNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NSwxOCArMjUsMTcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5QnVm
ZmVyVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAogQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoCi0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZz
ZXQpCiAgICAgICAgICwgbV9pc0RldGFjaGFibGUodHJ1ZSkKICAgICAgICAgLCBtX2J5dGVMZW5n
dGgoYnl0ZUxlbmd0aCkKICAgICAgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0g
ICAgQ2hlY2tlZDx1bnNpZ25lZCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7
CisgICAgQ2hlY2tlZDxzaXplX3QsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQp
OwogICAgIGxlbmd0aCArPSBieXRlTGVuZ3RoOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04obGVuZ3RoIDw9IG1fYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IGlmIChtX2J1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJWaWV3LmgKaW5kZXggN2UzOTYwNzc3OGE5Li42YzQ3OGIxZWIzMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CkBAIC03NywxNCArNzgsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIGJhc2VBZGRyZXNzKCk7IH0KIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25z
dAorICAgIHNpemVfdCBieXRlT2Zmc2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0Rl
dGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnl0ZU9m
ZnNldDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlTGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2J5dGVMZW5ndGg7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGV0YWNoYWJs
ZShib29sKTsKICAgICBib29sIGlzRGV0YWNoYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXRh
Y2hhYmxlOyB9CkBAIC05MiwxOSArOTMsMTggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOwogCiAgICAgLy8gSGVscGVyIHRvIHZlcmlm
eSBieXRlIG9mZnNldCBpcyBzaXplIGFsaWduZWQuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0
ZU9mZnNldEFsaWdubWVudCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3Qgc2l6ZSkKKyAgICBz
dGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHNpemVfdCBieXRlT2Zmc2V0LCBz
aXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYg
KHNpemUgLSAxKSk7CisgICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoZWxlbWVudFNpemUg
LSAxKSk7CiAgICAgfQogCi0gICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3Vi
LXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCi0gICAgLy8gd2l0aGluIHJhbmdlLgotICAgIHN0
YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCBzaXplX3Qgc2l6ZSkK
KyAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJy
YXlCdWZmZXIgaXMgd2l0aGluIHJhbmdlLgorICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdl
TGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXpl
X3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBzaXplX3QgYnl0
ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRlT2Zmc2V0ID4g
Ynl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQg
cmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6ZTsKKyAg
ICAgICAgc2l6ZV90IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0
KSAvIGVsZW1lbnRTaXplOwogICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVt
ZW50cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMTMsNDMgKzExMyw0OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmll
dyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJv
dGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJy
YXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUg
Ym9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAg
IGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3Kiwgc2l6ZV90IGJ5dGVPZmZzZXQp
OwogCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJvb2wg
Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKKyAg
ICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRh
Qnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgemVyb1Jh
bmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQot
ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgICAg
IGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLAotICAgICAgICB1bnNpZ25l
ZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJ
bXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKIAogICAgIC8v
IElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3Mg
dmlldzsKICAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRo
ZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
ICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cygKICAgICAgICAgY29uc3Qg
QXJyYXlCdWZmZXImIGJ1ZmZlciwKLSAgICAgICAgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAot
ICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMp
CisgICAgICAgIHNpemVfdCBhcnJheUJ5dGVPZmZzZXQsCisgICAgICAgIHNpemVfdCAqb2Zmc2V0
LAorICAgICAgICBzaXplX3QgKm51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQg
bWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAg
ICAgICAgc2l6ZV90IG1heE9mZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgaWYgKCpvZmZzZXQg
PiBtYXhPZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgp
OwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNp
emVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCks
ICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIu
Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIENoZWNrZWQ8c2l6
ZV90PiBhZGp1c3RlZE9mZnNldCA9ICpvZmZzZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9
IHNpemVvZihUKTsKKyAgICAgICAgYWRqdXN0ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0Owor
ICAgICAgICBpZiAoYWRqdXN0ZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zm
c2V0LnZhbHVlKCkgPiBidWZmZXIuYnl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9
IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQg
PSBhZGp1c3RlZE9mZnNldC52YWx1ZSgpOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVu
dHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAg
ICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRz
KTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBDUFUoQURE
UkVTUzY0KQorICAgIHNpemVfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisgICAgc2l6ZV90
IG1fYnl0ZU9mZnNldCA6IDMxOworI2VuZGlmCiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7
Ci0gICAgdW5zaWduZWQgbV9ieXRlTGVuZ3RoOworICAgIHNpemVfdCBtX2J5dGVMZW5ndGg7CiAK
ICAgICB1c2luZyBCYXNlQWRkcmVzcyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZv
aWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJh
eUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUs
NDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAot
Ym9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5z
aWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVm
ZmVyVmlldyogYXJyYXksIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0
ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0
aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxl
bmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9y
IG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGFycmF5LT5i
eXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VB
ZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGFycmF5LT5iYXNlQWRk
cmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qg
ZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwg
c2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkK
LSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0g
ICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAg
ICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1T
bWFsbGVyVGhhbihieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9m
ZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
ZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmll
dzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgs
IHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0g
ICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3Vt
U21hbGxlclRoYW4oYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUo
ZGVzdGluYXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVy
Vmlldzo6emVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxl
bmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91
dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4o
Ynl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQs
IDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJyYXlC
dWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgaW50IHN0YXJ0LCBpbnQg
ZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5n
dGgpCi17Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwot
ICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkK
LSAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5k
ID0gMDsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0g
ICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIGVu
ZCA9IHN0YXJ0OwotICAgICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwot
ICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNpbmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKaW5kZXggZGNjMmY1MDY0YWYyLi5m
YmM5ODQ3ZDJkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EYXRhVmlldzo6
RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK0RhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAg
ICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVu
Z3RoKQogewogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoCi0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJl
ZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAg
ICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXggZGEwNmI0YmIyMTQ0Li4zNDAyNjU0MTAz
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGlj
IEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgp
IGNvbnN0IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVy
Vmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJv
b2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgZ2V0KHNpemVf
dCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVv
ZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVuc2lnbmVkJiBvZmZz
ZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgcmVh
ZChzaXplX3QmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRoaXMtPnRlbXBsYXRlIGdldDxUPihvZmZz
ZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAgICAgaWYgKCFzdGF0dXMgfHwgKnN0YXR1
cykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBs
aXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgdm9pZCBzZXQoc2l6ZV90
IG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0
ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBEYXRhVmlldyhS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0
aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYmU3ZTZjMDUzNGZh
Li5mNDkzNzBmY2FiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgSlND
IHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZp
ZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
YXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7
CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQog
ICAgIApAQCAtNjUsMjYgKzY1LDI2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHplcm9GaWxs
KCkgeyB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChp
c0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVM
ZW5ndGgoKSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAg
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3Ro
KCkpOwogICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChz
aXplX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAg
ICBkYXRhKClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAg
ICB9CiAKLSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAg
ICAgZGF0YSgpW2luZGV4XSA9IHZhbHVlOwpAQCAtMTAwLDE2ICsxMDAsOSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQp
IGNvbnN0CiAgICAgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsK
LSAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQg
KyBjb3VudCA8PSBsZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAg
ICAgICAmJiBvZmZzZXQgKyBjb3VudCA+PSBvZmZzZXQpOworICAgICAgICByZXR1cm4gaXNTdW1T
bWFsbGVyVGhhbihvZmZzZXQsIGNvdW50LCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAot
ICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29u
c3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0
LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29u
c3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0x
MTgsNyArMTExLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xv
YmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5l
cmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYWU1YmRk
OGM2YTMxLi41NDI5ODBhZTY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIs
MTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXco
Ci1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVm
ZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
KQogeworICAgIEFTU0VSVCgobGVuZ3RoIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
KSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgotUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNy
ZWF0ZShsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00Nyw3ICs0OCw3
IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBh
cnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
IGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGFy
cmF5LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01Niw3ICs1Nyw3
IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0
byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC02NCw3ICs2NSw3IEBAIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
bGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAgY29uc3QgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAg
ICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3Vs
dCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
LCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwpAQCAtMTE4LDI1ICsxMTksNiBAQCBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBs
ZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwg
bGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHVuc2lnbmVkIG9m
ZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0
aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiB0cnlDcmVhdGUoYnVmZmVyLCBvZmZz
ZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0FycmF5QnVm
ZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp3cmFwKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4uZjA3NDBjYjZkNDc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyVmlldzo6c19pbmZvID0gewog
fTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdm9p
ZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB2b2lk
KiB2ZWN0b3IpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX3ZlY3Rvcih2
ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTU0LDcgKzU0LDcgQEAg
SlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRl
eHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KAotICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90
IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxp
emF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVu
Z3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwxOCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQgYXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAy
R0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVs
ZW1lbnRTaXplKQorICAgIENoZWNrZWQ8c2l6ZV90PiBzaXplID0gbGVuZ3RoOworICAgIHNpemUg
Kj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAg
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVf
dD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwotICAgIG1fdmVj
dG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUs
IHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0
cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAg
ICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1vZGUgPT0gWmVyb0Zp
bGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwgc2l6ZSk7CiAgICAgCi0gICAgdm0uaGVh
cC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkg
KiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChz
aXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIG1f
bW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNB
cnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQo
CiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkK
KyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1
cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3Rl
ZnVsVHlwZWRBcnJheSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZp
ZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9z
dHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2Rl
KERhdGFWaWV3TW9kZSkKQEAgLTIzOCw5ICsyMzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3Qg
ZWxlbWVudFNpemUoSlNUeXBlIHR5cGUpCiAgICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBl
IC0gSW50OEFycmF5VHlwZV07CiB9CiAKLXVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRl
TGVuZ3RoKCkgY29uc3QKK3NpemVfdCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNv
bnN0CiB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0g
bGVuZ3RoKCk7CisgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplKHR5cGUoKSk7CisgICAgcmV0dXJu
IHJlc3VsdC52YWx1ZSgpOworI2Vsc2UKKyAgICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVyZmxvdyBp
cyBhbHJlYWR5IGNoZWNrZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRkIHRoZSBl
eHRyYSBzYW5pdHkgY2hlY2sgd2hlbiBhc3NlcnRzIGFyZSBlbmFibGVkLgogICAgIHJldHVybiBs
ZW5ndGgoKSAqIGVsZW1lbnRTaXplKHR5cGUoKSk7CisjZW5kaWYKIH0KIAogQXJyYXlCdWZmZXIq
IEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2Nyw3ICsy
NzQsNyBAQCBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVN
ZW1vcnkoKQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsK
IAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSB0aGlzLT5i
eXRlTGVuZ3RoKCk7CiAKICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgIGNhc2UgRmFzdFR5cGVk
QXJyYXk6IHsKQEAgLTMxNiw3ICszMjMsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0Fy
cmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5
dGVPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICBz
aXplX3QgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNk
ZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMjIEFycmF5VHlwZTogXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5k
ZXggZGQwMWY3ZjgyYTUzLi5kYTZkZDBiZDc1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1
YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZhc3RTaXplTGltaXQgPSAxMDAwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZhc3RTaXplTGltaXQgPSAxMDAwOwogICAgIHVzaW5nIFZl
Y3RvclB0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAKICAgICBzdGF0aWMgdm9pZCogbnVsbFZlY3RvclB0cigpCkBAIC0xMTcsMTAg
KzExNywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxsLnJhd0JpdHMoKTsKICAgICB9
CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBzaXplT2YodWludDMyX3QgbGVuZ3RoLCB1aW50MzJf
dCBlbGVtZW50U2l6ZSkKKyAgICBzdGF0aWMgc2l6ZV90IHNpemVPZihzaXplX3QgbGVuZ3RoLCB1
aW50MzJfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0g
MSkKLSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CisgICAgICAg
IENoZWNrZWQ8c2l6ZV90PiByZXN1bHQgPSBsZW5ndGg7CisgICAgICAgIHJlc3VsdCAqPSBlbGVt
ZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxOwor
ICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkg
LSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8
c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSArMTM4LDI1IEBAIHByb3RlY3RlZDoK
ICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSW5pdGlhbGl6YXRpb25Nb2RlIHsgWmVyb0ZpbGws
IERvbnRJbml0aWFsaXplIH07CiAgICAgICAgIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBD
b25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB1aW50
MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwg
c2l6ZV90IGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBa
ZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVj
dGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQncyB1c2VkIGJ5IHRoZSBKSVQncyBzbG93IHBhdGgu
Ci0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSos
IHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IGxlbmd0aCk7CiAgICAgICAgIAogICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0
YVZpZXcgfTsKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFN0cnVj
dHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpOworICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAg
ICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAg
ICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0
b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAgdXNpbmcg
VmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2Vk
UHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMyX3QgbV9s
ZW5ndGg7CisgICAgICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICAgICAgVHlwZWRBcnJheU1vZGUg
bV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAgIH07CkBAIC0xOTMs
OCArMTk1LDggQEAgcHVibGljOgogICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7CiAg
ICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHko
KTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0g
ICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAg
ICAgVmVjdG9yUHRyIG1fdmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVf
dCBtX2xlbmd0aDsKICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4u
MzQwN2EyYTM4M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcApAQCAtNDIsNyArNDIsNyBAQCBKU0RhdGFWaWV3OjpKU0RhdGFWaWV3KFZNJiB2bSwg
Q29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcgogCiBKU0Rh
dGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTcwLDI1ICs3MCwyNSBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0
aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wg
SlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5z
aWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCBz
aXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNl
dEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpCitib29sIEpTRGF0YVZp
ZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKQogewogICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCAyYzc4NWU0NzYxMWEuLmJiYjMx
NGU4NmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApA
QCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQXJyYXlCdWZmZXJW
aWV3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVu
dFNpemUgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGVsZW1lbnRTaXplID0gMTsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZWRBcnJheUNvbnRlbnRUeXBlIGNvbnRlbnRUeXBl
ID0gVHlwZWRBcnJheUNvbnRlbnRUeXBlOjpOb25lOwogCkBAIC00NiwxNSArNDYsMTUgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBj
cmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgYnl0ZUxlbmd0aCk7
CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsg
dGhlc2UgYXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUg
c3BlY2lhbGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBj
cmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAg
c3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBz
ZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVu
Z3RoKTsKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVl
KTsKICAgICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4MWQuLjJjZmViOGM0ZTc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUu
aCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAK
LSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
c2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICog
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRW
ZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAg
fQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3Vu
ZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwog
ICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQg
YWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhl
IHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVk
IGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRv
SlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
LCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNpemVf
dCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xl
bmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2ts
eTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNr
bHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3Rv
cigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRl
eFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
dmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBt
X2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAg
ICB2b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2ts
eVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsK
ICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0
b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxP
YmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2
ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUp
CisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFs
T2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVt
ZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUg
anNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRv
cj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9B
ZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFw
dG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5OCwy
MSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2FuQWNj
ZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGJv
b2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAg
ICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBv
ZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93
Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1
cm4gaXNTdW1TbWFsbGVyVGhhbihvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAg
ICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxz
ZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAg
Ym9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1
Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8v
IHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNl
cnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpT
T2JqZWN0Kiwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlw
ZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKICAgICBSZWZQdHI8
dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJbXBsKCk7CkBAIC0zMTgs
OCArMzIyLDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwg
YW5kIGZhbHNlIG9uIGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9yLgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhTcGVjaWZpY1R5cGUoCi0g
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxPdGhlckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBzaXpl
X3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKKyAgICAg
ICAgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUpOwogCiAgICAg
Ly8gVGhlIEVDTUEgNiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5nIHBvaW50IFR5cGVkIEFycmF5
cyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgogICAgIC8vCkBAIC0zNDksNyAr
MzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1cmlmeUFycmF5KCkKICAgICB7CiAgICAgICAg
IEVsZW1lbnRUeXBlKiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fbGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBhcnJheVtpXSA9IHB1cmlmeU5hTihhcnJh
eVtpXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIzODc5
MmQxMC4uMWViM2QxNzg2MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5jbHVk
ZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5n
dGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2LDcg
QEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rv
cikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJlLCBs
ZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZh
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksNyArMTAwLDcgQEAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpjcmVhdGVVbmluaXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJB
ZGFwdG9yPiogb3RoZXIsCisgICAgc2l6ZV90IG90aGVyT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBD
b3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyArMjE5LDcgQEAg
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlw
ZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3RpbmdCdWZmZXIo
KQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAmJiB2ZWN0b3Io
KSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5cGU6OkxlZnRU
b1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNl
dCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAg
ICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3Ro
ZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8vIE5vdyB3ZSBlaXRo
ZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAoMkIpLgogICAg
IGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3Ro
OyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAg
ICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRv
PEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNO
YXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIzOSwxMSBAQCBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAog
ICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1ZmZl
ciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUsIDMy
PiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsg
aS0tOykgeworICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJh
bnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9y
PigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBv
dGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTsp
CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlj
a2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNP
YmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENv
cHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9m
ZnNldCwgSlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0
aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xh
c3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJy
YXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1
cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5
cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUg
c2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIG90aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAg
ICAgICAgbGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAg
ICAKQEAgLTMxMyw4ICszMTQsMTAgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6c2V0KAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIFdlIGNv
dWxkIG9wdGltaXplIHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9uJ3QuCi0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9iamVjdE9mZnNldCk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIC8vIGdldCgpIGZvciBub3cgcHJvYmFibHkgZG9lcyBub3QgZG8gdGhlIHJpZ2h0IHRoaW5n
IGZvciBpbmRpY2VzIGFib3ZlIFVJTlRfTUFYLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNJbkJvdW5kczx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOworICAgICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2Jh
bE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VS
VCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhZ2VDb3VudC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4uMmE4NjM2MzFhYTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC05Niw3ICs5
Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUg
PSA2NCAqIEtCOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBh
Z2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gcGFnZVNpemUpOwogCiAgICAgdWlu
dDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXgg
ZmYxNTY1ZjExZGVkLi45NzllNzhhM2JhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0No
ZWNrZWRBcml0aG1ldGljLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aApAQCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBB
cmdzPiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJncy4uLiBhcmdzKQogICAgIHJldHVybiBjaGVj
a2VkUHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVyZmxvd2VkKCk7CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhhbihUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAg
ICBDaGVja2VkPFQ+IHN1bSA9IGE7CisgICAgc3VtICs9IGI7CisgICAgcmV0dXJuICFzdW0uaGFz
T3ZlcmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDwgYm91bmQ7Cit9CisKIH0KIAogdXNpbmcgV1RG
OjpBc3NlcnROb092ZXJmbG93OwpAQCAtMTAxNywzICsxMDI0LDQgQEAgdXNpbmcgV1RGOjpkaWZm
ZXJlbmNlT3ZlcmZsb3dzOwogdXNpbmcgV1RGOjppc0luQm91bmRzOwogdXNpbmcgV1RGOjpwcm9k
dWN0T3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpzdW1PdmVyZmxvd3M7Cit1c2luZyBXVEY6OmlzU3Vt
U21hbGxlclRoYW47Cg==
</data>
<flag name="review"
          id="462530"
          type_id="1"
          status="-"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="462531"
          type_id="3"
          status="-"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439209</attachid>
            <date>2021-09-24 16:48:44 -0700</date>
            <delta_ts>2021-09-24 17:12:19 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>143682</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKaW5kZXggNDNmNzg0YTRhYjkzLi5lYzMyYjcyMjFjODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0yOTgsOSArMjk4LDkgQEAgcHVibGljOgogICAgIC8vIGluIGEgY2xhc3Mg
cmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZmZXJlbnRpYXRl
CiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3NlcyB0byBtZW1v
cnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGljIFRydXN0ZWRJ
bW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVz
dGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRy
KGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZElt
bVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAg
ICAgICAgewogICAgICAgICB9CkBAIC0zMTEsMjEgKzMxMSwyMSBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpudWxs
cHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHN0ZDo6bnVs
bHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVk
SW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgaW50cHRy
X3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRwdHIoKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV92
YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAgICAgIGNvbnN0
ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzM1LDEyICszMzUsMTIgQEAgcHVi
bGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0cgogICAgIHsK
LSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBs
aWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBU
cnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUcnVz
dGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNv
bnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9
CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTM1OCw3ICszNTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzY5LDE3ICszNjksMTcgQEAg
cHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7Ci0g
ICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIo
dmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBl
eHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIo
cHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdCBUcnVzdGVk
SW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
Y29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJl
dHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIHB1Ymxp
YzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZyb20gYWNjaWRl
bnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMuCiAgICAgc3Ry
dWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tNjQoKSB7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAgICAKLSAgICAg
ICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDogbV92
YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQo
VHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1t
NjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRy
KCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDA5LDE3ICs0MDksMTcgQEAgcHVibGljOgog
CiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7Ci0gICAgICAg
IGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQodmFsdWUp
CiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwg
Q1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQor
ICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAg
ICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlm
Ci0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBjb25zdCB7IHJl
dHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1Ry
dXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAgICAKICAgICAv
LyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMKQEAgLTEwODYs
OSArMTA4Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAgIHN0YXRpYyBi
b29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQgY2xhc3MgRGF0
YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCmluZGV4IGQ3ZmUzYTgxZTM0MS4uZThkZWM4NjM0MTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMjc1LDcg
KzEyNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB2YWx1ZSA+IDB4ZmY7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgc2hvdWxkQmxpbmRQb2ludGVyRm9yU3BlY2lmaWNBcmNoKHVpbnRwdHJf
dCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZFBvaW50ZXJGb3JTcGVjaWZp
Y0FyY2godWludHB0cl90IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHNpemVvZih2b2lkKikg
PT0gNCkKICAgICAgICAgICAgIHJldHVybiBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaChzdGF0
aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKTsKQEAgLTE0NjAsNiArMTQ2MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBhbmQ2NChpbW0uYXNUcnVzdGVkSW1tMzIoKSwg
ZGVzdCk7CiAgICAgfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogI2lmICFDUFUoWDg2
KSAmJiAhQ1BVKFg4Nl82NCkgJiYgIUNQVShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNDI1MDkwM2Jj
MzIyLi5iMzdmNGQyOGJkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0
LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQog
ICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4
MmQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3Ro
MzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVu
Z3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAgICAg
ICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9hZDY0
KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVBdXRo
ID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlk
R1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRh
dGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0
MDE3Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRlclJl
Z2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3Rl
cklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgCi0gICAg
c3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wg
c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
ID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3Qg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBj
b25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBv
cGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggNjMzNTY1MmZjNTQ0Li45NmQ2M2Qw
MjYxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTEwODcsNiArMTA4NywyNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAg
fQogCisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgbGVmdCwgSW1tNjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmln
aHQpKSB7CisgICAgICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkp
IHsKKyAgICAgICAgICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25C
bGluZENvbnN0YW50KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZv
ckJsaW5kaW5nKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24n
dCBoYXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAor
ICAgICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAg
ICB1aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChu
b3BDb3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgp
KTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIuY21wcV9tcihyaWdodC5vZmZzZXQsIHJpZ2h0LmJhc2UsIGxlZnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDA4MjRlNmViOTVkMi4u
Y2FiMzM1ODAyMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCkBAIC0xMTk1LDggKzExOTUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZVdpdGhHdWFyZCgKICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAg
IGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
c2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKHR5cGUpKSkpOwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0
aCBpcyBhIHNpemVfdCwgc28gZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBw
bGF0Zm9ybS4KKyAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBl
cnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbHNlCiAgICAg
ICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHN0YXRlLmZh
aWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCAwNGMxM2I5OWIwMWYuLjQ5YzQwYzhiYTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApA
QCAtMzQ4Niw2ICszNDg2LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1v
ZGUoKSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAg
ICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAg
YnJlYWs7CkBAIC0zODIxLDYgKzM4MzIsMTkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdl
dEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKKyAgICAgICAg
aWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZz
ZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0
ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpi
eXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkp
ICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmlu
ZGV4IDZlMjc1MzEwNGJkMy4uZTlkMDU2NzdmZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAg
LTMyNSw2ICszMjUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2Fw
ZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisg
ICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBzaG91
bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVh
ZDogewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJp
dFZlY3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFk
VGltZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQobm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCAwMzllNzY5ZGNlNzcuLmU1MjM5YjgxMWZmOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MjEsMjEgKzM4
MjEsMjUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJh
eVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBs
ZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShh
cnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9k
ZSogbGVuZ3RoTm9kZTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuYWJsZUlu
dDUyKCkpOworICAgICAgICAgICAgbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5n
dGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29y
ZCgpKSwgdGhpc05vZGUpOworICAgICAgICB9CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hv
dWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3
aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9H
cmFwaChFeGl0T0spOwogCi0KICAgICAgICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBz
ZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlw
ZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBv
dmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNO
dW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0
TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVz
ZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxl
bmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0Nv
bnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTM4NTIsNyArMzg1NiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAg
ICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5n
dGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0
aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQor
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZv
KEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIo
KSk7CisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoQXNJ
bnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSks
IHRoaXNOb2RlKSk7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMzg3
MCw3ICszODc5LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRl
cihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NF
UlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAg
c2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFy
cmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7Cisg
ICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJy
YXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmFibGVJbnQ1MigpKTsK
KyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29y
ZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNm
ZGU5Nzc5Li44YjZiOTMxM2NlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgY2FzZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk6CiAgICAgICAgIGNhc2UgR2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVu
Z3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6
CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBy
ZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgIHJlYWQoTWlzY0Zp
ZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2Ms
IE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYsMTQgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAg
ICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHJlYWQoTWlzY0Zp
ZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQXJyYXlMZW5ndGhMb2MsIE1pc2NGaWVs
ZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1v
ZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRj
MTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyAr
OTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5s
aW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUy
KCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5Ny4uNjA5ZmYwODU3Nzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xOTcsMTAgKzE5
NywxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBH
ZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
KyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRB
dDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2Fz
ZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4uZTEwYjk1NjAw
ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAg
LTE3MTcsMTIgKzE3MTcsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IE5ld1R5cGVkQXJyYXk6IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7
Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlSW50MzIoKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2Vu
ZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0yMTQ5LDcgKzIxNTMsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dDogeworICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICAgICAg
QXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZShtX2dyYXBoLCBu
b2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpLCBBcnJheU1vZGU6OnVudXNlZEluZGV4
U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKGFycmF5TW9kZS5pc1NvbWVUeXBl
ZEFycmF5VmlldygpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUp
OworICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgRWRnZSgp
LCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKKworICAgICAgICAgICAgZml4
RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKICAgICAgICAgICAgIGZp
eEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtNDA5NiwxNCArNDExMSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAg
ICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNo
aWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9
IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVk
c1N0b3JhZ2UpOwotICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwg
b3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hp
bGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29u
dmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4u
MmQ4NmViNzU3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dl
bmVyYXRpb25JbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0
aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2Yg
bGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9y
bWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5k
IGlmIHNvIHdoaWNoLAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhl
IFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFp
bHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBi
b3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJv
eCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFp
biwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1h
bnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25v
dyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2Np
YXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MS4uNDNiNWQxMDEy
ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTQ5OSw2ICsxNDk5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNl
IEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICAgICAgc2V0UmVsYXRpb25zaGlwKFJlbGF0aW9u
c2hpcChub2RlLCBtX3plcm8sIFJlbGF0aW9uc2hpcDo6R3JlYXRlclRoYW4sIC0xKSk7CiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3
MDY4YTljLi44MWRjNDkwMTUxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0xOTY1LDYgKzE5NjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAg
ICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAg
ICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgog
CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7
CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4u
NzI2NGRjMmY1NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0yNjEsOCArMjYxLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhNdWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVs
dGlEZWxldGVCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlz
IG9ubHkgcmVsZXZhbnQgZm9yIFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVz
IHRoYXQgY2FuIGhhdmUgYSBsZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8g
XAorICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAg
ICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CmluZGV4IDk1OTM0ZjI5M2NiNy4uMzIwMmU3NjQxYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1jaGFyKiBu
ZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLCBjaGFyKiB2ZWN0b3IpCitjaGFy
KiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgc2l6ZSwgY2hhciogdmVjdG9y
KQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTgy
LDExICsxODIsMTMgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHIKICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
ICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KLSAgICAKKworICAgIHNpemVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHNpemUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RW
ZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0
cih2ZWN0b3IsIHVuc2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgc2l6ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVu
c2lnbmVkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwNyw3ICsx
OTA5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVy
LCBKU0NlbGwqLCAoVk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTIzLDcgKzE5
MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
SW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
aXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0xOTM5LDcgKzE5NDEsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMy
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk1NSw3ICsxOTU3LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIq
IHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzEsNyArMTk3
Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNV
aW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5ODcsNyArMTk4OSw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hh
ciosIChKCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OENsYW1wZWRBcnJheT4oZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAK
LUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDAzLDcg
KzIwMDUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMjAxOSw3ICsyMDIxLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAzNSw3ICsyMDM3LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0MzJB
cnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxs
b3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNp
emVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTIwNTEsNyArMjA1Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBl
bmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjcsNyArMjA2OSw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNp
emVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggODVkNDE2
OTgxOTBhLi42OTVmN2U5NWJlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCkBAIC0xMTksMjcgKzExOSwyNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0FycmF5LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKgog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdFbXB0eUFycmF5LCBjaGFyKiwg
KFZNKiwgU3RydWN0dXJlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgQnV0dGVyZmx5KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplQW5kSGludCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludDMyX3QsIGludDMyX3QsIEJ1dHRlcmZseSopKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBl
ZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4
Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50
NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
SW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
c2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwg
U3RydWN0dXJlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJ
dGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAppbmRleCA4OWU1ZWY0ZDg1MWUuLjA2Y2ZmMzYwMGI1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTk4Niw2ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBzZXRQcmVk
aWN0aW9uKFNwZWNJbnQ1MkFueSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9p
bnRBdDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMx
MDg2Li41YmQzNzdkYWY4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCkBAIC0zNzMsNiArMzczLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUy
OgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2Fz
ZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGln
bm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAg
ICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNU
eXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggMjQ2YzE2YzQ4OGU5Li45YWY4MTZjNzc4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM5LDE2ICszMjM5LDI4IEBAIEpJ
VENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKE5vZGUqIG5vZGUsIEdQUlJlCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2pp
dC5ncmFwaCgpLnRyeUdldEZvbGRhYmxlVmlldygKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG1f
aml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsK
ICAgICBpZiAodmlldykgewotICAgICAgICB1aW50MzJfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgo
KTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHZpZXctPmxlbmd0aCgpOwogICAgICAgICBOb2Rl
KiBpbmRleE5vZGUgPSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDEpLm5vZGUoKTsKLSAgICAg
ICAgaWYgKGluZGV4Tm9kZS0+aXNJbnQzMkNvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQz
MigpIDwgbGVuZ3RoKQorICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0FueUludENvbnN0YW50KCkg
JiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwgbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIEpJ
VENvbXBpbGVyOjpKdW1wKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIG1f
aml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwg
aW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAg
IHJldHVybiBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5k
aWYKICAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZWxzZQogICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSk7CisjZW5kaWYKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVk
QXJyYXlCb3VuZHNDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4
R1BSKQpAQCAtNzk1NCw3ICs3OTY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVk
QXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAg
ICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAg
bV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFs
aWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9Q
QVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04
MzM2LDEyICs4MzQ4LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxl
bmd0aChOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBiYXNlKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQuYnJh
bmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmlj
dEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQog
fQogCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUp
CiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTExMDUsMTAgKzExMTIzLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVk
QXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKwogICAgIFNwZWN1bGF0
ZUludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6
ZUdQUiA9IHNpemUuZ3ByKCk7Ci0gICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8vIFRo
ZSBvcGVyYXRpb25zIHdlIGNhbGwgb24gdGhlIHNsb3cgcGF0aCBleHBlY3QgYSBDUFVSZWdpc3Rl
ciwgc28gaW50NjRfdCBvbiA2NCBiaXQgcGxhdGZvcm1zCisgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIoc2l6ZUdQUiwgc2l6ZUdQUik7CisjZW5kaWYKKworICAgIGVtaXROZXdUeXBlZEFycmF5
V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVH
UFIpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXpl
SW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEyNCw2ICsxMTE1Miw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9k
ZSkKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKEpTQXJyYXlCdWZmZXJWaWV3
OjpmYXN0U2l6ZUxpbWl0KSkpOworICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9m
IHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgc3Rh
dGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6
ZUxpbWl0KSk7CiAgICAgCiAgICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKICAg
ICBtX2ppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5
cGUpKSwgc2NyYXRjaEdQUik7CkBAIC0xMTE3OSw5ICsxMTIwOSwxNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgbV9q
aXQuc3RvcmVQdHIoCiAgICAgICAgIHN0b3JhZ2VHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkp
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVH
UFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigK
ICAgICAgICAgc2l6ZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAg
bV9qaXQuc3RvcmUzMigKICAgICAgICAgVHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAgLTE0MTU2LDYgKzE0MTkyLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQz
MlVzZToKICAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAg
ICAgYnJlYWs7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAg
ICAgICBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUobm9kZSk7CisgICAgICAgIGJy
ZWFrOworI2VuZGlmCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mg
YXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiNjUxNWQ4YjcyMTkuLjBiOTM1
MTE2MDIyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMTMwMCw5ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwog
ICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
TmV3U3ltYm9sKE5vZGUqKTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZUluUmVnaXN0ZXIoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJl
LCBHUFJSZWcgc2l6ZUdQUik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXpl
KE5vZGUqKTsKLSAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgY29tcGlsZU5ld1R5
cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxl
SW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7
CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAg
dm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogCiAg
ICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0MzUsNiArMTQ0Miw5IEBAIHB1YmxpYzoKICAgICBK
SVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJZk91dE9mQm91bmRz
KE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMpOwog
ICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIs
IEdQUlJlZyBpbmRleEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQoTm9kZSopOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJl
ZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdz
LCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAt
MjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9
OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNw
ZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9h
ZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCku
CisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhl
IGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDUxZmUyZjRiYmUwZi4uMWMzMzRlNmJiZjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTM1MzQsNiArMzUzNCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxh
dGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBi
cmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJ
ZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjE2LDYgKzM2MjEsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OiB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0
UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGRiNmM2YjI3OTg1Zi4uMmFkOTkyNDY1NmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI2
OTMsNiArMjY5Myw4NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9k
ZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgIH0gfQogfQogCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9k
ZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBhdXRvIHR5
cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1bGF0ZVN0
cmljdEludDUyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcg
c2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5S
ZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBu
b2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVk
QXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwor
ICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7
CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1Miks
ICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZp
dCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAg
IEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRh
dGFHUFIgPSBkYXRhLmdwcigpOworICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7Cisg
ICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7CisgICAgQVNTRVJUKHZlY3RvckdQUiAhPSBk
YXRhR1BSKTsKKworICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CisKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBlbXB0eUJ5dGVPZmZzZXQgPSBtX2ppdC5icmFuY2gzMigKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpLAorICAgICAg
ICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxUeXBlZEFycmF5KSk7CisKKyAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZlZlY3RvcigpKSwgdmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIG51bGxW
ZWN0b3IgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCB2ZWN0b3JHUFIsIFRy
dXN0ZWRJbW1QdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpOworCisgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCBkYXRhR1BSKTsKKyAgICBtX2ppdC5jYWdlV2l0aG91dFVudGFn
Z2luZyhHaWdhY2FnZTo6SlNWYWx1ZSwgZGF0YUdQUik7CisKKyAgICBjYWdlVHlwZWRBcnJheVN0
b3JhZ2UoYmFzZUdQUiwgdmVjdG9yR1BSKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkp
LCBhcnJheUJ1ZmZlckdQUik7CisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgY2FnaW5nLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKKyAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFycmF5QnVmZmVyR1BSLCBBcnJh
eUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkpLCBkYXRhR1BSKTsKKyNpZiBDUFUoQVJNNjRFKQorICAg
IG1faml0LnJlbW92ZUFycmF5UHRyVGFnKGRhdGFHUFIpOworI2VuZGlmCisKKyAgICBtX2ppdC5z
dWJQdHIoZGF0YUdQUiwgdmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgIG51bGxWZWN0b3IubGluaygm
bV9qaXQpOworI2VuZGlmCisgICAgZW1wdHlCeXRlT2Zmc2V0LmxpbmsoJm1faml0KTsKKyAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZlY3RvckdQUik7CisKKyAgICBkb25l
LmxpbmsoJm1faml0KTsKKyNpZiAhQ1BVKEFSTTY0RSkKKyAgICBBU1NFUlQoIUpTQXJyYXlCdWZm
ZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpOworICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwor
I2VuZGlmCisKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOworfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUg
b3AgPSBub2RlLT5vcCgpOwpAQCAtNDM3NCw2ICs0NDU1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5v
ZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgor
ICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworICAgICAgICBicmVh
azsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChu
b2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDkyLDYgKzQ1NzcsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBjb21waWxl
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90
b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTgyLDcgKzU2NzIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9F
eHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+
IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAt
IDEpLCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhk
YXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7Cisg
ICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsK
IApAQCAtNTc4Myw3ICs1ODczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsK
ICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQo
VHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1Zh
bHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1
MTA0Zi4uNmIzZTI1M2VmOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSw2ICsyNzksNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
CisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAg
ICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRhY2hl
ZDoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0z
NTksNiArMzYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgog
ICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAg
ICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IGQxMjQ4YzlmYWQ2Ny4uYzk5MGQ1OWNiYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlOgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3Rp
ZnlXcml0ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKQEAgLTM5MSw2ICszOTIsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEluaXRp
YWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgogICAgIGNhc2UgQ1BVSW50cmluc2ljOgogICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAg
Y2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEJ5
VmFsV2l0aFRoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggNjc3YWNhNDRiZDdlLi4wOWI2OGY0YmNmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMjQsNiArMTAyNCw5IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21w
aWxlR2V0QXJyYXlMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFz
SW50NTIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNTA0MSw4ICs1MDQ0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlw
ZWRBcnJheVZpZXcoKSkgewotICAgICAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAg
ICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICAgICAgICAgIExW
YWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JF
cXVhbChsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIo
bGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC01MDUxLDYgKzUwNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0K
IAorICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3
KCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlR2V0VmVjdG9yTGVu
Z3RoKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkp
IHsKQEAgLTgxNTYsOTggKzgxNjcsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVz
ZTogewogICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1
cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFs
bEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sg
c2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8p
OwotCi0gICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuYWJv
dmUoc2l6ZSwgbV9vdXQuY29uc3RJbnQzMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1p
dCkpLAotICAgICAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91
Z2hDYXNlKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBi
eXRlU2l6ZSA9Ci0gICAgICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6
ZSksIG1fb3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7Ci0g
ICAgICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgewotICAgICAg
ICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAotICAgICAgICAgICAgICAgICAgICBt
X291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKLSAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwotICAg
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxv
Y2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNp
emUsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFw
Q2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3Bs
YXRXb3JkcygKLSAgICAgICAgICAgICAgICBzdG9yYWdlLAotICAgICAgICAgICAgICAgIG1fb3V0
LmludDMyWmVybywKLSAgICAgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hy
KGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAotICAgICAgICAgICAgICAgIG1fb3V0
LmludDY0WmVybywKLSAgICAgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVz
KTsKLQotI2lmIENQVShBUk02NEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTFZh
bHVlIHNpemVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNpemUpOwotICAgICAgICAgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlw
ZSgpKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3Rlcihz
dG9yYWdlKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBC
Mzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAg
ICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAg
ICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0u
Z3ByKCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBh
dXRoZW50aWNhdGU7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisgICAgICAgICAg
ICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsK
LSAgICAgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJS
QVlfVFlQRV9DQVNFKG5hbWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0g
ICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUj
I0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9F
WENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UKLSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAg
ICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVh
cHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIo
c2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJy
YXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwot
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBz
dG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3Rv
cmFnZSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlU
eXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlw
ZSkpOwogCi0gICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZh
bHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwg
JnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNs
b3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxh
enlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3
VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5k
aXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJl
Y3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIo
KSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFs
dWUpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hv
cihzbG93UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxk
MSgpKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0
UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhT
aXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
ICAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CiAKQEAgLTgyNjQsNyArODE5NiwxMDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRC
aXRzKQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygp
OworCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291
dC5pbnRQdHJaZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291
dC5hYm92ZShzaXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3Ojpm
YXN0U2l6ZUxpbWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNt
YWxsRW5vdWdoQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3Vt
ZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMy
LWJpdCBudW1iZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihK
U0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworICAgICAgICBMVmFsdWUgc2l6ZSA9
IG1fb3V0LmNhc3RUb0ludDMyKHNpemU2NEJpdHMpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6
ZSA9CisgICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4dFB0cihzaXplKSwgbV9vdXQu
Y29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYg
KGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXpl
ID0gbV9vdXQuYml0QW5kKAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9v
dXQuY29uc3RJbnRQdHIoNykpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5z
dGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBh
bGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBh
bGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29y
ZHMoCisgICAgICAgICAgICBzdG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAor
ICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQu
Y29uc3RJbnRQdHIoMykpKSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAg
ICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAg
ICAgICAgeworICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNp
emUpOworICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5w
YXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBl
bmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVu
ZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7
CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAg
ICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0u
Z3ByKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGlj
YXRlOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3Rv
cmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3Vs
dFZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2Rl
ZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMg
bmFtZTogXAorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMj
I25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhD
TFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJS
QVlfVFlQRV9DQVNFCisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFz
dFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291
dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2Us
IGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAg
ICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50
MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfbW9kZSk7CisKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNs
b3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBs
YXp5U2xvd1BhdGgoCisgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9u
PiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAg
ICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJh
eVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSks
IGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25z
WzJdLmRpcmVjdEdQUigpKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRz
LCBzdG9yYWdlVmFsdWUpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
KyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwg
c2xvd1Jlc3VsdCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxl
QWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0xNTU3Niw3ICsxNTYwMyw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgp
OwogCi0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQz
Mk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkp
OworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZp
ZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVlIGlu
ZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5i
eXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhU
b0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNTcxOSw3
ICsxNTc0Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25v
ZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJv
RXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0
Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsK
ICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwog
ICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sg
PSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUg
LSAxKSk7CkBAIC0xNzIyMSw3ICsxNzI0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gZG9V
bnRhZ0FycmF5UHRyID0gWyZdKExWYWx1ZSB0YWdnZWRQdHIpIHsKICNpZiBDUFUoQVJNNjRFKQog
ICAgICAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSkgewotICAgICAgICAg
ICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0Lmxv
YWQ2NChiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuaAppbmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1
ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0
cnVjdGlvbjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9p
bnRlcikgeyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5l
Z2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBs
b2FkMzIoYmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1
ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwg
ZmllbGQpOyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1
ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JbnRyaW5zaWNFbWl0dGVyLmNwcAppbmRleCA5NGY3YWZlMTFhOTEuLjE0YzcwNjA2NmM1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBA
IC03OSwyMyArNzksMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50
cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRjaCAo
aW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
dmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0
ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQzMih2
YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50
cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+Y2xh
c3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAg
IGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNoaWZ0NjQoVHJ1
c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICBqaXQu
Ym94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3Jh
dGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2
YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkgewotICAgICAg
ICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlwZWRBcnJheXMg
Y2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KLSAgICAgICAg
ICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2
YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBzaW5j
ZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGgg
dGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0MzIoVHJ1c3Rl
ZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAgICB9Ci0KICAg
ICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAg
IHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNiw4ICsxMzUs
MTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVy
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZq
aXQpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5ib3hJbnQ1
Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIp
OworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2Vu
ZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCBjOWI4
ZjJhNzE5MWUuLjJkY2M4YTRlYTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgUmVmPFNoYXJlZFRhc2s8dm9p
ZCh2b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKICAg
ICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7CiB9CiAKLVNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWdu
ZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorU2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVj
dG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92
ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZSkKQEAgLTY4LDcgKzY4LDcg
QEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNv
bnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJhbnNmZXJUbygqdGhpcyk7CiB9CiAKLUFycmF5
QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQg
c2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikK
K0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6
ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0
b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMpCiAgICAgLCBtX3NpemVJbkJ5dGVz
KHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsxMDksMjEgQEAgdm9pZCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9CiAKLXZvaWQgQXJyYXlC
dWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQordm9pZCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewotICAgIC8v
IERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgaWYg
KG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRz
ICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMg
IT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkg
ewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gc2l6ZUluQnl0ZXMgPSBudW1FbGVt
ZW50czsKKyAgICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJ
bkJ5dGVzLmhhc092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSB7CisgICAgICByZXNldCgpOworICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG51bUVsZW1lbnRzKSAq
IHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudEJ5dGVTaXplKTsKLSAgICBzaXplX3QgYWxsb2Nh
dGlvblNpemUgPSBzaXplSW5CeXRlczsKKworICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNp
emVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgaWYgKCFhbGxvY2F0aW9uU2l6ZSkKICAgICAgICAgYWxs
b2NhdGlvblNpemUgPSAxOyAvLyBNYWtlIHN1cmUgbWFsbG9jIGFjdHVhbGx5IGFsbG9jYXRlcyBz
b21ldGhpbmcsIGJ1dCBub3QgdG9vIG11Y2guIFdlIHVzZSBudWxsIHRvIG1lYW4gdGhhdCB0aGUg
YnVmZmVyIGlzIGRldGFjaGVkLgogCiAgICAgdm9pZCogZGF0YSA9IEdpZ2FjYWdlOjp0cnlNYWxs
b2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYWxsb2NhdGlvblNpemUpOwotICAgIG1fZGF0YSA9IERh
dGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzKTsKKyAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRhLCBz
aXplSW5CeXRlcy52YWx1ZSgpKTsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgcmVzZXQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250
ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlCiAgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKICAgICAgICAgbWVtc2V0KGRh
dGEsIDAsIGFsbG9jYXRpb25TaXplKTsKIAotICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRl
czsKKyAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBSRUxFQVNF
X0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiAgICAgbV9k
ZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwog
fQpAQCAtMTc4LDcgKzE3Niw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRo
KEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQogICAgIFJFTEVBU0VfQVNTRVJUKG90aGVyLm1f
c2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0KIAotUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoc2l6
ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgYXV0byBi
dWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgaWYg
KCFidWZmZXIpCkBAIC0xOTEsNyArMTg5LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9p
ZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNy
ZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjA4LDcgKzIw
Niw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNv
bnRlbnRzJiYgY29udGVudHMpCiAvLyBDdXJyZW50IHRoaXMgaXMgb25seSB1c2VkIGZyb206CiAv
LyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PD46OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkuIEJ1
dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1vcnkgc2hvdWxkIGhhdmUgYWxyZWFkeSBjb21lCiAvLyAg
IGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9w
dGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBi
eXRlTGVuZ3RoKQogewogICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRW5hYmxlZCgpIHx8IChHaWdh
Y2FnZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNhZ2U6OmNvbnRhaW5zKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5ndGggLSAxKSkpOwogICAgIHJldHVybiBjcmVh
dGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2Fj
YWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIyMCw3ICsyMTgsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVM
ZW5ndAogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdlIGNvdWxkIGludHJvZHVjZSBhIG5ldyBzZXQg
b2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUgdW5jYWdlZCBhbmQgZ2V0IGFjY2Vzc2VkCiAv
LyAgIGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3NlbWJseS4gV2FzbSBzaG91bGQgYWxsb2NhdGUg
ZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21C
eXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKIHsKICAgICBpZiAo
ZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGF0YSkpCiAg
ICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKTsKQEAgLTIyOSw3ICsy
MjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29u
c3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbgogICAgIHJldHVybiBjcmVhdGUoV1RGTW92
ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51
bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0
aWFsaXplKTsKIH0KQEAgLTIzOSw3ICsyMzcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiB0cnlDcmVh
dGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQXJyYXlCdWZm
ZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0ZShieXRlTGVuZ3Ro
LCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CkBAIC0yNDgsMTcgKzI0
NiwxNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qg
dm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZwogICAgIHJldHVybiBjcmVhdGVJbnRlcm5h
bChXVEZNb3ZlKGNvbnRlbnRzKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKIH0KIAotUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRl
KG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJ
bml0aWFsaXplKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVy
Q29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5
KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIHBvbGljeSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yNjYsMTUgKzI2NCwxNyBAQCBS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlUwogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6
ZV90IGJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFieXRlTGVuZ3RoIHx8IHNvdXJjZSk7CiAg
ICAgYXV0byBidWZmZXIgPSBhZG9wdFJlZigqbmV3IEFycmF5QnVmZmVyKFdURk1vdmUoY29udGVu
dHMpKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwor
ICAgIGlmIChieXRlTGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChzb3VyY2UpOworICAgICAgICBt
ZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgfQogICAgIHJl
dHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9u
UG9saWN5IHBvbGljeSkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAg
IGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGlj
eSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cykKIHsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNs
YW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQorc2l6ZV90
IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJp
Z2h0KQogewogICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0KTsKICAgICBpZiAoeCA8IGxlZnQpCkBA
IC0zMDEsOSArMzAxLDkgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91Ymxl
IHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQogICAgIHJldHVybiB4OwogfQogCi11
bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CitzaXpl
X3QgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogewotICAgIHVu
c2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGN1cnJlbnRM
ZW5ndGggPSBieXRlTGVuZ3RoKCk7CiAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAgaW5kZXgg
PSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7CiAgICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAs
IGN1cnJlbnRMZW5ndGgpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3QKICAgICByZXR1cm4gc2xpY2VX
aXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1S
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQp
IGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2lu
IDogMDsKKyAgICBzaXplX3Qgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsK
ICAgICBhdXRvIHJlc3VsdCA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7CiAgICAgaWYgKHJlc3VsdCkKICAgICAg
ICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9kZShzaGFyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IDY4ZmY5MGUxM2ViYS4uYzJiNDRj
MjQyYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOSw3ICszOSwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIENQVShBRERSRVNT
NjQpCisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAzMikKKyNlbHNlCisv
LyBCZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNpemVfdCB0byBzdG9yZSB0aGUgc2l6ZSBpbiBieXRl
cyBvZiBhcnJheSBidWZmZXJzLCB3ZSBjYW5ub3Qgc3VwcG9ydCA0R0Igb24gMzItYml0IHBsYXRm
b3Jtcy4KKy8vIE5vdGUgdGhhdCBzdG9yaW5nIHRoZSBzaXplIGluIGEgdWludDY0X3Qgd291bGQg
YmUgcXVpdGUgbWVzc3kgb24gMzItYml0cyBhcyB0aGUgSklUIGhhdmUgdG8gYmUgYWJsZSB0byBt
YW5pcHVsYXRlIGl0LgorLy8gU28gd2UgYXJlIHN0aWNraW5nIHdpdGggMkdCLiBJdCBzaG91bGQg
aW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRvIHN1cHBvcnQgdXAgdG8gKDRHQiAtIDFCKSBpZiBhbnlv
bmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAweDdmZmZmZmZmdQorI2Vu
ZGlmCiAKIGNsYXNzIFZNOwogY2xhc3MgQXJyYXlCdWZmZXI7CkBAIC01MSw3ICs1OCw3IEBAIHVz
aW5nIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uID0gUGFja2VkUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZCh2b2lkKik+CiAKIGNsYXNzIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4g
ewogcHVibGljOgotICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5z
aWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgU2hhcmVk
QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKTsK
ICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVs
bChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY3LDE0IEBAIHByaXZhdGU6CiAgICAgdXNp
bmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdl
ZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwor
ICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50
cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJs
aWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQg
c2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJ
bkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFy
cmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lk
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygp
KTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5C
eXRlczsgfQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUlu
Qnl0ZXM7IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0
aWFsaXplCiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAg
IHZvaWQgdHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQo
KTsKICAgICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4
ICsxMTIsMjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0
cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3Np
emVJbkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlC
dWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1Ymxp
YzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCog
c291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0
ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNp
Z25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29u
c3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRh
dGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1
bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3Ro
KCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFy
aW5nTW9kZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDQsNyBAQCBwdWJs
aWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRv
dWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2ln
bmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6
ZV90IGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5l
IHZvaWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTY4LDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVH
aWdhY2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwg
Y29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwor
ICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29u
dGVudHMmJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJy
YXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQgY2xh
bXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOworICAg
IGlubGluZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0YXRp
YyBpbmxpbmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3Qg
cmlnaHQpOwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzE5
OSw3IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4g
bV9jb250ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3Ro
KCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTIsNyBAQCBi
b29sIEFycmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6Omdj
U2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5
IHdhbnQgdG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcu
Ci0gICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5
dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3Ro
KCk7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLjQ3
MzcyMjc0NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVy
VmlldygKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5
dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAg
ICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxl
bmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93PiBs
ZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5
dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjZjNDc4YjFl
YjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAgICAv
LyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBzdGF0
aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNp
emVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoc2l6
ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNl
dCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5
IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRo
aW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJy
YXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVu
dHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1
Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJv
b2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKQogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7Cisg
ICAgICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAg
aWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9m
ZnNldCkgLyBzaXplOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxl
bmd0aCAtIGJ5dGVPZmZzZXQpIC8gZWxlbWVudFNpemU7CiAgICAgICAgIGlmIChudW1FbGVtZW50
cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0MyArMTEzLDQ4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZm
ZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3Ro
KTsKIAotICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCBz
aXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsK
LSAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBk
YXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0
UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90
IGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBp
bmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5n
ZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFu
ZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUs
Ci0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOworICAgIGlubGlu
ZSBib29sIHplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVM
ZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBm
cm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAgIC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVy
IG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlpbmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRz
KAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLAotICAgICAgICB1bnNpZ25lZCBh
cnJheUJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpvZmZzZXQsCi0gICAgICAgIHVuc2ln
bmVkICpudW1FbGVtZW50cykKKyAgICAgICAgc2l6ZV90IGFycmF5Qnl0ZU9mZnNldCwKKyAgICAg
ICAgc2l6ZV90ICpvZmZzZXQsCisgICAgICAgIHNpemVfdCAqbnVtRWxlbWVudHMpCiAgICAgewot
ICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZzZXQp
IC8gc2l6ZW9mKFQpOworICAgICAgICBzaXplX3QgbWF4T2Zmc2V0ID0gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAg
ICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewogICAgICAgICAgICAgKm9mZnNldCA9IGJ1
ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAqbnVtRWxlbWVudHMgPSAwOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICpvZmZzZXQgPSBhcnJheUJ5dGVPZmZz
ZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4oYnVm
ZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0Vs
ZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKKyAg
ICAgICAgQ2hlY2tlZDxzaXplX3Q+IGFkanVzdGVkT2Zmc2V0ID0gKm9mZnNldDsKKyAgICAgICAg
YWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAgICBhZGp1c3RlZE9mZnNldCArPSBh
cnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3RlZE9mZnNldC5oYXNPdmVyZmxvd2Vk
KCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5ieXRlTGVuZ3RoKCkpCisgICAg
ICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCk7CisgICAgICAgIHNpemVf
dCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBz
aXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1l
bnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6
IDMxOworI2lmIENQVShBRERSRVNTNjQpCisgICAgc2l6ZV90IG1fYnl0ZU9mZnNldCA6IDYzOwor
I2Vsc2UKKyAgICBzaXplX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1f
aXNEZXRhY2hhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgc2l6ZV90
IG1fYnl0ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNh
Z2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFk
ZHJlc3Mgb2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQu
CkBAIC0xNjAsODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6
OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0g
ICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCAr
IGFycmF5LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNl
dCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBv
ZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0
ZU9mZnNldCwgYXJyYXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNl
dCwgYXJyYXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jv
b2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNl
dCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGgg
PiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwg
Ynl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93
CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBi
eXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhf
dCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1t
b3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jv
b2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZz
ZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3Ro
ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8
IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxv
dworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwg
Ynl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNvbnN0
IHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJlc3Mo
KSk7CiAgICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRl
TGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onpl
cm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkK
K2Jvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBz
aXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3Ro
KCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQp
IHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICgh
aXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBi
YXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChi
YXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAg
ICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNl
dCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFy
dCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwot
ICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQg
PCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5k
KSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBz
dGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQg
LSBzdGFydCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVm
ZmVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRl
eCBkY2MyZjUwNjRhZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLURhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXpl
X3QgYnl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNy
ZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVM
ZW5ndGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3Ro
KCk7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRi
YjIxNDQuLjM0MDI2NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZp
ZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERh
dGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFy
cmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVu
c2lnbmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIp
CisgICAgVCBnZXQoc2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1
cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBp
ZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJl
YWQodW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51
bGxwdHIpCisgICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9v
bCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVt
cGxhdGUgZ2V0PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAo
IXN0YXR1cyB8fCAqc3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0
LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAg
ICB2b2lkIHNldChzaXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9v
bCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAg
ICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcg
KzgzLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
OworICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApp
bmRleCBiZTdlNmMwNTM0ZmEuLmY0OTM3MGZjYWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTUgKzMzLDE1
IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdl
bmVyaWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRl
KGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
KGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGlj
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNU
eXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbGVuZ3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KGJh
c2VBZGRyZXNzKCkpOyB9CiAgICAgCkBAIC02NSwyNiArNjUsMjYgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgemVyb0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7IH0KICAgICAKLSAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICByZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OwogICAgIH0KIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0oc2l6ZV90IGluZGV4KSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5k
ZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAg
IH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25z
dAorICAgIHZvaWQgc2V0KHNpemVfdCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5s
ZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21E
b3VibGUodmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4
LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZl
KHNpemVfdCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7
CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+
bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CkBAIC0xMDAsMTYgKzEw
MCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZz
ZXQsIHNpemVfdCBjb3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAg
ICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sg
b3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAg
ICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgp
KTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJy
YXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlU
eXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6
OnR5cGVWYWx1ZTsKQEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZl
clZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBw
cml2YXRlOgotICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6
ZV90IGxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCBhZTViZGQ4YzZhMzEuLjU0Mjk4MGFlNjRmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVy
aWNUeXBlZEFycmF5VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZl
clZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNp
Z25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1
dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1
bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcg
KzY1LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
CiAgICAgaWYgKCFidWZmZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVu
Z3RoKQogewogICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNy
ZWF0ZShsZW5ndGgpOwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEwMSw3IEBAIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcgQEAgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CkBAIC0x
MTgsMjUgKzExOSw2IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17
Ci0gICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVu
Z3RoKHN0YXJ0LCBlbmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBB
cnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBBU1NFUlQo
YnVmZmVyKTsKLSAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpi
dWZmZXIsIGJ5dGVPZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIHRyeUNy
ZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIEpTQXJyYXlCdWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OndyYXAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggODllYWViZDNjMmNjLi5mMDc0MGNiNmQ0NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJW
aWV3OjpzX2luZm8gPSB7CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29u
dGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWlu
dDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNp
emVfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkK
ICAgICAsIG1fdmVjdG9yKHZlY3RvciwgbGVuZ3RoKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpA
QCAtNTQsNyArNTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKIH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwKKyAgICBWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNp
emUsCiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxs
cHRyKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0
byB1c2UgbW9yZSB0aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KElOVF9NQVgpIC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZDxzaXplX3Q+IHNpemUgPSBs
ZW5ndGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZSA+IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNpemVfdCBzaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50
U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSksIGxlbmd0aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3Rv
clR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVl
KCkpLCBsZW5ndGgpOwogICAgIGlmICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAobW9kZSA9PSBaZXJvRmlsbCkKICAgICAgICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsK
ICAgICAKLSAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0
PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplKTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBz
dHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0gT3ZlcnNpemVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEw
MCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rp
b25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgp
CiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAg
ICAgLCBtX21vZGUoV2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTQXJy
YXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAog
CiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFy
cmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0
YVZpZXdUYWcpCisgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZp
ZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCiAgICAgLCBtX21vZGUoRGF0YVZpZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0
aWMgaW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxl
bWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJh
eUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6ZV90IEpTQXJyYXlCdWZmZXJWaWV3
OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8
c2l6ZV90PiByZXN1bHQgPSBsZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlw
ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNl
bmNlIG9mIG92ZXJmbG93IGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNv
IEkgb25seSBhZGQgdGhlIGV4dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJs
ZWQuCiAgICAgcmV0dXJuIGxlbmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgog
fQogCiBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1v
cnkoKQpAQCAtMjY3LDcgKzI3NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6
c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlz
LT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0
ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAg
ICAgY2FzZSBGYXN0VHlwZWRBcnJheTogewpAQCAtMzE2LDcgKzMyMyw3IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMt
Pmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0
Y2ggKHR5cGUoKSkgewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMg
QXJyYXlUeXBlOiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaAppbmRleCBkZDAxZjdmODJhNTMuLmRhNmRkMGJkNzUzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0x
MDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1p
dCA9IDEwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZmFzdFNpemVMaW1pdCA9IDEw
MDA7CiAgICAgdXNpbmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9y
UHRyKCkKQEAgLTExNywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwu
cmF3Qml0cygpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJf
dCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9m
KHNpemVfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKTsKKyAgICAgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAg
ICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSAtIDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgs
MjUgQEAgcHJvdGVjdGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlv
bk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50
MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBa
ZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQo
Vk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsIEluaXRp
YWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMg
b25seSBmb3IgY29uc3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVzZWQgYnkgdGhl
IEpJVCdzIHNsb3cgcGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUq
LCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0cnVjdGlvbkNv
bnRleHQoU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKICAgICAgICAg
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAg
ICAgICBWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAgICAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0g
RGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAog
ICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1Rh
Zyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFt
X3N0cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAgIHVp
bnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNpemVf
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFycmF5
TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZseSog
YnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBAIC0x
NjIsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJl
OwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2
ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwotICAg
ICAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgICAg
ICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7
CiAgICAgfTsKQEAgLTE5Myw4ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHVuc2lnbmVk
IGJ5dGVPZmZzZXQoKTsKICAgICBpbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9m
ZnNldENvbmN1cnJlbnRseSgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgc2l6
ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVM
ZW5ndGgoKSBjb25zdDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTks
NyArMjIxLDcgQEAgcHJvdGVjdGVkOgogICAgIEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlcklu
QnV0dGVyZmx5KCk7CiAKICAgICBWZWN0b3JQdHIgbV92ZWN0b3I7Ci0gICAgdWludDMyX3QgbV9s
ZW5ndGg7CisgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCmluZGV4IDM0ZWEyMTQ2MGEwZC4uOTkyMmZmZGI1N2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDEzICs2
OSwxNSBAQCBpbmxpbmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0
cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQorCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIo
KTsKKwogICAgIGlmIChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAg
ICByZXR1cm4gYXNJbnQzMigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0
b0ludDMyKGQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjkuLjM0MDdhMmEzODNjNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgSlNE
YXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQs
IEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRh
Vmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6
ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5iYmIzMTRlODZmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0FycmF5QnVmZmVyVmlldzsKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBlbGVtZW50U2l6ZSA9IDE7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFR5cGVk
QXJyYXlDb250ZW50VHlwZSBjb250ZW50VHlwZSA9IFR5cGVkQXJyYXlDb250ZW50VHlwZTo6Tm9u
ZTsKIApAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwK
KyAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMs
IHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCiAg
ICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3aGVy
ZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNp
Z25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmlu
aXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBK
U09iamVjdCosIHNpemVfdCwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChKU0ds
b2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXIqIHBv
c3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBBcnJh
eUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkwNjI0N2Vh
NjUuLmYwMzdmNjFlYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAgLTEzNiwxMSArMTM2LDExIEBAIEVuY29k
ZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhv
ZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNl
dCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0lu
ZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9
IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xNDksNyArMTQ5LDcg
QEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVy
bHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAK
LSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVf
dCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+
IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQg
b2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBi
ZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAg
ICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9i
YWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxl
bWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVs
ZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVt
ZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAg
ICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvQm9vbGVh
bihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRh
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVl
biBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgg
PSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+
bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0
ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi45OTE3MmM1NWE5Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAj
aW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZlRnJvbVZhbHVlLmgiCisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZvKiBnZXRC
aWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVyZSogUyAgICAgLy8gZnJv
bSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20gSlNPYmplY3QKIC8vICAg
ICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAgICBzaXplX3QgTAogLy8g
ICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFs
IG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKKy8vIFRoZXNlIGZpZWxk
cyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFr
ZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1YWxseSB1bnVzZWQgYnV0
IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0YSBmb3IKQEAgLTEwMywx
NCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxl
bWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAKLSAgICBzdGF0aWMg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6
ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVX
aXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgs
IHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0
aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlw
ZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShT
dHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAgICBz
aXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAg
ICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRWZWN0b3IoKSBjb25z
dApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAgfQogCi0gICAgYm9v
bCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3VuZHMoc2l6ZV90IGkp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhv
ZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1
bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0Cisg
ICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5Owog
ICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVl
IHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1
ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9CiAg
ICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZh
bHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3RvcigpW2ldOwogICAg
IH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAor
ICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRleFF1aWNrbHlBc05h
dGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05h
dGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCisgICAg
dm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAg
ICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBz
ZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldElu
ZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFs
dWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBp
LCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRp
dmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVl
KSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFs
dWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAg
ICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1Zh
bHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9B
ZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyBy
ZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7
IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZl
RnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVl
KTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5OCwyMSArMjA1LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlj
a2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGJvb2wgY2FuQWNjZXNz
UmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgewotICAgICAg
ICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5n
dGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAg
ICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1cm4gaXNTdW1TbWFs
bGVyVGhhbihvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBM
aWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0
aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0
ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFu
ZCBmYWxzZSBvbiBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2ls
bCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAg
ICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0Kiwgc2l6
ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBl
OjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRh
cHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJbXBsKCk7CkBAIC0zMTgsOCArMzIyLDggQEAg
cHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9u
IGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9yLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhl
ckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKKyAgICAgICAgc2l6ZV90IG9i
amVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUpOwogCiAgICAgLy8gVGhlIEVDTUEg
NiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5nIHBvaW50IFR5cGVkIEFycmF5cyBzaG91bGQgaGF2
ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgogICAgIC8vCkBAIC0zNDksNyArMzUzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHB1cmlmeUFycmF5KCkKICAgICB7CiAgICAgICAgIEVsZW1lbnRUeXBl
KiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGVuZ3Ro
OyBpKyspCiAgICAgICAgICAgICBhcnJheVtpXSA9IHB1cmlmeU5hTihhcnJheVtpXSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIzODc5MmQxMC4uMWViM2Qx
Nzg2MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9y
LmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBs
ZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2LDcgQEAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxl
bmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rv
cik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVk
IGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtOTksNyArMTAwLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
dGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90
aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
c2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3Ro
ZXIsCisgICAgc2l6ZV90IG90aGVyT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyArMjE5LDcgQEAgYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAg
fHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3RpbmdCdWZmZXIoKQogICAgICAgICB8
fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBvdGhlci0+
dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0KSB7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBzZXRJbmRl
eFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVy
QWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAg
ICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7
CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIp
IG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50
U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxl
bmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KSB7CiAg
ICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAg
IG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAog
ICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShp
ICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAgIC8v
IEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNl
ICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1
ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAg
IGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJhbnNmZXJCdWZmZXJb
aV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAg
ICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkp
OwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9yIChz
aXplX3QgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVW
YWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqIG9iamVj
dCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUp
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNPYmpl
Y3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUg
dHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjaSA9
IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlw
ZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2Fz
ZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAgICAg
IC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ugd2UncmUg
dGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90aGVyID0g
anNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAgbGVuZ3Ro
ID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAgLTMxMyw4
ICszMTQsMTAgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIFdlIGNvdWxkIG9wdGltaXpl
IHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9iamVjdE9mZnNldCk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIC8vIGdldCgp
IGZvciBub3cgcHJvYmFibHkgZG9lcyBub3QgZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBpbmRpY2Vz
IGFib3ZlIFVJTlRfTUFYLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbkJvdW5kczx1
bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmpl
Y3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zm
c2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhj
ZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBh
Z2VDb3VudC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4uMmE4NjM2MzFhYTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC05Niw3ICs5Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwog
cHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
TUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gcGFnZVNpemUpOwogCiAgICAgdWludDMyX3QgbV9wYWdl
Q291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggZmYxNTY1ZjExZGVk
Li44MWI4OWQ3MDQyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1l
dGljLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaApAQCAtMTQ0LDE0
ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENo
ZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2Us
IGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNlKSwg
Ym9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3NpZ25l
ZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3Np
Z25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9u
IHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAg
cmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAg
fQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25l
ZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHBy
ZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBXaGVu
IGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBh
IGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVl
IHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIg
dGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAg
IHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25z
dGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGhlIHVuc2ln
bmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQgc28g
bWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1ZSA8
PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkp
OwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9v
bCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNv
dXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNp
c2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxU
YXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUs
IHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2ln
biwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
OTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRl
ciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlzIHNh
ZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAtMjAy
LDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBncmVh
dGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5l
IGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgaXNJbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5
cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlu
cHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJj
ZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdldD4o
aW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiArOTk2LDEzIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhB
cmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092
ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJU
aGFuKFQgYSwgVCBiLCBUIGJvdW5kKQoreworICAgIENoZWNrZWQ8VD4gc3VtID0gYTsKKyAgICBz
dW0gKz0gYjsKKyAgICByZXR1cm4gIXN1bS5oYXNPdmVyZmxvd2VkKCkgJiYgc3VtLnZhbHVlKCkg
PCBib3VuZDsKK30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3
LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6
OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1
bU92ZXJmbG93czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbjsK
</data>
<flag name="review"
          id="462813"
          type_id="1"
          status="-"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="462814"
          type_id="3"
          status="-"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439218</attachid>
            <date>2021-09-24 17:12:19 -0700</date>
            <delta_ts>2021-09-27 10:38:50 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>147177</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5lOGRlYzg2MzQxOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEyNzUsNyArMTI3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZhbHVlID4g
MHhmZjsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzaG91bGRCbGluZFBvaW50ZXJGb3JTcGVjaWZp
Y0FyY2godWludHB0cl90IHZhbHVlKQorICAgIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kUG9p
bnRlckZvclNwZWNpZmljQXJjaCh1aW50cHRyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAo
c2l6ZW9mKHZvaWQqKSA9PSA0KQogICAgICAgICAgICAgcmV0dXJuIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOwpAQCAtMTQ2MCw2ICsxNDYw
LDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGFuZDY0KGltbS5hc1Ry
dXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQog
CiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAmJiAhQ1BVKEFSTTY0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCA0MjUwOTAzYmMzMjIuLmIzN2Y0ZDI4YmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTMzMDUsNiAr
MzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkp
OwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1
bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFk
ZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0Y2YyMjQw
ZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIsMTAgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFn
QXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wg
dmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3Ro
NjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkK
ICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhHUFIpOwor
ICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNjcmF0Y2gg
PSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwg
dGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApp
bmRleCBjY2UwZDAxZjQwMTcuLmQ3NzQ2OTk5YmUwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAt
MTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQg
c3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMgY29u
c3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVi
cDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJs
aW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAw
ZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRf
dCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdl
ciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCA2MzM1NjUy
ZmM1NDQuLjk2ZDYzZDAyNjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTA4Nyw2ICsxMDg3LDI0IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdp
c3RlcigpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChz
aG91bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVy
Rm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25z
dGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGlu
ZGluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2Ny
YXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNl
LCB3ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9w
cy4KKyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAg
ICAgICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFz
VHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5jbXBxX21yKHJpZ2h0Lm9mZnNldCwgcmlnaHQuYmFzZSwgbGVmdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXgg
MDgyNGU2ZWI5NWQyLi5jYWIzMzU4MDIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTExOTUsOCArMTE5NSwxNCBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNo
R1BSKTsKICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0eXBl
Rm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKSk7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBl
bmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6
QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNj
cmF0Y2hHUFIpOworICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5j
aDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikp
OworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAg
ICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IDA0YzEzYjk5YjAxZi4uNDljNDBjOGJhMmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCkBAIC0zNDg2LDYgKzM0ODYsMTcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50
NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZv
bGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUs
IG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JM
ZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9u
bHkpOwogICAgICAgICBicmVhazsKQEAgLTM4MjEsNiArMzgzMiwxOSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFs
dWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAg
ICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwg
U3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90
b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAm
IH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZS5jcHAKaW5kZXggNmUyNzUzMTA0YmQzLi4wNTliYTNmNmRjZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcApAQCAtMzI1LDYgKzMyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRB
cnJheXMsIHNvIHNob3VsZCBub3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlv
bgorICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlX
aXRoU3ByZWFkOiB7CiAgICAgICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0g
bm9kZS0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hh
dmluZ0FCYWRUaW1lV2F0Y2hwb2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1l
V2F0Y2hwb2ludChub2RlKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDAzOWU3NjlkY2U3Ny4uZTUyMzliODExZmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgy
MSwyMSArMzgyMSwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNT
RVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAg
IE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJy
YXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAg
ICAgICBOb2RlKiBsZW5ndGhOb2RlOworICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pKQorICAgICAgICAgICAgbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlM
ZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZW5hYmxlSW50NTIoKSk7CisgICAgICAgICAgICBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVh
ZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAgICAgIH0KICAgICAgICAgLy8gT3VyIEFycmF5
TW9kZSBzaG91bGRuJ3QgY2F1c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0
byBleGl0IHdpdGhvdXQgZWZmZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAg
ICBhZGRUb0dyYXBoKEV4aXRPSyk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAg
ICAgICAgIHNldChyZXN1bHQsIGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVj
YXVzZSB0eXBlZCBhcnJheXMgd2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAv
LyB0aGF0IG92ZXJmbG93cyBpbnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25z
dGFudChqc051bWJlcihsb2dTaXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgo
QXJpdGhCaXRMU2hpZnQsIGxlbmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBj
YW5ub3QgdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUg
YSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6
ZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1
bHQsIGFkZFRvR3JhcGgoQXJpdGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzg1Miw3ICszODU2LDEyIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5l
cmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGlj
dGlvbikpCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3Ro
LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhp
c05vZGUpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmFi
bGVJbnQ1MigpKTsKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlM
ZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwog
CkBAIC0zODcwLDcgKzM4NzksMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAg
ICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAot
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAg
ICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE9w
SW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9k
ZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuYWJsZUlu
dDUyKCkpOworICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVh
ZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRl
eCBhOGRkM2ZkZTk3NzkuLjU0OGJkMGVlZTllZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICAgICAgY2FzZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk6CiAgICAgICAgIGNh
c2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0
aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0
VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgIHJl
YWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVP
ZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwog
ICAgICAgICByZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYsMTQgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUy
OiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHJl
YWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQXJyYXlMZW5ndGhMb2Ms
IE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgQXJy
YXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNoIChtb2RlLnR5
cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXggYzY2ZmIyMjM5
ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaApA
QCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYK
IH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29uc3RleHByIGVu
YWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5Ny4uNjA5
ZmYwODU3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0x
OTcsMTAgKzE5NywxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdD
b2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4u
NzA3NTEzMjM1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNzE3LDEyICsxNzE3LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRU
aW1lKG5vZGUpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhO
b2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkg
eworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE0OSw3ICsyMTUzLDE4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6IHsKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUo
bV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1
bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUu
aXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUo
YXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQx
KCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CiAgICAg
ICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQwOTYsMTQgKzQxMTEsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgCiAgICAgICAgIG5vZGUtPmNoaWxkMigpID0gRWRnZShzdG9yYWdlKTsKICAgICB9
Ci0gICAgCi0gICAgTm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2lu
LCBOb2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKLSAgICB7Ci0gICAgICAgIE5vZGUq
IHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgb3JpZ2luLCBjaGlsZCwgbnVsbHB0ciwg
bGVuZ3RoTmVlZHNTdG9yYWdlKTsKLSAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgR2V0QXJy
YXlMZW5ndGgsIG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkp
LCBFZGdlKGNoaWxkLCBLbm93bkNlbGxVc2UpLCBFZGdlKHN0b3JhZ2UpKTsKLSAgICB9CiAKICAg
ICB2b2lkIGNvbnZlcnRUb0hhc0luZGV4ZWRQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAppbmRleCA0ZmFm
OTQ5YTc4NjAuLjJkODZlYjc1NzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdGlvbkluZm8uaApAQCAtMzksOCArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQg
c3RhdHVzIG9mIGxpdmUgdmFsdWVzIGR1cmluZyBjb2RlIGdlbmVyYXRpb24uCiAvLyBDYW4gcHJv
dmlkZSBpbmZvcm1hdGlvbiBhcyB0byB3aGV0aGVyIGEgdmFsdWUgaXMgaW4gbWFjaGluZSByZWdp
c3RlcnMsIGFuZCBpZiBzbyB3aGljaCwKIC8vIHdoZXRoZXIgYSB2YWx1ZSBoYXMgYmVlbiBzcGls
bGVkIHRvIHRoZSBSZWdpc3RlckZpbGUsIGFuZCBpZiBzbyBtYXkgYmUgYWJsZSB0byBwcm92aWRl
Ci0vLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5IChhbGwgdmFsdWVzIGFyZSBzcGls
bGVkIGluIGEgYm94ZWQgZm9ybSwgYnV0IHdlIG1heSBiZQotLy8gYWJsZSB0byB0cmFjayB0aGUg
dHlwZSBvZiBib3gpLCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2
YWx1ZSByZW1haW4sCisvLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5LCBhbmQgdHJh
Y2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCiAvLyBzbyB0
aGF0IHdlIGtub3cgd2hlbiB0aGUgdmFsdWUgaXMgZGVhZCBhbmQgdGhlIG1hY2hpbmUgcmVnaXN0
ZXJzIGFzc29jaWF0ZWQgd2l0aCBpdAogLy8gbWF5IGJlIHJlbGVhc2VkLgogY2xhc3MgR2VuZXJh
dGlvbkluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRl
Z2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEu
LjQzYjVkMTAxMmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTE0OTksNiAr
MTQ5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAg
ICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hp
cChSZWxhdGlvbnNoaXAobm9kZSwgbV96ZXJvLCBSZWxhdGlvbnNoaXA6OkdyZWF0ZXJUaGFuLCAt
MSkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmlu
ZGV4IDJhZjc5NzA2OGE5Yy4uZDEzZDM3ZjAyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJh
eVB1c2g6CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEhh
c0luZGV4ZWRQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4
QW5kTW9kZToKICAgICAgICAgY2FzZSBBcnJheUluZGV4T2Y6CkBAIC0yMDA0LDYgKzIwMDUsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAg
ICByZXR1cm4gMjsKIAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYs
NiArMjI3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNh
c2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0
aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0
VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5
MGE0Y2ZkYWM4Li43MjY0ZGMyZjU2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAg
IC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRo
ZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAz
MiBiaXRzLiAqLyBcCisgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0
SW50NTIpIFwKICAgICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAog
ICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAg
ICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRJbnQ1Mikg
XAogICAgIG1hY3JvKEdldFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2Nv
cGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKaW5kZXggOTU5MzRmMjkzY2I3Li4zMjAyZTc2NDFhOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBA
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KLWNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IHNpemUsIGNoYXIqIHZl
Y3RvcikKK2NoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBzaXplLCBj
aGFyKiB2ZWN0b3IpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCkBAIC0xODIsMTEgKzE4MiwxMyBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cgogICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiX3MpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCisgICAgc2l6ZV90IHVuc2lnbmVkU2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSk7CisKICAgICBpZiAodmVjdG9yKQotICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9y
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplLCB1bnRhZ0FycmF5UHRyKHZlY3Rvciwgc2l6
ZSkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVh
dGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXplLCB1
bnRhZ0FycmF5UHRyKHZlY3RvciwgdW5zaWduZWRTaXplKSkpOwogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBzaXplKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgdW5zaWduZWRTaXplKSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CkBA
IC0xOTA3LDcgKzE5MDksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
QXJyYXlCdWZmZXIsIEpTQ2VsbCosIChWTSogdm1Qb2ludGVyLCBTdHJ1YwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTE5MjMsNyArMTkyNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJ
bnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHM8SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE5MzksNyArMTk0MSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTU1LDcgKzE5NTcsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1
bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MzJBcnJh
eT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0
KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
MTk3MSw3ICsxOTczLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhD
bGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4Nyw3ICsxOTg5LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTIwMDMsNyArMjAwNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNVaW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29k
ZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDE5LDcgKzIwMjEsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDM1LDcg
KzIwMzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAw
LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMjA1MSw3ICsyMDUzLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0ds
b2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2Nyw3ICsyMDY5
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Jp
Z0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApp
bmRleCA4NWQ0MTY5ODE5MGEuLjY5NWY3ZTk1YmViOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5QXJy
YXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1
ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFy
KikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVk
SlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENs
YW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVk
SlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMy
X3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6
ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0Nl
bGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCmluZGV4IDg5ZTVlZjRkODUxZS4uMDZjZmYzNjAwYjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAg
ICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0
cmluZ0NvZGVQb2ludEF0OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9u
bHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRl
eCA5MjRmYzhjMzEwODYuLjViZDM3N2RhZjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTM3Myw2ICszNzMsNyBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBBcnJheVBv
cDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKQEAgLTM4NSw2ICszODYsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGJvb2wgaWdubwogCiAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50
NTI6CiAgICAgICAgIHJldHVybiAhKHN0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlw
ZSAmIH4oU3BlY1R5cGVkQXJyYXlWaWV3KSk7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEJ5
VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCAyNDZjMTZjNDg4ZTkuLjlhZjgxNmM3NzhkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyMzksMTYgKzMy
MzksMjggQEAgSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFy
cmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmUKICAgICBKU0FycmF5QnVmZmVyVmlldyog
dmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRl
LmZvck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJy
YXlNb2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZp
ZXctPmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAg
ICAgICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9k
ZSgpOwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5v
ZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50
Q29uc3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAg
ICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vs
c2UKICAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5n
dGgpKTsKKyNlbmRpZgogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIG1f
aml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRl
eEdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJy
YW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgaW5kZXhHUFIpCkBAIC03OTU0LDcgKzc5NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWdlVHlwZWRBcnJheVN0b3JhZ2UoR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBzdG9yYWdlUmVn
LCBibwogewogICAgIGF1dG8gdW50YWdBcnJheVB0ciA9IFsmXSgpIHsKICNpZiBDUFUoQVJNNjRF
KQotICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3RoMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzdG9y
YWdlUmVnLCB2YWxpZGF0ZUF1dGgpOworICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3Ro
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOwogI2Vsc2UKICAgICAg
ICAgVU5VU0VEX1BBUkFNKHZhbGlkYXRlQXV0aCk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiYXNl
UmVnKTsKQEAgLTgzMzYsMTIgKzgzNDgsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIGJhc2UpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRy
LCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkpKTsKKyNlbHNlCiAg
ICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisjZW5kaWYKICAg
ICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfSB9CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSWRlbnQo
Tm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmdPclN5bWJvbCh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMTEwNSwxMCArMTExMjMsMjAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAg
IGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOwogICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJh
eVR5cGUpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIAorCiAg
ICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBh
IENQVVJlZ2lzdGVyLCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBtX2ppdC5z
aWduRXh0ZW5kMzJUb1B0cihzaXplR1BSLCBzaXplR1BSKTsKKyNlbmRpZgorCisgICAgZW1pdE5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVj
dHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJy
YXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7
CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFn
ZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTI0LDYgKzEx
MTUyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6
ZShOb2RlKiBub2RlKQogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJh
eUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2gg
dGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJl
ci4KKyAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZp
ZXc6OmZhc3RTaXplTGltaXQpKTsKICAgICAKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0
Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0
eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTc5LDkgKzExMjA5LDE1IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9k
ZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQuc3RvcmU2NCgKKyAg
ICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICBtX2pp
dC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7Cisj
ZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBUcnVzdGVkSW1tMzIoRmFzdFR5cGVk
QXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAtMTQxNTYsNiArMTQxOTIsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9kZSkKICAg
ICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKG5v
ZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50NTJS
ZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBK
U1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGI2NTE1ZDhi
NzIxOS4uNmE2Mjc3NGNkZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMy
X3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUqKTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5
cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3Rl
cmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRB
cnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQg
Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAg
dm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fz
c2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3
Myw2ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9k
ZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqKTsK
KyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0MzUsNiArMTQ0Miw5IEBAIHB1
YmxpYzoKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJ
Zk91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0
T2ZCb3VuZHMpOwogICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQoTm9kZSopOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZv
aWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwg
Y29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERh
dGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0
QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUq
LCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRB
cnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxl
PEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBw
cmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJP
ckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQn
cyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fu
b25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJv
KS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJl
ZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5l
LiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2ln
bi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxv
YWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQp
LgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDUxZmUyZjRiYmUwZi4uMWMzMzRlNmJi
ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTM1MzQsNiArMzUzNCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAg
ICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJHQiBv
biAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21w
aWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjE2LDYgKzM2MjEsMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OiB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9m
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGRiNmM2YjI3OTg1Zi4uOTkzNThkMDhmNjk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNjkzLDYgKzI2OTMsODcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAg
ICB9IH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
ZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6
ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aEFz
SW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5hcnJheU1vZGUo
KS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBiYXNlKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCByZXN1bHRHUFIpOworICAgIHN0YXRpY19hc3NlcnQoTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDwg
KDF1bGwgPDwgNTIpLCAidGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIHNpemUgb2YgYSB0eXBlZCBh
cnJheSB3b24ndCBmaXQgaW4gYW4gSW50NTIiKTsKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHZlY3Rv
cih0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZGF0YSh0aGlzKTsKKworICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgdmVjdG9yR1BSID0gdmVjdG9yLmdwcigpOwor
ICAgIEdQUlJlZyBkYXRhR1BSID0gZGF0YS5ncHIoKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSB2
ZWN0b3JHUFIpOworICAgIEFTU0VSVChiYXNlR1BSICE9IGRhdGFHUFIpOworICAgIEFTU0VSVCh2
ZWN0b3JHUFIgIT0gZGF0YUdQUik7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRh
R1BSOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJh
bmNoMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9k
ZSgpKSwKKyAgICAgICAgVHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxl
cjo6SnVtcCBudWxsVmVjdG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwg
dmVjdG9yR1BSLCBUcnVzdGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRy
KCkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2Fn
ZVdpdGhvdXRVbnRhZ2dpbmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAgY2Fn
ZVR5cGVkQXJyYXlTdG9yYWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZB
cnJheUJ1ZmZlcigpKSwgYXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRz
IGNhZ2luZy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1NTE1CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1
ZmZlckdQUiwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYgQ1BV
KEFSTTY0RSkKKyAgICBtX2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRpZgor
CisgICAgbV9qaXQuc3ViUHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxl
cjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBudWxs
VmVjdG9yLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZt
X2ppdCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIp
OworCisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNTRVJU
KCFKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9yLmxp
bmsoJm1faml0KTsKKyNlbmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBu
b2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewog
ICAgIE5vZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTQzNzQsNiArNDQ1NSwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRB
cnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVu
Z3RoQXNJbnQ1MjoKKyAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsK
KyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGls
ZURlbGV0ZUJ5SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5Miw2ICs0NTc3LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAg
ICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBj
b21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4Miw3ICs1
NjcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRh
dGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRh
dGEuYnl0ZVNpemUgLSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdDEpOworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2Rl
LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgdDIsIHQxKSk7CiAKQEAgLTU3ODMsNyArNTg3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGlu
ZGV4R1BSLCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAg
IG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRP
ZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcApp
bmRleCA1ZjUxZjIyNTEwNGYuLjZiM2UyNTNlZjk5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzks
NiArMjc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAg
ICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUy
OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNl
IENoZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlOgpAQCAtMzU5LDYgKzM2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAg
ICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFy
cmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0
eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAg
IGNhc2UgTW92SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLmM5OTBkNTljYmE0NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
UmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRC
dXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgog
ICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0zOTEsNiAr
MzkyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50czoKICAgICBjYXNlIENQVUludHJp
bnNpYzoKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhB
c0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAg
ICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDY3N2FjYTQ0YmQ3ZS4uMDliNjhmNGJjZmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDI0
LDYgKzEwMjQsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAg
ICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICBjb21waWxlR2V0
QXJyYXlMZW5ndGhBc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBH
ZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTUwNDEsOCArNTA0NCw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9k
ZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigK
LSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAg
ICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBt
X291dC5hYm92ZU9yRXF1YWwobGVuZ3RoLCBtX291dC5jb25zdEludDY0KHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworICAgICAgICAgICAgICAgIHNldEludDMyKG1fb3V0
LmNhc3RUb0ludDMyKGxlbmd0aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtNTA1MSw2ICs1MDU1LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoKQor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVU
eXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQubG9hZDY0Tm9u
TmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZvaWQgY29tcGls
ZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+YXJyYXlN
b2RlKCkudHlwZSgpKSB7CkBAIC04MTU2LDk4ICs4MTY3LDE5IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlT
dHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgTFZh
bHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICAgICAgTEJh
c2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAg
IExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291
dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZlclZpZXc6
OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3Vh
bGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0gICAgICAg
ICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56
ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJy
YXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8
IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0g
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJf
dD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYWxs
b2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9
IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAgICAgICAg
ICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50
MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAgICAgICAg
ICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFy
cmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsKLSAgICAg
ICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9p
bnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRT
b21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBl
bmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3Rlcikp
OwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdw
cigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIo
KSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAg
ICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2Up
OworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1
ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7Ci0jZGVm
aW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAgICBjYXNlIFR5cGUg
IyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2Jq
ZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2Fz
ZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZPUl9FQUNIX1RZUEVE
X0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCi0j
dW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5cGVEYXRhVmll
dzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0Rh
dGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAgICAgICBt
X291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMy
KEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVuY2UoKTsKLSAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJl
c3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQotICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAg
ICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vU3Rv
cmFnZSwgaGF2ZVN0b3JhZ2UpOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6
ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAg
ICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHko
dHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAg
ICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAgICAg
ICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4g
UmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBs
b2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2Nh
dGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNb
Ml0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2l6
ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQg
PSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93U3RyaWN0SW50NTIo
bV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRl
clR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgZW1pdE5ld1R5
cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KICAgICAgICAgY2FzZSBV
bnR5cGVkVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQxKCkpOwogCkBAIC04MjY0LDcgKzgxOTYsMTAyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGVtaXRO
ZXdUeXBlZEFycmF5V2l0aFNpemUoVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBM
VmFsdWUgc2l6ZTY0Qml0cykKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdo
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291
dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAg
ICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQ2NChKU0FycmF5
QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAorICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNl
KSwgdXN1YWxseShzbWFsbEVub3VnaENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOworICAgICAg
ICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhl
IHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3Vu
ZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKyAgICAgICAg
TFZhbHVlIHNpemUgPSBtX291dC5jYXN0VG9JbnQzMihzaXplNjRCaXRzKTsKKworICAgICAgICBM
VmFsdWUgYnl0ZVNpemUgPQorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIo
c2l6ZSksIG1fb3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7
CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7CisgICAgICAg
ICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKKyAgICAgICAgICAgICAgICBtX291dC5hZGQo
Ynl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKKyAgICAgICAgICAgICAgICBtX291dC5j
b25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7CisgICAgICAgIH0KKworICAg
ICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7CisgICAgICAgIExWYWx1
ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKKworICAg
ICAgICBzcGxhdFdvcmRzKAorICAgICAgICAgICAgc3RvcmFnZSwKKyAgICAgICAgICAgIG1fb3V0
LmludDMyWmVybywKKyAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0
ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMpKSksCisgICAgICAgICAgICBtX291dC5pbnQ2NFpl
cm8sCisgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKKworI2lmIENQ
VShBUk02NEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQu
emVyb0V4dFB0cihzaXplKTsKKyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGlj
YXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKKyAgICAgICAgICAgIGF1dGhl
bnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3JhZ2UpOworICAgICAgICAgICAgYXV0aGVu
dGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxh
dGVSZWdpc3RlcikpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1sw
XS5ncHIoKSk7CisgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIo
KSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc3RvcmFn
ZSA9IGF1dGhlbnRpY2F0ZTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisKKyAgICAgICAgTFZh
bHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAodHlwZWRBcnJh
eVR5cGUpIHsKKyNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKKyAgICAgICAg
Y2FzZSBUeXBlICMjIG5hbWU6IFwKKyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9j
YXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBz
bG93Q2FzZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBGT1JfRUFDSF9UWVBFRF9B
UlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQorI3Vu
ZGVmIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRQorICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKKyAg
ICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0
cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX291dC5zdG9y
ZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFsdWUsIG1f
aGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMiht
X291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBz
LkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRW
YWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHN0b3Jh
Z2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdl
KTsKKworICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgICAgICBMVmFsdWUgc2xvd1Jl
c3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZl
Y3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJh
dG9yPiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZt
LAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JU
eXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmpl
Y3QsCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgc2l6ZTY0Qml0cywgc3RvcmFnZVZhbHVlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CiAgICAgICAgIExW
YWx1ZSBvYmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTU1NzYsNyArMTU2
MDMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5k
YXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0
cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5l
Z2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAg
ICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAg
ICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9v
dXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkp
OwpAQCAtMTU3MTksNyArMTU3NDYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0
YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3Ro
ID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9
IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0
UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAg
aW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChk
YXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTcyMjEsNyArMTcyNDgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAjaWYg
Q1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUp
IHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNp
emUgPSBtX291dC5sb2FkNjQoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
OwogICAgICAgICAgICAgICAgIHJldHVybiB1bnRhZ0FycmF5UHRyKHRhZ2dlZFB0ciwgc2l6ZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3V0cHV0LmgKaW5kZXggYTk0MjAwOTNmNTI5Li5lZDhmZjczZTFhM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMzI5LDYgKzMyOSw3IEBAIHB1Ymxp
YzoKICAgICBMVmFsdWUgbm9uTmVnYXRpdmUzMihMVmFsdWUgbG9hZEluc3RydWN0aW9uKSB7IHJl
dHVybiBsb2FkSW5zdHJ1Y3Rpb247IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoVHlw
ZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsgfQogICAgIExWYWx1
ZSBsb2FkMzJOb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVs
ZCkgeyByZXR1cm4gbG9hZDMyKGJhc2UsIGZpZWxkKTsgfQorICAgIExWYWx1ZSBsb2FkNjROb25O
ZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4g
bG9hZDY0KGJhc2UsIGZpZWxkKTsgfQogCiAgICAgTFZhbHVlIGVxdWFsKExWYWx1ZSwgTFZhbHVl
KTsKICAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVlLCBMVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKaW5kZXggOTRmN2FmZTExYTkxLi43
YTU2MDc1NjVkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmlu
c2ljRW1pdHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNF
bWl0dGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTc5LDIzICs3OSwzMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vz
c0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQog
CiAgICAgc3dpdGNoIChpbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aElu
dHJpbnNpYzogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwg
dmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAg
ICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKICAgICAgICAg
aml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRl
LnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJh
eUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwotCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVl
R1BSKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkKKyAgICAgICAgICAgIGpp
dC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7
CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hH
UFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkg
PiAxKSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3
ZSBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGlu
dDMyLgotICAgICAgICAgICAgaml0LmxzaGlmdDMyKHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50
U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRz
aGlmdCBoZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhh
dmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KKyAgICAgICAgICAgIGppdC5s
c2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAg
ICAgICAgIH0KLQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7Cisj
ZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTI2LDggKzEzNSwxMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJ
bnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQu
bW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAg
ICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3Rh
dGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZh
bHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCmluZGV4IGM5YjhmMmE3MTkxZS4uMmRjYzhhNGVhMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8
U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAot
U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRl
c3RydWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVz
dHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpA
QCAtNjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRz
KEFycmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlz
KTsKIH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24m
JiBkZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAs
IG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lk
IEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0K
IAotdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwg
c2l6ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXpl
ID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUg
LyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CisgICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92ZXJmbG93PiBzaXplSW5C
eXRlcyA9IG51bUVsZW1lbnRzOworICAgIHNpemVJbkJ5dGVzICo9IGVsZW1lbnRCeXRlU2l6ZTsK
KyAgICBpZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJbkJ5dGVzLnZhbHVl
KCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKKyAgICAgIHJlc2V0KCk7CisgICAgICByZXR1
cm47CiAgICAgfQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4o
bnVtRWxlbWVudHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAg
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90IGFsbG9j
YXRpb25TaXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXpl
KQogICAgICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFs
bHkgYWxsb2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8g
bWVhbiB0aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2ln
YWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0g
ICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERh
dGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAg
ICAgICByZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAg
ICAgICBtZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRl
cyA9IHNpemVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgp
OwogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9T
SVpFKTsKICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VE
ZXN0cnVjdG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9B
U1NFUlQob3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQog
Ci1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0K
IAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJj
ZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIGF1dG8g
YnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIp
CkBAIC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5
IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRX
YXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJl
YWR5IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkK
K1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCog
ZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFi
bGVkKCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAg
ICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6
cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwg
dW5zaWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9k
dWNlIGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBn
ZXQgYWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNo
b3VsZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9y
KQogewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0
aXZlLCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgp
OwpAQCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJu
IGNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNp
emVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVy
biB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250
ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAg
cmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsK
ICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9j
YXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsK
QEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJu
IGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwog
fQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxl
bWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxp
emUpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUp
CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJl
dHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlv
blBvbGljeSBwb2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVu
dHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2Niwx
NSArMjY0LDE3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNv
dXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9p
ZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGgg
fHwgc291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIo
V1RGTW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwg
Ynl0ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJj
ZSk7CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsK
KyAgICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGlj
eSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMg
Y29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRC
eXRlU2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlC
dWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBB
cnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQg
cmlnaHQpCitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBs
ZWZ0LCBzaXplX3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlm
ICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xh
bXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0
dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRl
eCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNv
bnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBz
aXplX3QgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQog
ICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBW
YWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAg
IHJldHVybiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5n
dGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENs
YW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdp
biwgc2l6ZV90IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5k
ID8gZW5kIC0gYmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5k
IC0gYmVnaW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAo
cmVzdWx0KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkw
ZTEzZWJhLi5jMmI0NGMyNDJiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisj
aWYgQ1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFICgxdWxsIDw8
IDMyKQorI2Vsc2UKKy8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2l6ZV90IHRvIHN0b3JlIHRo
ZSBzaXplIGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRHQiBv
biAzMi1iaXQgcGxhdGZvcm1zLgorLy8gTm90ZSB0aGF0IHN0b3JpbmcgdGhlIHNpemUgaW4gYSB1
aW50NjRfdCB3b3VsZCBiZSBxdWl0ZSBtZXNzeSBvbiAzMi1iaXRzIGFzIHRoZSBKSVQgaGF2ZSB0
byBiZSBhYmxlIHRvIG1hbmlwdWxhdGUgaXQuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAy
R0IuIEl0IHNob3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdC
IC0gMUIpIGlmIGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4
N2ZmZmZmZmZ1CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUx
LDcgKzU4LDcgQEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQ
YWNrZWRSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYm
KTsKKyAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXpl
LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZm
ZXJDb250ZW50cygpOwogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0ZXMpOyB9CkBAIC02MCwxNCArNjcsMTQgQEAgcHJp
dmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUs
IHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1f
c2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJh
eUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNv
bnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRl
bnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24m
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwog
ICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZm
ZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRz
JiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKQEAgLTc5LDcgKzg2LDcgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQog
ICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxs
KHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7
IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApAQCAtOTQsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgRG9udEluaXRpYWxpemUKICAgICB9OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlv
blBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZv
aWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgdHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRz
Jik7CkBAIC0xMDUsMjggKzExMiwyOCBAQCBwcml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsK
ICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAg
ICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAg
IHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9Owog
CiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1
ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZl
ciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1
bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUo
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1
ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9y
IHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hh
cmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBp
bmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7
Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6
ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAg
ICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcg
KzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFt
cGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6
ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4o
KTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTYxLDEyICsxNjgsMTIgQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQq
KT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGlj
eSk7Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZm
ZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7
CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXph
dGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwo
QXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGlu
ZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25l
ZCByaWdodCk7CisgICAgaW5saW5lIHNpemVfdCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29u
c3Q7CisgICAgc3RhdGljIGlubGluZSBzaXplX3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90
IGxlZnQsIHNpemVfdCByaWdodCk7CiAKICAgICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwog
CkBAIC0xOTIsNyArMTk5LDcgQEAgY29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25z
dAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRhdGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZm
ZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1
LDcgKzIxMiw3IEBAIGJvb2wgQXJyYXlCdWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBB
cnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogV2UgcHJvYmFibHkgd2FudCB0byBzY2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50
IG9yIHNvbWV0aGluZy4KLSAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19j
YXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVy
KSArIGJ5dGVMZW5ndGgoKTsKIH0KIAogdm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2
OGZlYTkwOWJhYi4uNDczNzIyNzQ1MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmll
dzo6QXJyYXlCdWZmZXJWaWV3KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQog
ICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hh
YmxlKHRydWUpCiAgICAgICAgICwgbV9ieXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwg
bV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNo
T25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFz
aE9uT3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0
aDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8
PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3
NzhhOS4uNmM0NzhiMWViMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFy
cmF5VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAK
LSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVf
dCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFj
aGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4
IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZp
ZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGln
bmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQg
Ynl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNl
dEFsaWdubWVudChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1
cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRTaXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhl
bHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBp
cwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxl
bmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0
aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4K
KyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxl
bWVudFNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5
dGVMZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0
aCgpOwogICAgICAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVM
ZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVt
ZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9mZnNldCkgLyBlbGVtZW50U2l6ZTsKICAgICAgICAg
aWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJh
eUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6
ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZp
ZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5
QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJh
bmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBp
bmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBs
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zm
c2V0KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNl
dCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2Fs
Y3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2ln
bmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0
aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6
ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVy
IG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNl
dCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3
LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0
QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAg
ICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwK
LSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRl
T2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVt
ZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFy
cmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAo
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBz
aXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAg
ICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50
cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9
IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQg
PSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWdu
ZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8g
c2l6ZW9mKFQpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zm
c2V0OworICAgICAgICBhZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVz
dGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0
Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVM
ZW5ndGgoKSkKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsK
KyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkg
LSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4o
cmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQg
bV9ieXRlT2Zmc2V0IDogMzE7CisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICBzaXplX3QgbV9ieXRl
T2Zmc2V0IDogNjM7CisjZWxzZQorICAgIHNpemVfdCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNlbmRp
ZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVkIG1fYnl0ZUxlbmd0
aDsKKyAgICBzaXplX3QgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNpbmcgQmFzZUFkZHJlc3MgPSBD
YWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgLy8g
VGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIncyBzdG9yYWdlLCBwbHVzIHRo
ZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJ
bXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFy
cmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCBzaXplX3QgYnl0
ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKLSAg
ICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1T
bWFsbGVyVGhhbihieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRlTGVuZ3RoKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFz
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJh
c2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgo
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5n
ZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lk
KiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAg
IGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBk
YXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0
YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZz
ZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNldCwgZGF0
YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CiAKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNz
KCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3Ro
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdl
SW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAg
ICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsg
ZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRh
dGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zm
c2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGRh
dGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQogCiAgICAgY29uc3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9m
ZnNldCwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5
QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFu
Z2VCeXRlTGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZz
ZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0
aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3Ro
IDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJm
bG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIHJhbmdlQnl0ZUxlbmd0
aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwog
ICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7
CiAgICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0
QW5kTGVuZ3RoKAotICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1
bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQotewotICAgIGlmIChzdGFydCA8IDAp
Ci0gICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAg
ICBzdGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCArPSBhcnJheVNpemU7
Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAgICBlbmQgPSBhcnJheVNpemU7Ci0g
ICAgaWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBzdGFydDsKLSAgICAqb2Zmc2V0ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIHVzaW5n
IEpTQzo6QXJyYXlCdWZmZXJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2NGFmMi4uZmJjOTg0N2QyZDViIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIwICszMiwyMCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitE
YXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1v
dmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3
PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0
ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZm
ZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwg
Ynl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5o
CmluZGV4IGRhMDZiNGJiMjE0NC4uMzQwMjY1NDEwMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGlj
OgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAg
IHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogICAg
IAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3Rh
dHVzID0gbnVsbHB0cikKKyAgICBUIGdldChzaXplX3Qgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlh
biwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsK
ICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAg
LTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9v
bCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQoc2l6ZV90JiBvZmZzZXQsIGJvb2wgbGl0
dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgVCByZXN1
bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7
CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMpCkBAIC02OCw3ICs2OCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1
bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMg
PSBudWxscHRyKQorICAgIHZvaWQgc2V0KHNpemVfdCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0
dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0
YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgo
KSkgewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERh
dGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uZjQ5MzcwZmNhYjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVm
ZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
Y3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CisgICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShzaXplX3QgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
KGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAg
Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKj4oYmFzZUFkZHJlc3MoKSk7IH0KICAgICAKQEAgLTY1LDI2ICs2NSwyNiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsgemVyb1JhbmdlKDAsIGxlbmd0aCgp
KTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CisgICAgc2l6ZV90IGxlbmd0
aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRlTGVuZ3RoKCkgLyBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbShz
aXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuIGRhdGEo
KVtpbmRleF07CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3Vi
bGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXQoc2l6ZV90IGluZGV4LCBkb3VibGUgdmFsdWUp
IGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
bmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IEFkYXB0b3I6
OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXROYXRpdmUo
dW5zaWduZWQgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CisgICAg
dm9pZCBzZXROYXRpdmUoc2l6ZV90IGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVl
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
aW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1ZTsK
QEAgLTEwMCwxNiArMTAwLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjaGVja0luYm91bmREYXRh
KHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25zdAogICAgIHsKLSAgICAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0IDw9
IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPD0gbGVuZ3RoCi0gICAgICAg
ICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPj0g
b2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW4ob2Zmc2V0LCBjb3VudCwg
dGhpcy0+bGVuZ3RoKCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0gICAgCiAg
ICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBy
ZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzExMSw3IEBAIHB1YmxpYzoKICAg
ICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0
KikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uNTQyOTgwYWU2NGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAg
ICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAq
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAv
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNp
ZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAg
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKFdURk1v
dmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0LDcgKzc1LDcgQEAgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJy
YXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
cmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04NSw3ICs4
Niw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0
aCkKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAs
NyArMTAxLDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVk
KGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBA
QCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpKTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4g
dHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1H
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QK
LXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50
IGVuZCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxh
dGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZs
ZW5ndGgpOwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigp
OwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRh
cHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAg
ICByZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2Mu
LmYwNzQwY2I2ZDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8g
SlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1
cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1
Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRT
aXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHNp
emVfdCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1vZGUgbW9kZSkKICAgICA6IG1f
c3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC04MSwxOCArODEs
MTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBEb24ndCBhbGxvdyBh
IHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAgIGlmIChsZW5ndGggPiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6ZSkKKyAgICBDaGVja2VkPHNp
emVfdD4gc2l6ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9IGVsZW1lbnRTaXplOworICAgIGlmIChz
aXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzdGF0aWNfY2FzdDxz
aXplX3Q+KGVsZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3RoKTsKKworICAgIG1f
dmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHNpemUudmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3RvcikKICAgICAgICAg
cmV0dXJuOwogICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBtZW1zZXQodmVjdG9y
KCksIDAsIHNpemUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0
ZWQoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUpOworICAgIHZtLmhl
YXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsKICAgICAKICAgICBt
X3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6ZVR5cGVkQXJyYXk7
CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVu
Z3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQsNyAr
MTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVj
dGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpD
b25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAs
IG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUpCkBAIC0yMzgsOSAr
MjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpTVHlwZSB0eXBlKQog
ICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5cGVdOwogfQogCi11
bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitzaXplX3QgSlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAgIHJlc3VsdCAqPSBl
bGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKKyNlbHNlCisg
ICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVja2VkIGluIHRoZSBj
b25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNoZWNrIHdoZW4gYXNz
ZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVtZW50U2l6ZSh0eXBl
KCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlCdWZmZXIqIEpTQXJy
YXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwor
ICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAgICAgc3dpdGNo
IChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0zMTYsNyArMzIzLDcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hh
cmVkSW1wbCgpCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQg
bGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMtPmxlbmd0
aCgpOwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAg
IGNhc2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uZGE2ZGQwYmQ3
NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmYXN0
U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZv
aWQqIG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qg
c2l6ZU9mKHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGlj
IHNpemVfdCBzaXplT2Yoc2l6ZV90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCiAgICAg
ewotICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRT
aXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0g
bGVuZ3RoOworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCAr
PSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1
ZSgpICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBA
IC0xMzYsMjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVt
IEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAg
ICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0
cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxp
emF0aW9uTW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3Ry
dWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHNpemVfdCBlbGVt
ZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAg
ICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0
J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250
ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAg
Q29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0
b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYm
LAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgICAgICAK
ICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVj
dGlvbkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERh
dGFWaWV3VGFnKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5n
dGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9CiAgICAgICAgIHZvaWQq
IHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChtX2xlbmd0aCk7
IH0KLSAgICAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0K
KyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAg
ICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICAg
ICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVybiBtX2J1dHRlcmZseTsgfQog
ICAgICAgICAKQEAgLTE2Miw3ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cnVjdHVy
ZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgIHVzaW5nIFZlY3RvclR5cGUgPSBDYWdlZFB0cjxHaWdh
Y2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgICAgIFZlY3RvclR5cGUg
bV92ZWN0b3I7Ci0gICAgICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgICAgICBzaXplX3QgbV9s
ZW5ndGg7CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKICAgICAgICAgQnV0dGVyZmx5
KiBtX2J1dHRlcmZseTsKICAgICB9OwpAQCAtMTkzLDggKzE5NSw4IEBAIHB1YmxpYzoKICAgICBp
bmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwogICAgIGlubGluZSBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdDsKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAg
ICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
ICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQXJyYXlCdWZmZXIqIGV4
aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3RvclB0ciBtX3ZlY3RvcjsKLSAg
ICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9sZW5ndGg7CiAgICAgVHlwZWRBcnJh
eU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi45OTIyZmZkYjU3YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aApAQCAtNjksMTMgKzY5LDE1IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gYXNJbnQzMigpOworCiAgICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAi
IHRvbyBsYXJnZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChpc0lu
dDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQy
LDcgKzQyLDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNv
bnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRh
Vmlldzo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAs
MjUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qp
CiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNl
dChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25l
ZCkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVj
dCosIHNpemVfdCwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChK
U0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5lYzJhZjY5ODIzOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNBcnJheUJ1ZmZlclZpZXc7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IDE7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZWxlbWVudFNpemUgPSAxOwogCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBUeXBlZEFycmF5Q29udGVudFR5cGUgY29udGVudFR5cGUgPSBUeXBlZEFycmF5
Q29udGVudFR5cGU6Ok5vbmU7CiAKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgICAg
ICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6
ZV90IGJ5dGVPZmZzZXQsCisgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoKTsKICAgICAKICAgICAv
LyBEdW1teSBtZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3b3JrOyB0aGVzZSBhcmUganVz
dCBpbiBwbGFjZSB0bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlv
biB3ZSBkbyBlbHNld2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQs
IEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXRJbmRl
eChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSlNEYXRh
VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9i
amVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCBsZW5ndGgpOworICAgIGJv
b2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUpOwogICAgIAogICAg
IEFycmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAK
aW5kZXggOTQ5MDYyNDdlYTY1Li5lMGZiYzUyZjg3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDEx
ICsxMzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIg
b2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5z
aWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxP
YmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJv
b2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYg
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBsaXR0bGVFbmRpYW4g
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihnbG9iYWxPYmplY3Qp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
QEAgLTE0OSw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+
aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9t
IHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVu
Z3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAg
aWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAt
IGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApAQCAtMTgyLDcgKzE4Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFW
aWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAi
Ynl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVk
IGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwpAQCAtMTk1LDcgKzE5
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsK
LSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSA+PSAzKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMikudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFy
cmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxl
bmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVu
Z3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5k
cyBhY2Nlc3MiX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4MWQuLjk5MTcyYzU1
YTljZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRp
dmVGcm9tVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19FWFBPUlRfUFJJVkFURSBjb25z
dCBDbGFzc0luZm8qIGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZvKCk7CiAvLyAgICAgU3RydWN0
dXJlKiBTICAgICAvLyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRlcmZseSogQiAgICAgLy8gZnJv
bSBKU09iamVjdAogLy8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAgICAgdWludDMyX3QgTAorLy8g
ICAgIHNpemVfdCBMCiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8vIFRoZXNlIGZpZWxk
cyB0YWtlIHVwIGEgdG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFr
ZQorLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBvaW50ZXItd2lkdGgg
d29yZHMuIEZJWE1FOiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAvLwogLy8gQiBpcyB1
c3VhbGx5IHVudXNlZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwgIm92ZXJmbG93IiBk
YXRhIGZvcgpAQCAtMTAzLDE0ICsxMDQsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KTsKIAotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwotICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
Jiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0YXRpYyBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1l
IEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKTsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KICAgICBzaXplX3QgYnl0ZVNp
emUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiB0
eXBlZFZlY3RvcigpIGNvbnN0CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsK
ICAgICB9CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBp
bkJvdW5kcyhzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5n
dGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2ggaW5k
ZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBoZW5j
ZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5z
aWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShzaXplX3QgaSkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9yOjpjYW5Db252
ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHko
c2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8
IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNR
dWlja2x5OwogICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4
UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoc2l6ZV90IGkpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHR5cGVk
VmVjdG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIsIGdl
dEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNl
dEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoc2l6ZV90
IGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQo
aSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVlOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
KQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgc2V0SW5kZXhR
dWlja2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPih2YWx1ZSkp
OwogICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29sIHNldEluZGV4KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAg
ICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSArMTc3LDE1IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIEVsZW1lbnRU
eXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGds
b2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9y
TmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNW
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihn
bG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNW
YWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxB
ZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBl
PiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9u
PEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpAQCAt
MTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBj
YW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisg
ICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAg
ICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3Zl
cmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAg
IHJldHVybiBpc1N1bVNtYWxsZXJUaGFuKG9mZnNldCwgbGVuZ3RoLCBtX2xlbmd0aCk7CiAgICAg
fQogICAgIAogICAgIC8vIExpa2UgY2FuU2V0UXVpY2tseSwgZXhjZXB0OiBpZiBpdCByZXR1cm5z
IGZhbHNlLCBpdCB3aWxsIHRocm93IHRoZQogICAgIC8vIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4K
LSAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0
Kiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCByZXR1cm5zIGZhbHNlCiAg
ICAgLy8gdGhlbiBpdCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4KLSAgICBib29sIHNl
dChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBv
YmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpV
bm9ic2VydmFibGUpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNl
dCwgSlNPYmplY3QqLCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlw
ZSB0eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAg
LTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNz
ZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlw
ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCos
IHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAor
ICAgICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAK
ICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQg
QXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0
OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAg
ICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFO
KGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUw
MjM4NzkyZDEwLi4xZWIzZDE3ODYxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIKICNp
bmNsdWRlICJUeXBlRXJyb3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KAog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUsNyAr
NjYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCog
dmVjdG9yKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1
cmUsIGxlbmd0aCwgdmVjdG9yKTsKQEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVX
aXRoRmEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05OSw3ICsxMDAsNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTQ1LDcgKzE0Niw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQgb3RoZXJP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxP
dGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVfdCBsZW5n
dGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3ICsyMTks
NyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lm
aWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlzdGluZ0J1
ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplICYmIHZl
Y3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5VHlwZTo6
TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAg
b2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAg
ICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkg
KyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8gTm93IHdl
IGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVyICgyQiku
CiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBs
ZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUo
CiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252
ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNr
bHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5LDExIEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5
cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJhbnNmZXIg
YnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVu
Z3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAg
ICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFk
YXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUo
aSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsg
aS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBzZXRJbmRl
eFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ldKTsKICAg
ICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0
LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXpl
X3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBjb25z
dCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChjaS0+dHlw
ZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAgICAvLyBU
aGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUgdGhlIHNh
bWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVt
bW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3Qp
OwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgoKSk7CiAg
ICAgICAgIApAQCAtMzEzLDggKzMxNCwxMCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8g
V2UgY291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zm
c2V0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgLy8gZ2V0KCkgZm9yIG5vdyBwcm9iYWJseSBkb2VzIG5vdCBkbyB0aGUgcmlnaHQg
dGhpbmcgZm9yIGluZGljZXMgYWJvdmUgVUlOVF9NQVguCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0luQm91bmRzPHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05f
QVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi4yYTg2MzYzMWFh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTk2
LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYWdl
U2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8IDMyKSAvIHBhZ2VT
aXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJWkUgLyBwYWdlU2l6ZSk7CiAKICAg
ICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaApp
bmRleCBmZjE1NjVmMTFkZWQuLjkzZjA2YzlkNWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+
PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5C
b3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhT
b3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGlj
aXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRl
c3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFy
Z2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0
cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAg
ICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwg
YWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0g
c3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHND
aGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFs
c2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2
YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAg
ICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFz
IFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0
cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAg
ICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0
aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAg
ICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+
IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29u
c3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3Jl
YXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyAr
MTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1
Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3Vy
Y2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAg
ICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMg
c2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRl
ciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVv
ZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMg
dW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49
IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291
cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3Rl
eHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0No
ZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZl
cnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBj
b252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFp
c0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYs
NiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wg
cHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0
PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBpc1N1bVNtYWxsZXJUaGFuKFQgYSwgVCBiLCBUIGJvdW5kKQoreworICAgIENoZWNrZWQ8
VD4gc3VtID0gYTsKKyAgICBzdW0gKz0gYjsKKyAgICByZXR1cm4gIXN1bS5oYXNPdmVyZmxvd2Vk
KCkgJiYgc3VtLnZhbHVlKCkgPCBib3VuZDsKK30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5v
T3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVy
Zmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxv
d3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhh
bjsK
</data>
<flag name="commit-queue"
          id="462823"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439369</attachid>
            <date>2021-09-27 10:38:50 -0700</date>
            <delta_ts>2021-09-30 17:01:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>148039</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5lOGRlYzg2MzQxOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEyNzUsNyArMTI3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZhbHVlID4g
MHhmZjsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzaG91bGRCbGluZFBvaW50ZXJGb3JTcGVjaWZp
Y0FyY2godWludHB0cl90IHZhbHVlKQorICAgIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kUG9p
bnRlckZvclNwZWNpZmljQXJjaCh1aW50cHRyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAo
c2l6ZW9mKHZvaWQqKSA9PSA0KQogICAgICAgICAgICAgcmV0dXJuIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOwpAQCAtMTQ2MCw2ICsxNDYw
LDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGFuZDY0KGltbS5hc1Ry
dXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQog
CiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAmJiAhQ1BVKEFSTTY0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCA0MjUwOTAzYmMzMjIuLmIzN2Y0ZDI4YmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTMzMDUsNiAr
MzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkp
OwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1
bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFk
ZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0Y2YyMjQw
ZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIsMTAgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFn
QXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wg
dmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3Ro
NjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkK
ICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhHUFIpOwor
ICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNjcmF0Y2gg
PSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwg
dGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApp
bmRleCBjY2UwZDAxZjQwMTcuLmQ3NzQ2OTk5YmUwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAt
MTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQg
c3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMgY29u
c3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVi
cDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJs
aW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAw
ZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRf
dCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdl
ciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCA2MzM1NjUy
ZmM1NDQuLjg3MmRhZjZhMjAzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTA4Nyw2ICsxMDg3LDI0IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdp
c3RlcigpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChz
aG91bGRCbGluZEZvclNwZWNpZmljQXJjaChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChoYXZl
U2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRSb3Rh
dGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQpLCBzY3JhdGNo
UmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQo
Y29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJlZ2lzdGVyIGF2
YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFjZSBhIHJhbmRv
bSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9t
KCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAgICAgICAgICAg
bm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNU
cnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNo
NjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mgcmln
aHQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX21yKHJpZ2h0Lm9mZnNldCwgcmln
aHQuYmFzZSwgbGVmdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKaW5kZXggMDgyNGU2ZWI5NWQyLi5jYWIzMzU4MDIzMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTExOTUsOCArMTE5NSwx
NCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBqaXQubG9h
ZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFu
Y2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKSk7CiAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90LCBzbyBlaXRoZXIgMzIg
b3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBqaXQubG9hZDY0
KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5h
cHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQ
Uiwgc2NyYXRjaEdQUikpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFu
Y2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIp
KTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Io
c3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LmJhc2VSZWdzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDA0YzEzYjk5YjAxZi4uNDljNDBj
OGJhMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDg2LDYgKzM0ODYsMTcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRB
cnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBt
X2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsK
KyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZv
ck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAg
Y2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM4MjEsNiArMzgzMiwxOSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVm
ZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJy
ZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAh
KHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5p
dGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNmUyNzUzMTA0YmQzLi4wNTliYTNmNmRj
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtMzI1LDYgKzMyNSwxMSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG9ubHkg
dXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBub3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3Vt
ZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQy
KCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAg
IGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAgICAgICAgICAgICAgICAgIEJpdFZlY3Rv
ciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCA9IG1fZ3JhcGguaXNXYXRjaGlu
Z0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDAzOWU3NjlkY2U3Ny4uZTUyMzli
ODExZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtMzgyMSwyMSArMzgyMSwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwog
ICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAg
IH0pOwogCi0gICAgICAgIE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVu
Z3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwg
dGhpc05vZGUpOworICAgICAgICBOb2RlKiBsZW5ndGhOb2RlOworICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgbGVuZ3RoTm9kZSA9IGFkZFRv
R3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6
UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7CisgICAgICAgICAgICBsZW5ndGhOb2RlID0g
YWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlU
eXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAgICAgIH0KICAgICAg
ICAgLy8gT3VyIEFycmF5TW9kZSBzaG91bGRuJ3QgY2F1c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdl
IHNob3VsZCBiZSBvayB0byBleGl0IHdpdGhvdXQgZWZmZWN0cy4KICAgICAgICAgbV9leGl0T0sg
PSB0cnVlOwogICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CiAKLQogICAgICAgICBpZiAoIWxv
Z1NpemUpIHsKICAgICAgICAgICAgIHNldChyZXN1bHQsIGxlbmd0aE5vZGUpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXZSBjYW4gdXNlIGEgQml0
TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgd2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxl
bmd0aAotICAgICAgICAvLyB0aGF0IG92ZXJmbG93cyBpbnQzMi4KLSAgICAgICAgTm9kZSogc2hp
ZnROb2RlID0ganNDb25zdGFudChqc051bWJlcihsb2dTaXplKSk7Ci0gICAgICAgIHNldChyZXN1
bHQsIGFkZFRvR3JhcGgoQXJpdGhCaXRMU2hpZnQsIGxlbmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOwor
ICAgICAgICAvLyBXZSBjYW5ub3QgdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBh
cnJheXMgbWF5IGhhdmUgYSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIEludDMyLgorICAgICAg
ICBOb2RlKiB0eXBlU2l6ZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSA8PCBsb2dTaXplKSk7Cisg
ICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVT
aXplKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzg1Miw3ICszODU2LDEy
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJl
c3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBl
ICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwg
YWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFy
cmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGlmIChpc0ludDMyU3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBo
KEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQp
LmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChlbmFibGVJbnQ1MigpKTsKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRv
R3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiB0cnVlOwogCkBAIC0zODcwLDcgKzM4NzksMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNX
b3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVuYWJsZUludDUyKCkpOworICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFw
aChHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlU
eXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjU0OGJkMGVlZTllZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVy
dHk6CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAg
ICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAg
ICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50
NTI6CiAgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24o
VHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6
eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYsMTQgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlN
b2RlKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXco
KSk7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24o
QXJyYXlMZW5ndGhMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9k
ZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6
IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAg
c3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgK
aW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5h
YmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJv
b2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3
MGE0ODU0N2E5Ny4uNjA5ZmYwODU3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoK
ICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAg
ICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2Ug
R2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9m
ZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4
IDhlMWI5M2VlZTZjYS4uNTFlY2QyNjQwNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDczLDcgKzEwNzMsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBE
b24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZlIG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2Rl
LgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXRSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkg
dG8gZG8gdGhpcy4uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IEVudW1lcmF0b3JHZXRCeVZhbCkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhUeXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzE3LDEyICsxNzE3LDE2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OiB7CiAgICAgICAgICAgICB3YXRj
aEhhdmluZ0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+
Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlSW50NTIoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2Vu
ZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE0OSw3ICsyMTUzLDE4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFz
SW50NTI6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1v
ZGUoKS5yZWZpbmUobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwg
QXJyYXlNb2RlOjp1bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VS
VChhcnJheU1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5z
ZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24o
bm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFn
ZSk7CisKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQ6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyOiB7CiAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQwOTYsMTQgKzQxMTEsNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIG5vZGUtPmNoaWxkMigpID0gRWRnZShzdG9y
YWdlKTsKICAgICB9Ci0gICAgCi0gICAgTm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3RoKE5vZGVP
cmlnaW4gb3JpZ2luLCBOb2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKLSAgICB7Ci0g
ICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgb3JpZ2luLCBjaGls
ZCwgbnVsbHB0ciwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKLSAgICAgICAgcmV0dXJuIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMy
T25seSwgR2V0QXJyYXlMZW5ndGgsIG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBFZGdlKGNoaWxkLCBLbm93bkNlbGxVc2UpLCBFZGdlKHN0b3JhZ2UpKTsK
LSAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRUb0hhc0luZGV4ZWRQcm9wZXJ0eShOb2RlKiBub2Rl
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJh
dGlvbkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8u
aAppbmRleCA0ZmFmOTQ5YTc4NjAuLjJkODZlYjc1NzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaApAQCAtMzksOCArMzksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gdHJhY2sg
dGhlIGN1cnJlbnQgc3RhdHVzIG9mIGxpdmUgdmFsdWVzIGR1cmluZyBjb2RlIGdlbmVyYXRpb24u
CiAvLyBDYW4gcHJvdmlkZSBpbmZvcm1hdGlvbiBhcyB0byB3aGV0aGVyIGEgdmFsdWUgaXMgaW4g
bWFjaGluZSByZWdpc3RlcnMsIGFuZCBpZiBzbyB3aGljaCwKIC8vIHdoZXRoZXIgYSB2YWx1ZSBo
YXMgYmVlbiBzcGlsbGVkIHRvIHRoZSBSZWdpc3RlckZpbGUsIGFuZCBpZiBzbyBtYXkgYmUgYWJs
ZSB0byBwcm92aWRlCi0vLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5IChhbGwgdmFs
dWVzIGFyZSBzcGlsbGVkIGluIGEgYm94ZWQgZm9ybSwgYnV0IHdlIG1heSBiZQotLy8gYWJsZSB0
byB0cmFjayB0aGUgdHlwZSBvZiBib3gpLCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5n
IHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCisvLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVt
b3J5LCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1h
aW4sCiAvLyBzbyB0aGF0IHdlIGtub3cgd2hlbiB0aGUgdmFsdWUgaXMgZGVhZCBhbmQgdGhlIG1h
Y2hpbmUgcmVnaXN0ZXJzIGFzc29jaWF0ZWQgd2l0aCBpdAogLy8gbWF5IGJlIHJlbGVhc2VkLgog
Y2xhc3MgR2VuZXJhdGlvbkluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAx
YmFhMWM4YmNmNTEuLjQzYjVkMTAxMmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAK
QEAgLTE0OTksNiArMTQ5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgICAgIHNl
dFJlbGF0aW9uc2hpcChSZWxhdGlvbnNoaXAobm9kZSwgbV96ZXJvLCBSZWxhdGlvbnNoaXA6Okdy
ZWF0ZXJUaGFuLCAtMSkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4uZDEzZDM3ZjAyZDdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAg
ICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFbnVtZXJhdG9yTmV4
dFVwZGF0ZUluZGV4QW5kTW9kZToKICAgICAgICAgY2FzZSBBcnJheUluZGV4T2Y6CkBAIC0yMDA0
LDYgKzIwMDUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6
CiAgICAgICAgICAgICByZXR1cm4gMjsKIAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0
eToKQEAgLTIyNzYsNiArMjI3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7
CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAg
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAg
IGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li43MjY0ZGMyZjU2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJ
bnQzMikgXAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFz
IHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMg
bm90IGZpdCBpbiAzMiBiaXRzLiAqLyBcCisgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGhBc0ludDUy
LCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1
bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0
SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVS
ZXN1bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOTU5MzRmMjkzY2I3Li4zMjAyZTc2NDFhOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMTc0
LDcgKzE3NCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0QnlWYWxDZWxsU3RyaW5n
SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KLWNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IHNp
emUsIGNoYXIqIHZlY3RvcikKK2NoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdp
c3RlciBzaXplLCBjaGFyKiB2ZWN0b3IpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCkBAIC0xODIsMTEgKzE4MiwxMyBAQCBjaGFyKiBuZXdUeXBlZEFycmF5
V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiX3Mp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCisgICAgc2l6ZV90IHVu
c2lnbmVkU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSk7CisKICAgICBpZiAodmVjdG9y
KQotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdp
dGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplLCB1bnRhZ0FycmF5UHRy
KHZlY3Rvciwgc2l6ZSkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmll
d0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdW5z
aWduZWRTaXplLCB1bnRhZ0FycmF5UHRyKHZlY3RvciwgdW5zaWduZWRTaXplKSkpOwogCi0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXplKSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9v
bCBzdHJpY3Q+CkBAIC0xOTA3LDcgKzE5MDksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIEpTQ2VsbCosIChWTSogdm1Qb2ludGVyLCBTdHJ1Ywog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5MjMsNyArMTkyNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJ
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MzksNyArMTk0MSw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTU1LDcg
KzE5NTcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwg
c3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTk3MSw3ICsxOTczLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4Nyw3ICsxOTg5
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQ4Q2xhbXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAw
LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTIwMDMsNyArMjAwNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDE5LDcgKzIwMjEsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJy
YXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9w
dCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0yMDM1LDcgKzIwMzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwg
Y2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA1MSw3ICsyMDUzLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
MjA2Nyw3ICsyMDY5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Jp
Z0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWlu
dDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAppbmRleCA4NWQ0MTY5ODE5MGEuLjY5NWY3ZTk1YmViOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5Kikp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1
ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFy
KikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVk
SlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qs
IGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBF
bmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBz
aXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciop
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVk
SlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMy
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMy
X3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6
ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVk
SlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUl0
ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUq
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDg5ZTVlZjRkODUxZS4uMDZjZmYzNjAwYjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAg
ICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9u
KFNwZWNJbnQzMk9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAppbmRleCA5MjRmYzhjMzEwODYuLjViZDM3N2RhZjg5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTM3Myw2ICszNzMsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAg
Y2FzZSBBcnJheVBvcDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKQEAgLTM4NSw2ICszODYsNyBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogCiAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTI6CiAgICAgICAgIHJldHVybiAhKHN0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdHlwZSAmIH4oU3BlY1R5cGVkQXJyYXlWaWV3KSk7CiAgICAgICAgICAgICAKICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAyNDZjMTZjNDg4ZTkuLjlhZjgxNmM3NzhkYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTMyMzksMTYgKzMyMzksMjggQEAgSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1
bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmUKICAgICBKU0FycmF5
QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAg
ICAgICBtX3N0YXRlLmZvck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1
ZSwgbm9kZS0+YXJyYXlNb2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90
IGxlbmd0aCA9IHZpZXctPmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+
bGVuZ3RoKCk7CiAgICAgICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQo
bm9kZSwgMSkubm9kZSgpOwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQo
KSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5v
ZGUtPmlzQW55SW50Q29uc3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgp
CiAgICAgICAgICAgICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxl
bmd0aCkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVy
OjpJbW0zMihsZW5ndGgpKTsKKyNlbmRpZgogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBpbmRleEdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFs
LCBpbmRleEdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCkBAIC03OTU0LDcgKzc5NjYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2UoR1BSUmVnIGJhc2VSZWcsIEdQUlJl
ZyBzdG9yYWdlUmVnLCBibwogewogICAgIGF1dG8gdW50YWdBcnJheVB0ciA9IFsmXSgpIHsKICNp
ZiBDUFUoQVJNNjRFKQotICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3RoMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOworICAgICAgICBtX2ppdC51bnRhZ0Fy
cmF5UHRyTGVuZ3RoNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOwog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHZhbGlkYXRlQXV0aCk7CiAgICAgICAgIFVOVVNF
RF9QQVJBTShiYXNlUmVnKTsKQEAgLTgzMzYsMTIgKzgzNDgsMTggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJj
ZSgpLCBudWxscHRyLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkp
KTsKKyNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7
CisjZW5kaWYKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfSB9CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrSWRlbnQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJp
bmdPclN5bWJvbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMTEwNSwxMCArMTExMjMsMjAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2Rl
KiBub2RlKQogICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgp
OwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50
bHkodHlwZWRBcnJheVR5cGUpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkp
OwotICAgIAorCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBw
YXRoIGV4cGVjdCBhIENQVVJlZ2lzdGVyLCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMK
KyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzaXplR1BSLCBzaXplR1BSKTsKKyNlbmRpZgor
CisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJh
eVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlU
eXBlIHR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVn
IHNpemVHUFIpCit7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1w
b3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAg
LTExMTI0LDYgKzExMTUyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVk
SW1tMzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNz
dW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEg
MzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNB
cnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKICAgICAKICAgICBtX2ppdC5tb3ZlKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTc5LDkgKzEx
MjA5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQu
c3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vs
c2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBUcnVzdGVkSW1t
MzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAtMTQxNTYsNiAr
MTQxOTIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUy
U2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFVudHlwZWRVc2U6
IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVn
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IGI2NTE1ZDhiNzIxOS4uNmE2Mjc3NGNkZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5ICsxMzAwLDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQo
Tm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdChO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUqKTsKLSAgICAKKworICAgIHZv
aWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSosIFR5cGVkQXJyYXlU
eXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUik7CiAgICAgdm9pZCBjb21w
aWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNl
bmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5v
ZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lO
VDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEds
b2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSop
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0lu
dDUyKE5vZGUqKTsKKyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdz
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0MzUsNiAr
MTQ0Miw5IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJh
eUlzRGV0YWNoZWRJZk91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGls
ZXI6Okp1bXAgb3V0T2ZCb3VuZHMpOwogICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVj
ayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CiAgICAgdm9pZCBjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSopOworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNl
bmRpZgogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBl
ZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERh
dGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9p
ZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJv
cGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxP
bkZsb2F0VHlwZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJk
YTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJl
ZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBH
UFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50
NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2
ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBs
b3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRl
OgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmlj
dCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYg
Yml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGku
ZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNp
Z24tZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDUxZmUyZjRiYmUw
Zi4uYWM0N2U1ZGVmMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxMzMsNiArMjEzMyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1i
ZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRz
KG5vZGUsIHByZWZpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAg
QVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAg
ICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUo
KTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFs
T25JbnRUeXBlZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBAIC0zNTM0LDYgKzM1MzUsMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21w
aWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRB
cnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHR5cGVkIGFy
cmF5cyBsYXJnZXIgdGhhbiAyR0Igb24gMzItYml0IHBsYXRmb3Jtcy4KKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIERlbGV0
ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMzYxNiw2ICszNjIyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewog
ICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggZGI2YzZiMjc5ODVmLi45OTM1OGQwOGY2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2OTMsNiArMjY5Myw4NyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgIH0gfQogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9kZSogbm9kZSkKK3sKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0g
bm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFy
cmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFu
ZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUu
Z3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0
eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJF
TEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwor
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fz
c2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJp
c2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIp
OworICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSog
bm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBk
YXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJl
ZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdw
cigpOworICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7CisgICAgQVNTRVJUKGJhc2VH
UFIgIT0gZGF0YUdQUik7CisgICAgQVNTRVJUKHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKKworICAg
IEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CisKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBlbXB0eUJ5dGVPZmZzZXQgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIo
V2FzdGVmdWxUeXBlZEFycmF5KSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwg
dmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIG51bGxWZWN0b3IgPSBtX2ppdC5i
cmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW1QdHIoSlNB
cnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpOworCisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0
KCkpLCBkYXRhR1BSKTsKKyAgICBtX2ppdC5jYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6
SlNWYWx1ZSwgZGF0YUdQUik7CisKKyAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UoYmFzZUdQUiwg
dmVjdG9yR1BSKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQ
Uik7CisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgY2FnaW5nLgorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKKyAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFycmF5QnVmZmVyR1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0
T2ZEYXRhKCkpLCBkYXRhR1BSKTsKKyNpZiBDUFUoQVJNNjRFKQorICAgIG1faml0LnJlbW92ZUFy
cmF5UHRyVGFnKGRhdGFHUFIpOworI2VuZGlmCisKKyAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwg
dmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CisKKyNpZiBDUFUoQVJNNjRFKQorICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlm
CisgICAgZW1wdHlCeXRlT2Zmc2V0LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobnVsbHB0ciksIHZlY3RvckdQUik7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsK
KyNpZiAhQ1BVKEFSTTY0RSkKKyAgICBBU1NFUlQoIUpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVj
dG9yUHRyKCkpOworICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisKKyAgICBz
dHJpY3RJbnQ1MlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgb3AgPSBub2RlLT5vcCgp
OwpAQCAtNDM3NCw2ICs0NDU1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBi
cmVhazsKIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjb21waWxl
R2V0QXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
RGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAg
YnJlYWs7CkBAIC00NDkyLDYgKzQ1NzcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsK
ICAgICAgICAgYnJlYWs7CkBAIC01NTgyLDcgKzU2NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChp
bmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAg
ICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0Lmxv
YWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0
T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2
NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNTc4Myw3ICs1
ODczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRh
dGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRh
dGEuYnl0ZVNpemUgLSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdDEpOworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2Rl
LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgdDIsIHQxKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uNmIzZTI1M2Vm
OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSw2ICsyNzksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICAgICAgICAg
ICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0zNTksNiArMzYwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4u
Yzk5MGQ1OWNiYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgog
ICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBj
YXNlIFN0b3JlQmFycmllcjoKQEAgLTM5MSw2ICszOTIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50
QXJndW1lbnRzOgogICAgIGNhc2UgQ1BVSW50cmluc2ljOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JM
ZW5ndGg6CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNjc3
YWNhNDRiZDdlLi4wOWI2OGY0YmNmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMjQsNiArMTAyNCw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5n
dGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgICAg
IGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTA0MSw4
ICs1MDQ0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSkg
ewotICAgICAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgICAgICBtX291dC5s
b2FkMzJOb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBt
X291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBz
LkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92
ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChsZW5ndGgsIG1f
b3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7Cisg
ICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDUx
LDYgKzUwNTUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29t
cGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBz
ZXRTdHJpY3RJbnQ1MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTgxNTYsOTgg
KzgxNjcsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFy
cmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBt
X291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291
dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
bm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0gICAgICAgICAg
ICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQu
Y29uc3RJbnQzMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAg
ICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91
Z2hDYXNlLCBzbG93Q2FzZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAg
ICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0
SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAo
ZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVT
aXplID0gbV9vdXQuYml0QW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNp
emUsIG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZt
KCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsK
LSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3Is
IHNsb3dDYXNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAg
ICAgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291
dC5jb25zdEludFB0cigzKSkpLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAg
ICAgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShB
Uk02NEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBt
X291dC56ZXJvRXh0UHRyKHNpemUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSog
YXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAg
ICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6
OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBq
aXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0g
ICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0
b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9
IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAg
ICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3
aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5h
bWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAg
ZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1
cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9W
SUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UK
LSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1
bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291
dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBt
X291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93
Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBt
X291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAg
ICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlw
ZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAg
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRW
YWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVj
dG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0
b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhT
aXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xv
YmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFs
dWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAg
TFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlU
eXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLQogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgICAgIExW
YWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAKQEAgLTgyNjQs
NyArODE5NiwxMDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShUeXBlZEFy
cmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAgIHsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsK
KworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShzaXplNjRC
aXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSks
CisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkp
OworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxF
bm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSBy
ZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisg
ICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmll
dzo6ZmFzdFNpemVMaW1pdCkpOworICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmNhc3RUb0lu
dDMyKHNpemU2NEJpdHMpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9CisgICAgICAgICAg
ICBtX291dC5zaGwobV9vdXQuemVyb0V4dFB0cihzaXplKSwgbV9vdXQuY29uc3RJbnQzMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5
cGVkQXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5k
KAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIo
NykpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRw
dHJfdD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxv
Y2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNp
emUsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxs
KGFsbG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAg
ICBzdG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9v
dXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykp
KSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlw
ZWRBcnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAg
ICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNpemUpOworICAgICAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50
ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIo
c3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6
VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBh
dXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5t
b3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBq
aXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAgICB9
CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFu
Y2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0
cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9BUlJB
WV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAgICAg
ICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5Pihz
dHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklF
VyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCisg
ICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0g
YWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBz
bG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1
ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAgICAgICBtX291dC5zdG9y
ZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJy
YXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisK
KyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1
bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMt
PnZtKCk7CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisg
ICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAt
PiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlv
bnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5k
aXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigp
KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUp
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dS
ZXN1bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNW
YWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CkBAIC0xNTU3Niw3ICsxNTYwMyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
RGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExW
YWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRh
dGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1f
b3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAg
ICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5j
b25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNTcxOSw3ICsxNTc0Niw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0
YSgpOwogCi0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0Lmxv
YWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0
aCkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0
YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVl
IGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0
YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5k
ZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIy
MSw3ICsxNzI0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0g
WyZdKExWYWx1ZSB0YWdnZWRQdHIpIHsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYg
KGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSkgewotICAgICAgICAgICAgICAgIExWYWx1ZSBz
aXplID0gbV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQ2NChiYXNlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVu
dGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBhOTQy
MDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1
dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBub25OZWdhdGl2ZTMy
KExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsgfQogICAg
IExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4g
bG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBi
YXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIoYmFzZSwgZmll
bGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBB
YnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQpOyB9CiAKICAg
ICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RFcXVhbChMVmFs
dWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJp
bnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0
dGVyLmNwcAppbmRleCA5NGY3YWZlMTFhOTEuLjdhNTYwNzU2NWQ5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzksMjMgKzc5LDMy
IEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJpbnNpYygpKSB7
CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAg
ICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwg
c3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVl
UmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewogICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT50eXBl
ZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBpZiAoZWxlbWVudFNp
emUodHlwZSkgPiAxKQorICAgICAgICAgICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVl
R1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxz
ZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAg
ICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNh
biB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5
dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0
MzIodmFsdWVHUFIsIEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAg
ICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gMzItYml0IHBs
YXRmb3JtcyBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dz
IGFuIGludDMyLgorICAgICAgICAgICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVt
ZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJ
bnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjYsOCArMTM1LDEyIEBAIHZvaWQgSW50
cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAg
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZh
bHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAg
ICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBz
dGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFlLi40OTdm
NDllOGExZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJy
YXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3Ry
dWN0b3IuZ2V0KCkuY29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpT
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNp
emUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1f
ZGF0YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3Rvcikp
CiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVy
Q29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVy
KQogICAgIG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRz
OjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNv
bnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRl
cywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9k
YXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykK
IHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQo
KQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50
czo6dHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3QgYWxsb3cg
MzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVtZW50cykg
ewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRl
U2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRl
U2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAg
IHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVja2VkU2l6
ZSBzaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzOworICAgIHNpemVJbkJ5dGVzICo9IGVsZW1lbnRC
eXRlU2l6ZTsKKyAgICBpZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJbkJ5
dGVzLnZhbHVlKCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG51bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudEJ5
dGVTaXplKTsKLSAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlczsKKworICAg
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgaWYgKCFh
bGxvY2F0aW9uU2l6ZSkKICAgICAgICAgYWxsb2NhdGlvblNpemUgPSAxOyAvLyBNYWtlIHN1cmUg
bWFsbG9jIGFjdHVhbGx5IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11Y2guIFdl
IHVzZSBudWxsIHRvIG1lYW4gdGhhdCB0aGUgYnVmZmVyIGlzIGRldGFjaGVkLgogCiAgICAgdm9p
ZCogZGF0YSA9IEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYWxsb2Nh
dGlvblNpemUpOwotICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzKTsKKyAg
ICBtX2RhdGEgPSBEYXRhVHlwZShkYXRhLCBzaXplSW5CeXRlcy52YWx1ZSgpKTsKICAgICBpZiAo
IWRhdGEpIHsKICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0LDcgKzEz
Miw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5p
dGlhbGl6ZSkKICAgICAgICAgbWVtc2V0KGRhdGEsIDAsIGFsbG9jYXRpb25TaXplKTsKIAotICAg
IG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlczsKKyAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUlu
Qnl0ZXMudmFsdWUoKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9B
UlJBWV9CVUZGRVJfU0laRSk7CiAgICAgbV9kZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6OnByaW1p
dGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQpAQCAtMTc4LDcgKzE3Niw3IEBAIHZvaWQgQXJy
YXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQog
ICAgIFJFTEVBU0VfQVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMs
IGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0xOTEsNyArMTg5LDcgQEAg
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikK
ICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVM
ZW5ndGgoKSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgpOwogICAg
IGlmICghYnVmZmVyKQpAQCAtMjA4LDcgKzIwNiw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyBDdXJyZW50
IHRoaXMgaXMgb25seSB1c2VkIGZyb206CiAvLyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PD46
OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1vcnkgc2hv
dWxkIGhhdmUgYWxyZWFkeSBjb21lCiAvLyAgIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVk
KGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFTU0VSVCghR2ln
YWNhZ2U6OmlzRW5hYmxlZCgpIHx8IChHaWdhY2FnZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNh
Z2U6OmNvbnRhaW5zKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5n
dGggLSAxKSkpOwogICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIyMCw3ICsy
MTgsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0
IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndAogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdl
IGNvdWxkIGludHJvZHVjZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUg
dW5jYWdlZCBhbmQgZ2V0IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3Nl
bWJseS4gV2FzbSBzaG91bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25l
ZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3Ip
CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9p
ZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYgZGVzdHJ1Y3RvcikKIHsKICAgICBpZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0
aXZlR2lnYWNhZ2UoKTsKQEAgLTIyOSw3ICsyMjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bgogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkK
IHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFy
cmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzOSw3ICsyMzcsNyBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlCdWZmZXIm
IG90aGVyKQogICAgIHJldHVybiB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVu
Z3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
Y29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5
dGVMZW5ndGgpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250
ZW50cy50cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250
SW5pdGlhbGl6ZSk7CkBAIC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
ZwogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRlbnRzKSwgc291cmNlLCBi
eXRlTGVuZ3RoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4g
Y3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5
IHBvbGljeSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplX3QgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3Jl
YXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CiAgICAgaWYgKCFidWZm
ZXIpCkBAIC0yNjYsMTUgKzI2NCwxNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpj
cmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlUwogICAgIHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVu
dHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJU
KCFieXRlTGVuZ3RoIHx8IHNvdXJjZSk7CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdFJlZigqbmV3
IEFycmF5QnVmZmVyKFdURk1vdmUoY29udGVudHMpKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlci0+ZGF0
YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIGlmIChieXRlTGVuZ3RoKSB7CisgICAgICAg
IEFTU0VSVChzb3VyY2UpOworICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwg
Ynl0ZUxlbmd0aCk7CisgICAgfQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlv
blBvbGljeSBwb2xpY3kpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBBcnJheUJ1
ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51bUVsZW1l
bnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQXJyYXlC
dWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIHsKIH0K
IAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxl
ZnQsIHVuc2lnbmVkIHJpZ2h0KQorc2l6ZV90IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJs
ZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0IDw9IHJp
Z2h0KTsKICAgICBpZiAoeCA8IGxlZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgdW5zaWduZWQgQXJy
YXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJp
Z2h0KQogICAgIHJldHVybiB4OwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRl
eChkb3VibGUgaW5kZXgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91
YmxlIGluZGV4KSBjb25zdAogewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVu
Z3RoKCk7CisgICAgc2l6ZV90IGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CiAgICAgaWYg
KGluZGV4IDwgMCkKICAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7CiAgICAg
cmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwpAQCAtMzE5LDkgKzMx
OSw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdp
bikgY29uc3QKICAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVn
aW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29u
c3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRl
eChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9
IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKKyAgICBzaXplX3Qgc2l6ZSA9IGJlZ2lu
IDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKICAgICBhdXRvIHJlc3VsdCA9IEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6
ZSk7CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9kZShzaGFy
aW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
CmluZGV4IDY4ZmY5MGUxM2ViYS4uODlhMGI5YzhhOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSwxNCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorI2lmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJf
U0laRSAoMXVsbCA8PCAzMikKKyNlbHNlCisvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNpemVf
dCB0byBzdG9yZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhcnJheSBidWZmZXJzLCB3ZSBjYW5ub3Qg
c3VwcG9ydCA0R0Igb24gMzItYml0IHBsYXRmb3Jtcy4KKy8vIE5vdGUgdGhhdCBzdG9yaW5nIHRo
ZSBzaXplIGluIGEgdWludDY0X3Qgd291bGQgYmUgcXVpdGUgbWVzc3kgb24gMzItYml0cyBhcyB0
aGUgSklUIGhhdmUgdG8gYmUgYWJsZSB0byBtYW5pcHVsYXRlIGl0LgorLy8gU28gd2UgYXJlIHN0
aWNraW5nIHdpdGggMkdCLiBJdCBzaG91bGQgaW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRvIHN1cHBv
cnQgdXAgdG8gKDRHQiAtIDFCKSBpZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9BUlJBWV9C
VUZGRVJfU0laRSAweDdmZmZmZmZmdQorI2VuZGlmCiAKIGNsYXNzIFZNOwogY2xhc3MgQXJyYXlC
dWZmZXI7CkBAIC01MSw3ICs1OCw3IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uID0gUGFja2VkUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+CiAKIGNsYXNz
IFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gewogcHVibGljOgotICAgIFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJik7CisgICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCBzaXplX3QsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIH5TaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzKCk7CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwobV9zaXplSW5CeXRlcyk7IH0KQEAgLTYwLDE0ICs2Nywx
NCBAQCBwcml2YXRlOgogICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQ
YWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7Ci0gICAgdW5z
aWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKIH07CiAKIGNs
YXNzIEFycmF5QnVmZmVyQ29udGVudHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5
QnVmZmVyQ29udGVudHMpOwogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVm
ZmVyQ29udGVudHMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRz
KHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZv
aWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyhB
cnJheUJ1ZmZlckNvbnRlbnRzJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVy
Q29udGVudHMmIG9wZXJhdG9yPShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpAQCAtNzksNyArODYs
NyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9k
YXRhOyB9CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRN
YXlCZU51bGwoc2l6ZUluQnl0ZXMoKSk7IH0KLSAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9CiAgICAgCkBAIC05NCw3ICsxMDEsNyBAQCBwcml2
YXRlOgogICAgICAgICBEb250SW5pdGlhbGl6ZQogICAgIH07CiAKLSAgICB2b2lkIHRyeUFsbG9j
YXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRp
YWxpemF0aW9uUG9saWN5KTsKKyAgICB2b2lkIHRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
CiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVy
Q29udGVudHMmKTsKQEAgLTEwNSwyOCArMTEyLDI4IEBAIHByaXZhdGU6CiAgICAgRGF0YVR5cGUg
bV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1
Y3RvcjsKICAgICBQYWNrZWRSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFy
ZWQ7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRl
czsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVk
PEFycmF5QnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFy
cmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQq
IGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9w
dGVkKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9p
ZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRl
KEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0
aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCiAgICAgLy8g
T25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
IGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxp
emVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsK
IAogICAgIGlubGluZSB2b2lkKiBkYXRhKCk7CiAgICAgaW5saW5lIGNvbnN0IHZvaWQqIGRhdGEo
KSBjb25zdDsKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIGlu
bGluZSBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJl
ZCgpOwogICAgIHZvaWQgc2V0U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CkBA
IC0xMzcsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRy
PEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2lu
KSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNl
V2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJ
bmRleChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2
b2lkIHBpbigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7CkBAIC0xNjEsMTIgKzE2OCwxMiBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZv
aWQodm9pZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAKIHByaXZhdGU6Ci0g
ICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0
aW9uUG9saWN5KTsKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChB
cnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9u
UG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJ
bnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCBzaXplX3QpOworICAg
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6
YXRpb25Qb2xpY3kpOwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0g
ICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKLSAgICBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQs
IHVuc2lnbmVkIHJpZ2h0KTsKKyAgICBpbmxpbmUgc2l6ZV90IGNsYW1wSW5kZXgoZG91YmxlIGlu
ZGV4KSBjb25zdDsKKyAgICBzdGF0aWMgaW5saW5lIHNpemVfdCBjbGFtcFZhbHVlKGRvdWJsZSB4
LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KTsKIAogICAgIHZvaWQgbm90aWZ5RGV0YWNoaW5n
KFZNJik7CiAKQEAgLTE5Miw3ICsxOTksNyBAQCBjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQogCi11bnNpZ25lZCBB
cnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmJ5dGVM
ZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CiB9
CkBAIC0yMDUsNyArMjEyLDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdAog
c2l6ZV90IEFycmF5QnVmZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIHNjYWxlIHRoaXMgYnkgdGhlIHNoYXJlZCBy
ZWYgY291bnQgb3Igc29tZXRoaW5nLgotICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsg
c3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBzaXplb2YoQXJy
YXlCdWZmZXIpICsgYnl0ZUxlbmd0aCgpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpwaW4oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAK
aW5kZXggNzY4ZmVhOTA5YmFiLi40NzM3MjI3NDUzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxOCArMjUsMTcgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQXJyYXlC
dWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVM
ZW5ndGgpCiAgICAgICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9p
c0RldGFjaGFibGUodHJ1ZSkKICAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkKICAg
ICAgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hlY2tlZDx1bnNpZ25l
ZCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CisgICAgQ2hlY2tlZDxzaXpl
X3QsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAgIGxlbmd0aCArPSBi
eXRlTGVuZ3RoOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
bGVuZ3RoIDw9IG1fYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChtX2J1ZmZlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXgg
N2UzOTYwNzc3OGE5Li5lNzFiMDYxZmU3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IlR5cGVkQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NywxNCArNzgsMTQg
QEAgcHVibGljOgogCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VBZGRyZXNz
KCk7IH0KIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHNpemVfdCBieXRl
T2Zmc2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9CiAKLSAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9Cisg
ICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGV0YWNoYWJsZShib29sKTsKICAgICBib29s
IGlzRGV0YWNoYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxlOyB9CkBAIC05Miwx
OSArOTMsMTggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkFycmF5
QnVmZmVyVmlldygpOwogCiAgICAgLy8gSGVscGVyIHRvIHZlcmlmeSBieXRlIG9mZnNldCBpcyBz
aXplIGFsaWduZWQuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudCh1
bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlC
eXRlT2Zmc2V0QWxpZ25tZW50KHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgZWxlbWVudFNpemUp
CiAgICAgewotICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKHNpemUgLSAxKSk7CisgICAg
ICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoZWxlbWVudFNpemUgLSAxKSk7CiAgICAgfQogCi0g
ICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5
QnVmZmVyIGlzCi0gICAgLy8gd2l0aGluIHJhbmdlLgotICAgIHN0YXRpYyBib29sIHZlcmlmeVN1
YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCBzaXplX3Qgc2l6ZSkKKyAgICAvLyBIZWxwZXIgdG8g
dmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMgd2l0aGlu
IHJhbmdlLgorICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5
QnVmZmVyJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbnVtRWxlbWVudHMsIHNp
emVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBi
dWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5i
eXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMg
PSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6ZTsKKyAgICAgICAgc2l6ZV90IHJlbWFp
bmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIGVsZW1lbnRTaXplOwog
ICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMgKzExMyw0OCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9i
amVjdCosIEpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5
QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldElt
cGwoQXJyYXlCdWZmZXJWaWV3Kiwgc2l6ZV90IGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJv
b2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwg
dW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
OworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qg
ZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRS
YW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90
IGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBi
eXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUg
dm9pZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVu
ZCwgdW5zaWduZWQgYXJyYXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25l
ZCogbGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNldCBpcyBp
biBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAvLyBvdXRw
dXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZl
cidzIHZpZXcuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZl
ciwKLSAgICAgICAgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAq
b2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIHNpemVfdCBh
cnJheUJ5dGVPZmZzZXQsCisgICAgICAgIHNpemVfdCAqb2Zmc2V0LAorICAgICAgICBzaXplX3Qg
Km51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRf
TUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgc2l6ZV90IG1heE9m
ZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gYXJyYXlCeXRlT2Zm
c2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKICAg
ICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgKm51
bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAq
b2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAg
Km9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAg
ICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9m
ZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiBhZGp1c3RlZE9mZnNl
dCA9ICpvZmZzZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAgICAg
ICAgYWRqdXN0ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRqdXN0
ZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBidWZm
ZXIuYnl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3Ro
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNldC52
YWx1ZSgpOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVM
ZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVudHMgPSBz
dGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB1
bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBDUFUoSlNWQUxVRTY0KQorICAgIHVpbnQ2
NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZzZXQg
OiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVk
IG1fYnl0ZUxlbmd0aDsKKyAgICBzaXplX3QgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNpbmcgQmFz
ZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0
cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIncyBzdG9y
YWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJyYXlCdWZm
ZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5
LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgo
KQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVP
ZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAg
IGlmICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBi
eXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAg
dWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAg
ICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXkt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJW
aWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3Ro
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1w
bChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zm
c2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRl
T2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBv
ZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0
ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CiAKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRh
dGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZp
ZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3Ro
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1w
bCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9m
ZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0
ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQg
b2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5
dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBi
YXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0
LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5n
ZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAg
aWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJh
bmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFu
Z2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zm
c2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIHJh
bmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFz
ZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVM
ZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFycmF5QnVmZmVyVmlldzo6Y2Fs
Y3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQg
YXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQotewotICAgIGlm
IChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQg
PCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCAr
PSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7Ci0gICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAgICBlbmQgPSBh
cnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBzdGFydDsKLSAg
ICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2NGFmMi4uZmJjOTg0N2QyZDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIw
ICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgIDogQXJyYXlCdWZm
ZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0KIAog
UmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBi
eXRlTGVuZ3RoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUo
YnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZpZXc+IERh
dGFWaWV3OjpjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVM
ZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
YnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRhVmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uMzQwMjY1NDEwMzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZp
ZXcgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+
IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4g
Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBs
ZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbApA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNH
bG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlh
biwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdldChzaXplX3Qgb2Zmc2V0LCBib29s
IGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlm
IChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVu
Z3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29sIGxpdHRs
ZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQoc2l6ZV90JiBvZmZz
ZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAg
ICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0LCBsaXR0bGVFbmRp
YW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMpCkBAIC02OCw3ICs2
OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBi
b29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KHNpemVfdCBvZmZzZXQsIFQgdmFs
dWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAg
ICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+
IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uZjQ5MzcwZmNhYjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRB
cnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVi
bGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBz
aXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxl
bmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3Qg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3Jl
YXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxl
bmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxp
emVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOwogICAgIAogICAgIHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJlc3MoKSk7IH0KICAgICAKQEAgLTY1LDI2
ICs2NSwyNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsgemVyb1Jhbmdl
KDAsIGxlbmd0aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CisgICAg
c2l6ZV90IGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRlTGVuZ3RoKCkgLyBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgaXRlbShzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAg
cmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KHVuc2lnbmVk
IGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXQoc2l6ZV90IGluZGV4LCBk
b3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4
XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXROYXRpdmUodW5zaWduZWQgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUp
IGNvbnN0CisgICAgdm9pZCBzZXROYXRpdmUoc2l6ZV90IGluZGV4LCB0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRl
eF0gPSB2YWx1ZTsKQEAgLTEwMCwxNiArMTAwLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjaGVj
a0luYm91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25zdAogICAgIHsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAgIHJldHVy
biAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPD0gbGVu
Z3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0
ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW4ob2Zm
c2V0LCBjb3VudCwgdGhpcy0+bGVuZ3RoKCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7Ci0gICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAg
ewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzExMSw3IEBA
IHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpT
R2xvYmFsT2JqZWN0KikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uNTQyOTgw
YWU2NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQor
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZz
ZXQsIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NF
UlQoKGxlbmd0aCAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KLVJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5
Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7
CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0LDcgKzc1
LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQp
CkBAIC04NSw3ICs4Niw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xMDAsNyArMTAxLDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEw
OSw3ICsxMTAsNyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAg
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkK
ICAgICByZXR1cm4gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBz
dGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsK
LSAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCks
ICZvZmZzZXQsICZsZW5ndGgpOwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNo
YXJlZEJ1ZmZlcigpOwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVt
RWxlbWVudHM8QWRhcHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAm
bGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwot
fQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4
OWVhZWJkM2MyY2MuLmYwNzQwY2I2ZDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25z
dCBDbGFzc0luZm8gSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAg
IDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgp
CiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgK
LSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQz
Ml90IGVsZW1lbnRTaXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBsZW5ndGgsIHNpemVfdCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1vZGUgbW9k
ZSkKICAgICA6IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBA
IC04MSwxOCArODEsMTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6
OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBE
b24ndCBhbGxvdyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAgIGlmIChs
ZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6ZSkKKyAg
ICBDaGVja2VkPHNpemVfdD4gc2l6ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9IGVsZW1lbnRTaXpl
OworICAgIGlmIChzaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5
cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3Ro
KTsKKworICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIHNpemUudmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3Rv
cikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBt
ZW1zZXQodmVjdG9yKCksIDAsIHNpemUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFN
ZW1vcnlBbGxvY2F0ZWQoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUp
OworICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsK
ICAgICAKICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6
ZVR5cGVkQXJyYXk7CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0
cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3
OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwK
LSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkK
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkp
CkBAIC0xMTQsNyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVj
dHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUp
CkBAIC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpT
VHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5
cGVdOwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0
CitzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFT
U0VSVF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAg
IHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUo
KTsKKyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVj
a2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNo
ZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVt
ZW50U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVy
Vmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlC
dWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0
ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwog
CiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0z
MTYsNyArMzIzLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6
OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9
IHRoaXMtPmxlbmd0aCgpOwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlko
dHlwZSkgXAogICAgIGNhc2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1
My4uZGE2ZGQwYmQ3NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdl
ZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAg
ICAgc3RhdGljIHZvaWQqIG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0
YXRpYyBzaXplX3Qgc2l6ZU9mKHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUp
CisgICAgc3RhdGljIHNpemVfdCBzaXplT2Yoc2l6ZV90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVu
dFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3Ro
KSAqIGVsZW1lbnRTaXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAg
ICAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVf
dD4gcmVzdWx0ID0gbGVuZ3RoOworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAg
ICAgIHJlc3VsdCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC52YWx1ZSgpICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQog
CiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5l
Q2FwYWNpdHkpCkBAIC0xMzYsMjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgog
ICAgICAgICBlbnVtIEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6
ZSB9OwogICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dChWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNp
emUsIEluaXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgs
IHNpemVfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAg
ICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBl
ZCBhcnJheXMuIEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25z
dHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9y
KTsKKyAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29u
c3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgp
OwogICAgICAgICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAg
ICAgIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHNpemVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAgICAgICAgIAogICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9CiAg
ICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVs
bChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9sZW5ndGg7IH0KKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVybiBtX2J1
dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgIHVzaW5nIFZlY3RvclR5cGUgPSBD
YWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgICAg
IFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgICAg
ICBzaXplX3QgbV9sZW5ndGg7CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKICAgICAg
ICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAgICB9OwpAQCAtMTkzLDggKzE5NSw4IEBAIHB1
YmxpYzoKICAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwogICAgIGlubGluZSBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGgoKSBjb25zdDsKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQXJy
YXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3RvclB0ciBt
X3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9sZW5ndGg7CiAg
ICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi45OTIy
ZmZkYjU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaApAQCAtNjksMTMgKzY5LDE1IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVl
Ojp0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9y
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVn
YXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAoaXNJbnQzMigp
KQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworCiAgICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmco
ZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZk
NmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENv
bnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRh
VmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcq
IEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVB
Q0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpT
RGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2ln
bmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6
ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJ
bmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3
OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5lYzJhZjY5
ODIzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNBcnJheUJ1ZmZlclZp
ZXc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50
U2l6ZSA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZWxlbWVudFNpemUgPSAxOwog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBUeXBlZEFycmF5Q29udGVudFR5cGUgY29udGVudFR5cGUg
PSBUeXBlZEFycmF5Q29udGVudFR5cGU6Ok5vbmU7CiAKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZpZXcqIGNy
ZWF0ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsCisgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoKTsK
ICAgICAKICAgICAvLyBEdW1teSBtZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3b3JrOyB0
aGVzZSBhcmUganVzdCBpbiBwbGFjZSB0bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1wbGF0ZSBz
cGVjaWFsaXphdGlvbiB3ZSBkbyBlbHNld2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
Ym9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNl
dChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCBsZW5n
dGgpOworICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUp
OwogICAgIAogICAgIEFycmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1By
b3RvdHlwZS5jcHAKaW5kZXggOTQ5MDYyNDdlYTY1Li5lMGZiYzUyZjg3NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTM2LDExICsxMzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFW
aWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAg
ICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNl
dCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVu
dFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1l
bnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50
U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBs
aXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihn
bG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlm
IChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBk
ZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBk
YXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVu
Z3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4g
Ynl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApAQCAt
MTgyLDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2Vp
dmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xv
YmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNv
bnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwpA
QCAtMTk1LDcgKzE5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRp
YW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMikudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0LDcgKzIw
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJV
bmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3Mp
OwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBz
aXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNp
emUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
T3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4
MWQuLjZhYmQyYTQxYjE3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5j
bHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19FWFBPUlRf
UFJJVkFURSBjb25zdCBDbGFzc0luZm8qIGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZvKCk7CiAv
LyAgICAgU3RydWN0dXJlKiBTICAgICAvLyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRlcmZseSog
QiAgICAgLy8gZnJvbSBKU09iamVjdAogLy8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAgICAgdWlu
dDMyX3QgTAorLy8gICAgIHNpemVfdCBMCiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8v
IFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRz
LiBGSVhNRTogTWFrZQorLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBv
aW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAv
LwogLy8gQiBpcyB1c3VhbGx5IHVudXNlZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwg
Im92ZXJmbG93IiBkYXRhIGZvcgpAQCAtMTAzLDE0ICsxMDQsMTQgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKTsKIAotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwot
ICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0aWMg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0Kiwg
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAotICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KICAgICBz
aXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKiB0eXBlZFZlY3RvcigpIGNvbnN0CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+
KHZlY3RvcigpKTsKICAgICB9CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0
CisgICAgYm9vbCBpbkJvdW5kcyhzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBpIDwgbV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQg
dG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3Vw
cG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRl
eFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShz
aXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFw
dG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhR
dWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJ
bmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2Fu
Q29udmVydFRvSlNRdWlja2x5OwogICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoc2l6ZV90
IGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAg
cmV0dXJuIHR5cGVkVmVjdG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHko
c2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVl
KG51bGxwdHIsIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAK
LSAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZl
VmFsdWUoc2l6ZV90IGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZh
bHVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAg
ICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFw
dG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBpLCBKU1ZhbHVl
IGpzVmFsdWUpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwog
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSAr
MTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3Rh
dGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVl
PEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5
cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1
ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0
Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNW
YWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0
aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgp
CiAgICAgewpAQCAtMTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgK
LSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAg
Ly8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZz
ZXQ7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuKG9mZnNldCwgbGVuZ3RoLCBtX2xl
bmd0aCk7CiAgICAgfQogICAgIAogICAgIC8vIExpa2UgY2FuU2V0UXVpY2tseSwgZXhjZXB0OiBp
ZiBpdCByZXR1cm5zIGZhbHNlLCBpdCB3aWxsIHRocm93IHRoZQogICAgIC8vIGFwcHJvcHJpYXRl
IGV4Y2VwdGlvbi4KLSAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpT
R2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCByZXR1
cm5zIGZhbHNlCiAgICAgLy8gdGhlbiBpdCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4K
LSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3Qq
LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9
IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwg
c2l6ZV90IG9mZnNldCwgSlNPYmplY3QqLCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVu
Z3RoLCBDb3B5VHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJlZlB0
cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsK
ICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJbXBs
KCk7CkBAIC0zMTgsOCArMzIyLDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
c3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9yLgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhTcGVj
aWZpY1R5cGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQgb2Jq
ZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0
b3I+KiwKKyAgICAgICAgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5
cGUpOwogCiAgICAgLy8gVGhlIEVDTUEgNiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5nIHBvaW50
IFR5cGVkIEFycmF5cyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgogICAgIC8v
CkBAIC0zNDksNyArMzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1cmlmeUFycmF5KCkKICAg
ICB7CiAgICAgICAgIEVsZW1lbnRUeXBlKiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBhcnJheVtpXSA9IHB1
cmlmeU5hTihhcnJheVtpXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IDQ1MDIzODc5MmQxMC4uMWViM2QxNzg2MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3
IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5
VmlldygKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTY1LDcgKzY2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgs
IHZvaWQqIHZlY3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQo
c3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlV2l0aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksNyArMTAwLDcg
QEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0NSw3ICsxNDYsNyBA
QCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgog
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlw
ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVk
IG90aGVyT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCisgICAgc2l6ZV90IG90aGVyT2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgs
NyArMjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0
aFNwZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhp
c3RpbmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6
ZSAmJiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29w
eVR5cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAg
ICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0
b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVW
YWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8v
IE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3Zl
ciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKHNpemVf
dCBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2
ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxh
dGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5k
ZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIz
OSwxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKAogICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRy
YW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IGxlbmd0aDsgaS0tOykgeworICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsK
ICAgICAgICAgdHJhbnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZl
cnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2
ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBs
ZW5ndGg7IGktLTspCisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAg
c2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltp
XSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgc2l6ZV90IG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9mZnNldCwg
c2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAo
Y2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAg
ICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3Jl
IHRoZSBzYW1lIHR5cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBq
dXN0IG1lbW1vdmUgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIG90aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4o
b2JqZWN0KTsKICAgICAgICAgbGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3Ro
KCkpOwogICAgICAgICAKQEAgLTMxMyw4ICszMTQsMTAgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIC8vIFdlIGNvdWxkIG9wdGltaXplIHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9u
J3QuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9i
amVjdE9mZnNldCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIC8vIGdldCgpIGZvciBub3cgcHJvYmFibHkgZG9lcyBub3QgZG8gdGhl
IHJpZ2h0IHRoaW5nIGZvciBpbmRpY2VzIGFib3ZlIFVJTlRfTUFYLgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXNJbkJvdW5kczx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOworICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNl
dEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAgRVhD
RVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4uMmE4
NjM2MzFhYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFn
ZUNvdW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5o
CkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikg
LyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gcGFnZVNpemUp
OwogCiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1l
dGljLmgKaW5kZXggZmYxNTY1ZjExZGVkLi45M2YwNmM5ZDViYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCwxNCArMTQ0LDE0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+PjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIGlzVGFyZ2V0QmlnZ2VyID0gc2l6ZW9mKFRh
cmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJvb2wgdGFyZ2V0U2lnbmVkID0gc3RkOjpudW1lcmlj
X2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQsIGJvb2wgc291cmNlU2lnbmVkID0gc3RkOjpudW1l
cmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWduZWQ+IHN0cnVjdCBCb3VuZHNDaGVja2VyOwogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRpYyBi
b29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5C
b3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNv
IGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24g
dG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPFRhcmdldD46Om1heCgpOwogICAgIH0KIH07CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBm
YWxzZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAg
IHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lv
biB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1pbigpIDw9IHZhbHVlICYmIHZh
bHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CkBAIC0xNTksNyArMTU5
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gV2hlbiBjb252ZXJ0aW5nIHZhbHVlIHRvIHVuc2lnbmVkIFNv
dXJjZSwgdmFsdWUgd2lsbCBiZWNvbWUgYSBiaWcgdmFsdWUgaWYgdmFsdWUgaXMgbmVnYXRpdmUu
CiAgICAgICAgIC8vIENhc3RlZCB2YWx1ZSB3aWxsIGJlY29tZSBiaWdnZXIgdGhhbiBUYXJnZXQ6
Om1heCBhcyBTb3VyY2UgaXMgYmlnZ2VyIHRoYW4gVGFyZ2V0LgpAQCAtMTY4LDcgKzE2OCw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5k
c0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIC8vIFRoZSB1bnNpZ25lZCBTb3VyY2UgdHlwZSBoYXMgZ3JlYXRlciBwcmVj
aXNpb24gdGhhbiB0aGUgdGFyZ2V0IHNvIG1heChUYXJnZXQpIC0+IFNvdXJjZSB3aWxsIHdpZGVu
LgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291cmNlPihzdGQ6Om51bWVy
aWNfbGltaXRzPFRhcmdldD46Om1heCgpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2Us
IGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBi
b29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNp
Z24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAg
ICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCBmYWxzZT4g
ewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGFy
Z2V0IGlzIHNpZ25lZCB3aXRoIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uIElmIHN0cmljdGx5
IGdyZWF0ZXIsIGl0IGlzIGFsd2F5cyBzYWZlLgogICAgICAgICBpZiAoc2l6ZW9mKFRhcmdldCkg
PiBzaXplb2YoU291cmNlKSkKQEAgLTIwMiwxOSArMjAyLDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgdHJ1ZT4g
ewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGFy
Z2V0IGlzIHVuc2lnbmVkIHdpdGggZ3JlYXRlciBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB2
YWx1ZSA+PSAwOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5l
IGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQogewogICAgIHJldHVybiBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlPjo6aW5Cb3VuZHModmFsdWUpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9v
bCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQogewogICAg
IGlmICghaXNJbkJvdW5kczxUYXJnZXQ+KGlucHV0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdz
PiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJncy4uLiBhcmdzKQogICAgIHJldHVybiBjaGVja2Vk
UHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVyZmxvd2VkKCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhhbihUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBD
aGVja2VkPFQ+IHN1bSA9IGE7CisgICAgc3VtICs9IGI7CisgICAgcmV0dXJuICFzdW0uaGFzT3Zl
cmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDwgYm91bmQ7Cit9CisKIH0KIAogdXNpbmcgV1RGOjpB
c3NlcnROb092ZXJmbG93OwpAQCAtMTAxNywzICsxMDI0LDQgQEAgdXNpbmcgV1RGOjpkaWZmZXJl
bmNlT3ZlcmZsb3dzOwogdXNpbmcgV1RGOjppc0luQm91bmRzOwogdXNpbmcgV1RGOjpwcm9kdWN0
T3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpzdW1PdmVyZmxvd3M7Cit1c2luZyBXVEY6OmlzU3VtU21h
bGxlclRoYW47Cg==
</data>
<flag name="commit-queue"
          id="463001"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439798</attachid>
            <date>2021-09-30 17:01:36 -0700</date>
            <delta_ts>2021-09-30 17:34:38 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>169998</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5mZjc2MTVlY2RhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xMjc1LDcgKzEyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB2YWx1ZSA+IDB4ZmY7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2hvdWxkQmxpbmRQb2ludGVy
Rm9yU3BlY2lmaWNBcmNoKHVpbnRwdHJfdCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgYm9vbCBzaG91
bGRCbGluZFBvaW50ZXJGb3JTcGVjaWZpY0FyY2godWludHB0cl90IHZhbHVlKQogICAgIHsKICAg
ICAgICAgaWYgKHNpemVvZih2b2lkKikgPT0gNCkKICAgICAgICAgICAgIHJldHVybiBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaChzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKTsKQEAgLTE0
NjAsNiArMTQ2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBhbmQ2
NChpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICAgfQorCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAogI2lmICFDUFUoWDg2KSAmJiAhQ1BVKFg4Nl82NCkgJiYgIUNQVShBUk02NCkK
QEAgLTE3MjcsNyArMTczMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0b3JlNjQoaW1tLmFz
VHJ1c3RlZEltbTY0KCksIGRlc3QpOwogICAgIH0KIAotI2VuZGlmIC8vIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkKKyNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShS
SVNDVjY0KQogICAgIAogICAgIHZvaWQgc3RvcmUzMihJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkK
ICAgICB7CkBAIC0xODIxLDYgKzE4MjUsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJh
bmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSk7CiAgICAgfQogCisjaWYg
Q1BVKFg4Nl82NCkKKyAgICAvLyBPdGhlciA2NC1iaXQgcGxhdGZvcm1zIGRvbid0IG5lZWQgYmxp
bmRpbmcsIGFuZCBoYXZlIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24sIFJlZ2lzdGVySUQs
IEltbTY0KSBkaXJlY3RseSBkZWZpbmVkIGluIHRoZSByaWdodCBmaWxlLgorICAgIC8vIFdlIGNh
bm5vdCBwdXQgdGhpcyBpbiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oLCBiZWNhdXNlIGl0IHVzZXMg
c2hvdWxkQmxpbmQoKSwgbG9hZFJvYXRpb25CbGluZGVkQ29uc3RhbnQsIGV0Yy4uIHdoaWNoIGFy
ZSBvbmx5IGRlZmluZWQgaGVyZSBhbmQgbm90IHRoZXJlLgorICAgIEp1bXAgYnJhbmNoNjQoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAg
IHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGhh
dmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7CisgICAgICAgICAgICAgICAgbG9hZFJv
dGF0aW9uQmxpbmRlZENvbnN0YW50KHJvdGF0aW9uQmxpbmRDb25zdGFudChyaWdodCksIHNjcmF0
Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2g2
NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHNjcmF0Y2ggcmVnaXN0ZXIg
YXZhaWxhYmxlIGZvciB1c2UsIHdlJ2xsIGp1c3QKKyAgICAgICAgICAgIC8vIHBsYWNlIGEgcmFu
ZG9tIG51bWJlciBvZiBub3BzLgorICAgICAgICAgICAgdWludDMyX3Qgbm9wQ291bnQgPSByYW5k
b20oKSAmIDM7CisgICAgICAgICAgICB3aGlsZSAobm9wQ291bnQtLSkKKyAgICAgICAgICAgICAg
ICBub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5h
c1RydXN0ZWRJbW02NCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29u
ZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgfQorI2VuZGlmIC8vIENQVShY
ODZfNjQpCisKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNDI1MDkwM2JjMzIy
Li5iMzdmNGQyOGJkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJ
bW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBy
aWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAg
IHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4MmQ1
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoMzIo
QWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVuZ3Ro
LCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAgICAgICBh
dXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9hZDY0KGxl
bmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVBdXRoID8g
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlkR1BS
UmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRhdGVB
dXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0MDE3
Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRlclJlZ2lz
dGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgCi0gICAgc3Rh
dGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hv
dWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49
IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25z
dGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVy
YXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li5kN2RmMWU5M2YwZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTExOTEsMTIgKzExOTEs
MTcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKIAogICAgICAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBzdGF0ZS51LnByb3BlcnR5R1BSOwogCi0gICAgICAgIAogICAgICAg
ICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5k
KGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKSk7CiAKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90LCBzbyBl
aXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBq
aXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdGF0ZS5mYWlsQW5k
UmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNj
cmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBh
bGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpAQCAtMTYzMCw5ICsxNjM1LDE2IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwog
ICAgICAgICB9CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlz
IGEgc2l6ZV90LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRm
b3JtLgorICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAg
ICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBv
cGVyYXRpb24gZnVuY3Rpb24uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChq
aXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3Jh
dGNoR1BSKSk7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUg
c2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBh
dGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCA2OTE2Nzk0ODQzYjAuLjRjMDQyYjAwNDU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZTsKIAogLy8gVGhpcyBp
cyBhIGJpdGZpZWxkIHdoZXJlIGVhY2ggYml0IHJlcHJlc2VudHMgYW4gdHlwZSBvZiBhcnJheSBh
Y2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4uCiAvLyBUaGVyZSBhcmUgMTkgaW5kZXhpbmcgdHlwZXMg
dGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMuCi0vLyBUaGVyZSBhcmUgOSB0eXBlZCBhcnJheSB0eXBl
cyB0YWtpbmcgdGhlIGJpdHMgMTYgdG8gMjUuCisvLyBUaGVyZSBhcmUgMTEgdHlwZWQgYXJyYXkg
dHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2LTIwIGFuZCAyNi0zMS4KIHR5cGVkZWYgdW5zaWduZWQg
QXJyYXlNb2RlczsKIAogLy8gVGhlIHBvc3NpYmxlIEluZGV4aW5nVHlwZXMgYXJlIGxpbWl0ZWQg
d2l0aGluICgwIC0gMTYsIDIxLCAyMywgMjUpLgpAQCAtMjA1LDEzICsyMDUsMjIgQEAgcHVibGlj
OgogICAgICAgICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAg
ICAgfQotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBBY2Nlc3NpbmcgdHlwZWQg
YXJyYXlzIGxhcmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCBhcyB3
ZSBjYW4ndCBmb3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50MzJfdC4KKyAgICAvLyBXZSBv
bmx5IHN1cHBvcnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24gNjQtYml0IHBsYXRmb3Jtcy4K
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisjZW5kaWYKKyAgICB2b2lk
IHNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1
ZTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorCiAgICAgU3Ry
dWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0
U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2Rlcygp
IHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1h
eVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KIAogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihBcnJheVByb2ZpbGUsIG1fbWF5U3RvcmVUb0hvbGUpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoQXJyYXlQcm9maWxlLCBtX2xhc3RTZWVuU3RydWN0dXJlSUQpOyB9CisgICAgLy8gc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZk1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEFycmF5UHJvZmlsZSwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSk7IH0KIAogICAg
IHZvaWQgc2V0T3V0T2ZCb3VuZHMoKSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9v
bCogYWRkcmVzc09mT3V0T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQpAQCAt
MjQ3LDEzICsyNTYsMTggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzIDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDog
MTsKICAgICBib29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CisgICAgYm9vbCBt
X21heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzIHsgMCB9OwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0g
MTIpOwogCiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5r
ZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVBy
b2ZpbGUoKQorICAgICAgICA6IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisg
ICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyAgICB7CisgICAgfQogCiAg
ICAgdm9pZCB1cGRhdGUoQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGUpCiAgICAgewpAQCAtMjgw
LDYgKzI5NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhcnJheVByb2ZpbGUubV91c2VzT3Jp
Z2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXM7CisKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkp
CisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJh
eVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0y
OTAsNyArMzA5LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVzIDogMTsKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgOiAxOwogfTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVubGlua2VkQXJyYXlQcm9maWxlKSA8PSA4KTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZjZlMmU4N2YzNGVjLi4yNDFk
MmQ4ZjQwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTM0ODYsNiArMzQ4NiwxNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KAorICAgICAgICAgICAgZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkpOworICAgICAgICBpZiAodmlldykg
eworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIodmlldy0+bGVuZ3RoKCkp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50NTJBbnkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzgyMSw2ICszODMyLDE5
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNldENvbmN1
cnJlbnRseSgpOworICAgICAgICAgICAgaWYgKGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50NTJBbnkpOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICgodmFsdWUubV90eXBlICYm
ICEodmFsdWUubV90eXBlICYgflNwZWNPYmplY3QpKSAmJiB2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zp
bml0ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA2ZTI3NTMxMDRiZDMuLjA1OWJhM2Y2
ZGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0zMjUsNiArMzI1LDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQxKCksIG5vZGUpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgaXMgb25s
eSB1c2VkIGZvciBUeXBlZEFycmF5cywgc28gc2hvdWxkIG5vdCBiZSByZWxldmFudCBmb3IgYXJn
dW1lbnRzIGVsaW1pbmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGls
ZDIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAg
ICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgICAgICAgICAgQml0VmVj
dG9yKiBiaXRWZWN0b3IgPSBub2RlLT5iaXRWZWN0b3IoKTsKICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50ID0gbV9ncmFwaC5pc1dhdGNo
aW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggODgxMWI4OWYyNGE3Li4wN2U4
MWNiOWE4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC0zODIxLDIxICszODIxLDI1IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlM
ZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSk7CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGU7CisgICAgICAgIGlmIChpc0lu
dDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBsZW5ndGhOb2RlID0gYWRk
VG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5
OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlbmFibGVJbnQ1MigpKTsKKyAgICAgICAgICAgIGxlbmd0aE5vZGUg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJh
eVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgfQogICAg
ICAgICAvLyBPdXIgQXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28g
d2Ugc2hvdWxkIGJlIG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRP
SyA9IHRydWU7CiAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICgh
bG9nU2l6ZSkgewogICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBC
aXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRl
TGVuZ3RoCi0gICAgICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBz
aGlmdE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJl
c3VsdCwgYWRkVG9HcmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7
CisgICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVk
IGFycmF5cyBtYXkgaGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAg
ICAgIE5vZGUqIHR5cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsK
KyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlw
ZVNpemUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zODUyLDcgKzM4NTYs
MTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5
cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3Jh
cGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVh
ZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGVuYWJsZUludDUyKCkpOworICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRk
VG9HcmFwaChHZXRBcnJheUxlbmd0aEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBl
LCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKQEAgLTM4NzAsNyArMzg3OSwxMiBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCku
YXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pKQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5h
c1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7CisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJh
eVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIH0KIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uNTQ4YmQwZWVlOWVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9w
ZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoK
ICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAg
ICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKQEAgLTEzMzMsNiArMTMzNCw3IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFk
LCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjoKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0NDQsNiArMTQ0NiwxNCBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB9CiAgICAgfQogCisgICAgY2FzZSBHZXRB
cnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJh
eU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5Vmll
dygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihBcnJheUxlbmd0aExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShu
b2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDogewogICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOwogICAgICAg
ICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24u
aAppbmRleCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBib29sIHZhbGlkYXRpb25F
bmFibGVkKCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBlbmFibGVJbnQ1MigpCitpbmxpbmUg
Ym9vbCBjb25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXgg
MDcwYTQ4NTQ3YTk3Li42MDlmZjA4NTc3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKQEAgLTE5NywxMCArMTk3LDEyIEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEdldHRlcjoKICAgICBjYXNlIEdldFNldHRlcjoK
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUy
OgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
ICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2Fz
ZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIEdldEJ5
T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5k
ZXggOGUxYjkzZWVlNmNhLi41MWVjZDI2NDA2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNzMsNyArMTA3Myw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhpdDogewogICAgICAgICAgICAgICAgIC8v
IERvbid0IGZvcmNlIE9TUiBiZWNhdXNlIHdlIGhhdmUgb25seSBzZWVuIE93blN0cnVjdHVyZU1v
ZGUuCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFdFIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdh
eSB0byBkbyB0aGlzLi4uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZl
IGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4uCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gRW51bWVyYXRvckdldEJ5VmFsKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRB
cnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0aFR5cGUoQXJyYXk6OkdlbmVyaWMpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTE3MTcsMTIgKzE3MTcsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6IHsKICAgICAgICAgICAgIHdh
dGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBub2Rl
LT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVJbnQ1MigpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RH
ZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMTQ5LDcgKzIxNTMsMTgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogeworICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
QXNJbnQ1MjogeworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUtPmFycmF5
TW9kZSgpLnJlZmluZShtX2dyYXBoLCBub2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigp
LCBBcnJheU1vZGU6OnVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAgICAgQVNT
RVJUKGFycmF5TW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShhcnJheU1vZGUpOworICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlv
bihub2RlLT5jaGlsZDEoKSwgRWRnZSgpLCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVlZHNTdG9y
YWdlKTsKKworICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTI6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDA5NiwxNCArNDExMSw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0
b3JhZ2UpOwogICAgIH0KLSAgICAKLSAgICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoTm9k
ZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQotICAgIHsK
LSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNo
aWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwotICAgICAgICByZXR1cm4gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50
MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKGFycmF5
TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uoc3RvcmFnZSkp
OwotICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5v
ZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5l
cmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5m
by5oCmluZGV4IDRmYWY5NDlhNzg2MC4uMmQ4NmViNzU3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byB0cmFj
ayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUgZ2VuZXJhdGlv
bi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2YWx1ZSBpcyBp
biBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNoLAogLy8gd2hldGhlciBhIHZhbHVl
IGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNvIG1heSBiZSBh
YmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2
YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCi0vLyBhYmxl
IHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRp
bmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBt
ZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJl
bWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFkIGFuZCB0aGUg
bWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUgcmVsZWFzZWQu
CiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4
IDFiYWExYzhiY2Y1MS4uNDNiNWQxMDEyZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNw
cApAQCAtMTQ5OSw2ICsxNDk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICAgICAg
c2V0UmVsYXRpb25zaGlwKFJlbGF0aW9uc2hpcChub2RlLCBtX3plcm8sIFJlbGF0aW9uc2hpcDo6
R3JlYXRlclRoYW4sIC0xKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTljLi5kMTNkMzdmMDJkN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk2NSw2ICsxOTY1LDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAg
ICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JO
ZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIw
MDQsNiArMjAwNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKICAgICAgICAgICAgIHJldHVybiAyOwogCiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3Bl
cnR5OgpAQCAtMjI3Niw2ICsyMjc4LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAg
ICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAg
ICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAppbmRleCA5YTkwYTRjZmRhYzguLjcyNjRkYzJmNTY1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjYxLDggKzI2MSwxMSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKE11bHRpRGVsZXRlQnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3Vs
dEludDMyKSBcCisgICAgLyogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBUeXBlZEFycmF5cywg
YXMgdGhleSBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IGNhbiBoYXZlIGEgbGVuZ3RoIHRoYXQgZG9l
cyBub3QgZml0IGluIDMyIGJpdHMuICovIFwKKyAgICBtYWNybyhHZXRBcnJheUxlbmd0aEFzSW50
NTIsIE5vZGVSZXN1bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFZlY3Rvckxlbmd0aCwgTm9kZVJl
c3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE5vZGVSZXN1
bHRJbnQzMikgXAorICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgTm9k
ZVJlc3VsdEludDUyKSBcCiAgICAgbWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFNraXBTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUmVzb2x2ZVNjb3Bl
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2OWFjZjUxOWMwYmEuLmQ1ZGEzNGE1MTk5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC05
NywxMCArOTcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNWYWx1ZQogICAgIH0KICAgICBpZiAoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KGJhc2VWYWx1ZSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpbmRl
eCwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5k
ZXgsIHZhbHVlKTsKKyAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBp
bmRleCwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGluZGV4LCB2YWx1ZSwgc3RyaWN0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc1LDcgKzE3Myw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdD
bGFzcz4KLWNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IHNpemUsIGNoYXIq
IHZlY3RvcikKK2NoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBzaXpl
LCBjaGFyKiB2ZWN0b3IpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCkBAIC0xODMsMTEgKzE4MSwxMyBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cgogICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiX3MpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCisgICAgc2l6ZV90IHVuc2lnbmVkU2l6
ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSk7CisKICAgICBpZiAodmVjdG9yKQotICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVj
dG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplLCB1bnRhZ0FycmF5UHRyKHZlY3Rvciwg
c2l6ZSkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpj
cmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXpl
LCB1bnRhZ0FycmF5UHRyKHZlY3RvciwgdW5zaWduZWRTaXplKSkpOwogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgdW5zaWduZWRTaXplKSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+
CkBAIC0xOTA4LDcgKzE5MDgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QXJyYXlCdWZmZXIsIEpTQ2VsbCosIChWTSogdm1Qb2ludGVyLCBTdHJ1YwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE5MjQsNyArMTkyNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTU2LDcgKzE5NTYsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MzJB
cnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxs
b3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTk3Miw3ICsxOTcyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBl
ZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51
bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQx
NkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNp
emVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTIwMDQsNyArMjAwNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNVaW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwg
Y2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjAsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDM2
LDcgKzIwMzYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMjA1Miw3ICsyMDUyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsy
MDY4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAppbmRleCA4NDRjMTliMzExNDEuLjgwZGY4MWZkZjA1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5
QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNo
YXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
c2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdG
bG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yLCBK
U0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVjMC4uNDc4NzAzYWMxMDg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNl
IFN0cmluZ0NvZGVQb2ludEF0OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQz
Mk9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCA5MjRmYzhjMzEwODYuLjViZDM3N2RhZjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTM3Myw2ICszNzMsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBBcnJh
eVBvcDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKQEAgLTM4NSw2ICszODYsNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGJvb2wgaWdubwogCiAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgIGNhc2UgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTI6CiAgICAgICAgIHJldHVybiAhKHN0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSAmIH4oU3BlY1R5cGVkQXJyYXlWaWV3KSk7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1
dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCA5YjFmZGNkYjEwZjguLjNlM2Y4MDIwY2QwNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyMzksMTYg
KzMyMzksMjggQEAgSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBl
ZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmUKICAgICBKU0FycmF5QnVmZmVyVmll
dyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0
YXRlLmZvck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+
YXJyYXlNb2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9
IHZpZXctPmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7
CiAgICAgICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSku
bm9kZSgpOwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRl
eE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55
SW50Q29uc3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOwor
I2Vsc2UKICAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihs
ZW5ndGgpKTsKKyNlbmRpZgogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJu
IG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBp
bmRleEdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0
LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQ
UiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BS
LCBHUFJSZWcgaW5kZXhHUFIpCkBAIC03OTU0LDcgKzc5NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2UoR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBzdG9yYWdl
UmVnLCBibwogewogICAgIGF1dG8gdW50YWdBcnJheVB0ciA9IFsmXSgpIHsKICNpZiBDUFUoQVJN
NjRFKQotICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3RoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBz
dG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOworICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVu
Z3RoNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOwogI2Vsc2UKICAg
ICAgICAgVU5VU0VEX1BBUkFNKHZhbGlkYXRlQXV0aCk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShi
YXNlUmVnKTsKQEAgLTgzMzYsMTIgKzgzNDgsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIGJhc2UpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJjZSgpLCBudWxs
cHRyLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkpKTsKKyNlbHNl
CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisjZW5kaWYK
ICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfSB9CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSWRl
bnQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmdPclN5bWJv
bCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMTEwNSwxMCArMTExMjMsMjAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQog
ICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOwogICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRB
cnJheVR5cGUpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIAor
CiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVj
dCBhIENQVVJlZ2lzdGVyLCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBtX2pp
dC5zaWduRXh0ZW5kMzJUb1B0cihzaXplR1BSLCBzaXplR1BSKTsKKyNlbmRpZgorCisgICAgZW1p
dE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0
cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBl
ZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVk
QXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIp
Cit7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3Rv
cmFnZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTI0LDYg
KzExMTUyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShOb2RlKiBub2RlKQogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNB
cnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91
Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51
bWJlci4KKyAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKTsKICAgICAKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNj
cmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6
ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTc5LDkgKzExMjA5LDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSog
bm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQuc3RvcmU2NCgK
KyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICBt
X2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBUcnVzdGVkSW1tMzIoRmFzdFR5
cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAtMTQxNTMsNiArMTQxODksMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXpl
KG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50
NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGI2NTE1
ZDhiNzIxOS4uNmE2Mjc3NGNkZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGlu
dDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUqKTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdp
c3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlw
ZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZv
aWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAt
MTM3Myw2ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMo
Tm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKE5vZGUq
KTsKKyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0MzUsNiArMTQ0Miw5IEBA
IHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNo
ZWRJZk91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAg
b3V0T2ZCb3VuZHMpOwogICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSopOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAg
IHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlw
ZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+
KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxl
UHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5v
ZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlw
ZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1
cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+
JiBwcmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9n
cHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4g
aXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEg
Y2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6
ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQ
UlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAo
aS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUg
c2lnbi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBh
eWxvYWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5k
ZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGIyZTYyMzBkNWQ1Ni4uYzhiN2M4
MDJjMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0
dXBsZTxKCiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHBy
ZWZpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5v
ZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFy
cmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAg
ICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBAIC0zNTM1LDYgKzM1MzYsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJy
YXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0
aEFzSW50NTI6CisgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBsYXJn
ZXIgdGhhbiAyR0Igb24gMzItYml0IHBsYXRmb3Jtcy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsK
ICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzYx
Nyw2ICszNjIzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEFzSW50NTI6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBj
b21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNzU1NzUy
NDhhZmVhLi45OGE0Yjk2YjNmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2OTQsNiArMjY5NCw4NyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFt
YmRhPHN0ZDo6dHVwbGU8SgogICAgIH0gfQogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlw
ZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0
LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0
dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3Ry
dWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCBzaXplKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisK
KyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5
VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0
LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhf
QVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0
aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0
cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sK
KyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMp
OworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JH
UFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworICAg
IEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0
YUdQUik7CisgICAgQVNTRVJUKHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKKworICAgIEdQUlJlZyBh
cnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBlbXB0eUJ5
dGVPZmZzZXQgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxU
eXBlZEFycmF5KSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdmVjdG9yR1BS
KTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIG51bGxWZWN0b3IgPSBtX2ppdC5icmFuY2hQdHIo
SklUQ29tcGlsZXI6OkVxdWFsLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW1QdHIoSlNBcnJheUJ1ZmZl
clZpZXc6Om51bGxWZWN0b3JQdHIoKSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBkYXRh
R1BSKTsKKyAgICBtX2ppdC5jYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6SlNWYWx1ZSwg
ZGF0YUdQUik7CisKKyAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UoYmFzZUdQUiwgdmVjdG9yR1BS
KTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQUik7CisgICAg
Ly8gRklYTUU6IFRoaXMgbmVlZHMgY2FnaW5nLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGFycmF5QnVmZmVyR1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkp
LCBkYXRhR1BSKTsKKyNpZiBDUFUoQVJNNjRFKQorICAgIG1faml0LnJlbW92ZUFycmF5UHRyVGFn
KGRhdGFHUFIpOworI2VuZGlmCisKKyAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwgdmVjdG9yR1BS
KTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisKKyNpZiBD
UFUoQVJNNjRFKQorICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisgICAgZW1w
dHlCeXRlT2Zmc2V0LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIo
bnVsbHB0ciksIHZlY3RvckdQUik7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyNpZiAhQ1BV
KEFSTTY0RSkKKyAgICBBU1NFUlQoIUpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkp
OworICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisKKyAgICBzdHJpY3RJbnQ1
MlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAtNDM3
NSw2ICs0NDU2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAor
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjb21waWxlR2V0QXJyYXlM
ZW5ndGhBc0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJ
ZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC00NDkzLDYgKzQ1NzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAg
YnJlYWs7CkBAIC01NTgzLDcgKzU2NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwg
dDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMs
IEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNTc4NCw3ICs1ODc0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56
ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNp
emUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNp
emUgLSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEp
OworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQx
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNr
SG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVj
a0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uNmIzZTI1M2VmOTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAKQEAgLTI3OSw2ICsyNzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5Ogog
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICAgICAgICAgICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0zNTksNiArMzYwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0
QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNh
c2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4uYzk5MGQ1OWNi
YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2Ug
TnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFN0b3Jl
QmFycmllcjoKQEAgLTM5MSw2ICszOTIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRz
OgogICAgIGNhc2UgQ1BVSW50cmluc2ljOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAg
ICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZmRjZTI2ODFlNzQz
Li5jYTJhY2UwOGQyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTEwMjUsNiArMTAyNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAg
ICAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRWZWN0b3JMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTA1NCw4ICs1MDU3LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
aWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSkgewotICAgICAg
ICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25O
ZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCkpOworICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2Fk
NjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChsZW5ndGgsIG1fb3V0LmNvbnN0
SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAg
ICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYgKzUwNjgs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldEFy
cmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX25vZGUt
PmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBzZXRTdHJpY3RJ
bnQ1MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgdm9pZCBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHN3
aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTgxNjksOTggKzgxODAsMTkg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkp
OwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
OwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdC
bG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdl
ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0gICAgICAgICAgICBtX291dC5i
cmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQuY29uc3RJbnQz
MihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAgICAgICAgIHJh
cmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBz
bG93Q2FzZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAgICAgICAgICAg
ICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50MzIobG9n
RWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudFNp
emUodHlwZWRBcnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVTaXplID0gbV9v
dXQuYml0QW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0
LmNvbnN0SW50UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
fnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKLSAgICAgICAg
ICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNl
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAgICAgICAgICAg
ICBzdG9yYWdlLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAgICAgICAgICAg
ICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdElu
dFB0cigzKSkpLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAgICAgICAgICAg
ICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShBUk02NEUpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291dC56ZXJv
RXh0UHRyKHNpemUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGlj
YXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAgICAgICAgICBh
dXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAgICAgICAgICAg
ICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVw
OjpTb21lTGF0ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRH
ZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFd
LmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQudGFnQXJy
YXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0gICAgICAgICAg
ICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBt
X291dC5hbmNob3Ioc3RvcmFnZSk7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNp
Z25FeHQzMlRvNjQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAgICBM
VmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRjaCAodHlw
ZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKLSAg
ICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAgZmFzdFJlc3Vs
dFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0
LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVE
X0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAgICAgICAg
ICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9
IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291dC5zdG9yZVB0
cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVj
dG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBtX291dC5zdG9y
ZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1f
aGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwotCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29u
dGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGko
cG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgICAgICBlbWl0
TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxh
enlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0
aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlw
ZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwotICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHNp
emUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7Cisg
ICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLQogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBhcmd1
bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAKQEAgLTgyNzcsNyArODIwOSwx
MDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAgIHsKKyAgICAgICAgTEJh
c2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKKworICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShzaXplNjRCaXRzLCBtX291
dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCisgICAgICAg
ICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOworCisgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNl
LCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRo
ZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgICAgIHN0
YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNp
emVMaW1pdCkpOworICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmNhc3RUb0ludDMyKHNpemU2
NEJpdHMpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9CisgICAgICAgICAgICBtX291dC5z
aGwobV9vdXQuemVyb0V4dFB0cihzaXplKSwgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6
ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlU
eXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAorICAgICAg
ICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAorICAg
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykp
KTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JT
aXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dD
YXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRv
ciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBzdG9yYWdl
LAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQuY2FzdFRv
SW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKKyAgICAg
ICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVBy
b3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAgICAgTFZh
bHVlIHNpemVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNpemUpOworICAgICAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkp
OworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7
CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAo
QjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFt
c1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBqaXQudGFnQXJy
YXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9y
YWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKKyAgICAg
ICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NB
U0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAgICAgICAgICAgZmFz
dFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9B
UlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCisgICAgICAgIGNh
c2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVP
YmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAgICAgICBtX291dC5zdG9yZTMyKHNpemUs
IGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAg
ICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0
UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAgICAg
bXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291
dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwor
ICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5v
U3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Cisg
ICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAg
ICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8
TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
TGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5
cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGly
ZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1
ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
KQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CkBAIC0xNTU5MSw3ICsxNTYxOCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdE
YXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1ZSBsZW5n
dGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUgbGVuZ3Ro
ID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAg
ICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0
KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNTczNCw3ICsxNTc2MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0g
ICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5l
Z2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAg
ICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1f
aGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVlIGluZGV4VG9D
aGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6
ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNr
LCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzI2
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0gWyZdKExWYWx1
ZSB0YWdnZWRQdHIpIHsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYgKGtpbmQgPT0g
R2lnYWNhZ2U6OlByaW1pdGl2ZSkgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9v
dXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQ2NChiYXNlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVudGFnQXJyYXlQ
dHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBhOTQyMDA5M2Y1Mjku
LmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0z
MjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBs
b2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsgfQogICAgIExWYWx1ZSBs
b2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZDMyKHBv
aW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25z
dCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIoYmFzZSwgZmllbGQpOyB9Cisg
ICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhl
YXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQpOyB9CiAKICAgICBMVmFsdWUg
ZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcApp
bmRleCA5NGY3YWZlMTFhOTEuLjdhNTYwNzU2NWQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzksMjMgKzc5LDMyIEBAIHZvaWQg
SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJpbnNpYygpKSB7CiAgICAgY2Fz
ZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0
LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2Ny
YXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
dmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7Cisj
ZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewogICAgICAgICBUeXBl
ZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7Ci0KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkg
PiAxKQorICAgICAgICAgICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6
ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1
ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAg
ICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlm
IChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBi
aXRzaGlmdCBoZXJlIHNpbmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGgg
dGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVH
UFIsIEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAg
Ly8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gMzItYml0IHBsYXRmb3JtcyBU
eXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMy
LgorICAgICAgICAgICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0
eXBlKSksIHZhbHVlR1BSKTsKICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1
ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMjYsOCArMTM1LDEyIEBAIHZvaWQgSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlCiAgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVlR1BS
KTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBz
dGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5i
b3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNj
ZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBkN2RmN2NiOGU4NzUuLjVkNmIwYTg1YTQyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAg
KzkzNyw4IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAq
aW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAo
b2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAg
b2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChv
YmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
YXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3Vu
ZHMoKTsKQEAgLTIzNDEsMTcgKzIzMzksMTcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1
ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0g
c3Vic2NyaXB0LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7
CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdl
dEFzVWludDMySW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAg
ICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYm
IGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1
aWNrbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1
bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdP
dXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0yMzcxLDggKzIzNjksNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogYwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGkgPj0g
MCkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSkpOworICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBpKSk7CiAgICAg
fSBlbHNlIGlmIChzdWJzY3JpcHQuaXNOdW1iZXIoKSAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYg
YXJyYXlQcm9maWxlKQogICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4
IDk2OTU1ZTlkMjc0MS4uOWRlYzQzNWI0YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEwNDYsOCArMTA0Niw4IEBAIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlCiAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRz
KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAg
aWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQotICAgICAgICAgICAgICAgIHJldHVy
biBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2lu
Z091dE9mQm91bmRzID0gZmFsc2U7CiAKQEAgLTExNjksMTQgKzExNjksMTMgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpCiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBi
b29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgCiAgICAg
aWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWlu
dDMySW5kZXgoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAo
YmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhR
dWlja2x5KGksIHZhbHVlKSkKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2ts
eSh2bSwgaSwgdmFsdWUpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCFvYmpl
Y3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSkpCiAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5k
ZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBpc1N0cmljdE1vZGUpOwogICAgICAg
ICAgICAgTExJTlRfRU5EKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkZTZhODJkZDZkNjcuLjNk
ZjVjZDA1MmNmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjE1LDYgKzIxNSw3IEBAIGVuZAogaWYgSlNWQUxVRTY0
CiAgICAgY29uc3QgTnVtYmVyT2ZTdHJ1Y3R1cmVJREVudHJvcHlCaXRzID0gY29uc3RleHByIFN0
cnVjdHVyZUlEVGFibGU6OnNfbnVtYmVyT2ZFbnRyb3B5Qml0cwogICAgIGNvbnN0IFN0cnVjdHVy
ZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5
Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgorICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1h
eExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVu
Z3RoCiBlbmQKIAogY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4
cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwKQEAgLTEzMDAsNyArMTMwMSw3IEBAIG1h
Y3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBz
Y3JhdGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBp
bmRleGluZ1R5cGUKIGVuZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgs
IGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCittYWNy
byBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5p
c2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCBzbG93UGF0aCkKICAgICAjIEZp
cnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBoYXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1
cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZyb250LgogICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBl
W2Jhc2VdLCB0MgogICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKQEAgLTEzMTEsOCAr
MTMxMiwxNCBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaElu
dEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAg
ICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAg
bG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAg
YmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0
aCwgc2xvd1BhdGgKKyAgICBlbHNpZiBKU1ZBTFVFNjQKKyAgICAgICAgIyBsZW5ndGggYW5kIHNj
cmF0Y2ggYXJlIGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2Ug
dGhleSBhcmUgbm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICBicWFlcSBpbmRl
eCwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBi
cWJlcSBpbmRleCwgc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoLCBzbWFsbFR5cGVkQXJyYXkKKyAg
ICAgICAgc2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6CiAgICAgZWxzZQog
ICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQg
b24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9y
bXMuCiAgICAgICAgIGJpYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFz
ZV0sIHNsb3dQYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDU4MDZhOWVhNmU3MS4uZDY0OTEwYjZl
NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTY3MCw3ICsxNjcwLDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3Jh
Z2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZp
bmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFy
cmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBtYWNy
byAoKSBlbmQsIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDBmNTVj
YTc0NTkwMy4uZWYxN2NjMTQwNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcyMCw2ICsxNzIwLDEwIEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gx
LCBzY3JhdGNoMikKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisg
ICAgICAgIHN0b3JlYiAxLCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9t
YXlNYXlCZUxhcmdlVHlwZWRBcnJheVt0NV0KKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0
MikKIAogICAgIGdldChtX2Jhc2UsIHQyKQpAQCAtMTc3MCw3ICsxNzc0LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0
b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWws
IGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBl
ZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBz
ZXRMYXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93Ogog
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFl
Li40OTdmNDllOGExZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCop
Pj4gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJu
IGRlc3RydWN0b3IuZ2V0KCkuY29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5
QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6
ZV90IHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAg
ICA6IG1fZGF0YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1
Y3RvcikpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5
QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYm
IG90aGVyKQogICAgIG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNv
bnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5
dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1
ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXpl
SW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAg
IDogbV9kYXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5C
eXRlcykKIHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6
cmVzZXQoKQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29u
dGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJD
b250ZW50czo6dHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3Qg
YWxsb3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVt
ZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1l
bnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1l
bnRCeXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAg
ICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVj
a2VkU2l6ZSBzaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzOworICAgIHNpemVJbkJ5dGVzICo9IGVs
ZW1lbnRCeXRlU2l6ZTsKKyAgICBpZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNp
emVJbkJ5dGVzLnZhbHVlKCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKKyAgICAgICAgcmVz
ZXQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KG51bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxl
bWVudEJ5dGVTaXplKTsKLSAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlczsK
KworICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAg
aWYgKCFhbGxvY2F0aW9uU2l6ZSkKICAgICAgICAgYWxsb2NhdGlvblNpemUgPSAxOyAvLyBNYWtl
IHN1cmUgbWFsbG9jIGFjdHVhbGx5IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11
Y2guIFdlIHVzZSBudWxsIHRvIG1lYW4gdGhhdCB0aGUgYnVmZmVyIGlzIGRldGFjaGVkLgogCiAg
ICAgdm9pZCogZGF0YSA9IEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwg
YWxsb2NhdGlvblNpemUpOwotICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVz
KTsKKyAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRhLCBzaXplSW5CeXRlcy52YWx1ZSgpKTsKICAg
ICBpZiAoIWRhdGEpIHsKICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0
LDcgKzEzMiw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAgICAgaWYgKHBvbGljeSA9PSBa
ZXJvSW5pdGlhbGl6ZSkKICAgICAgICAgbWVtc2V0KGRhdGEsIDAsIGFsbG9jYXRpb25TaXplKTsK
IAotICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlczsKKyAgICBtX3NpemVJbkJ5dGVzID0g
c2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9
IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiAgICAgbV9kZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6
OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQpAQCAtMTc4LDcgKzE3Niw3IEBAIHZv
aWQgQXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmIG90
aGVyKQogICAgIFJFTEVBU0VfQVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxl
bWVudHMsIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0xOTEsNyArMTg5
LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBv
dGhlcikKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVy
LmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxl
bmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgp
OwogICAgIGlmICghYnVmZmVyKQpAQCAtMjA4LDcgKzIwNiw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyBD
dXJyZW50IHRoaXMgaXMgb25seSB1c2VkIGZyb206CiAvLyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PD46OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1v
cnkgc2hvdWxkIGhhdmUgYWxyZWFkeSBjb21lCiAvLyAgIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVB
ZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFTU0VS
VCghR2lnYWNhZ2U6OmlzRW5hYmxlZCgpIHx8IChHaWdhY2FnZTo6Y29udGFpbnMoZGF0YSkgJiYg
R2lnYWNhZ2U6OmNvbnRhaW5zKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5
dGVMZW5ndGggLSAxKSkpOwogICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIy
MCw3ICsyMTgsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVk
KGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndAogLy8gICBsb25nZXIgY2FnZWQs
IG9yIHdlIGNvdWxkIGludHJvZHVjZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhh
dCBhcmUgdW5jYWdlZCBhbmQgZ2V0IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVudGx5LgogLy8gLSBX
ZWJBc3NlbWJseS4gV2FzbSBzaG91bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1
bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3Ry
dWN0b3IpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYgZGVzdHJ1Y3RvcikKIHsKICAgICBpZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2Fn
ZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxl
UHJpbWl0aXZlR2lnYWNhZ2UoKTsKQEAgLTIyOSw3ICsyMjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
Ynl0ZUxlbgogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShjb250ZW50cykpOwogfQogCi1SZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzOSw3ICsy
MzcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlC
dWZmZXImIG90aGVyKQogICAgIHJldHVybiB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5i
eXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6
ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAg
ICBjb250ZW50cy50cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpEb250SW5pdGlhbGl6ZSk7CkBAIC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBi
eXRlTGVuZwogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRlbnRzKSwgc291
cmNlLCBieXRlTGVuZ3RoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9u
UG9saWN5IHBvbGljeSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250
ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIGF1dG8gYnVmZmVyID0g
dHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CiAgICAgaWYg
KCFidWZmZXIpCkBAIC0yNjYsMTUgKzI2NCwxNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlUwog
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRl
bnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYg
Y29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7Ci0gICAg
QVNTRVJUKCFieXRlTGVuZ3RoIHx8IHNvdXJjZSk7CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdFJl
ZigqbmV3IEFycmF5QnVmZmVyKFdURk1vdmUoY29udGVudHMpKSk7Ci0gICAgbWVtY3B5KGJ1ZmZl
ci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIGlmIChieXRlTGVuZ3RoKSB7Cisg
ICAgICAgIEFTU0VSVChzb3VyY2UpOworICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNv
dXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgfQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSBwb2xpY3kpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFy
cmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBB
cnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51
bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEsNyArMjkxLDcgQEAg
QXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykK
IHsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2ln
bmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQorc2l6ZV90IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVl
KGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0
IDw9IHJpZ2h0KTsKICAgICBpZiAoeCA8IGxlZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgdW5zaWdu
ZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2ln
bmVkIHJpZ2h0KQogICAgIHJldHVybiB4OwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xh
bXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoZG91YmxlIGluZGV4KSBjb25zdAogewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBi
eXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CiAg
ICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7
CiAgICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwpAQCAtMzE5
LDkgKzMxOSw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJs
ZSBiZWdpbikgY29uc3QKICAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5k
ZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVu
ZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1w
ZWRJbmRleChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQg
c2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKKyAgICBzaXplX3Qgc2l6ZSA9
IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKICAgICBhdXRvIHJlc3VsdCA9IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdp
biwgc2l6ZSk7CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9k
ZShzaGFyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCmluZGV4IDY4ZmY5MGUxM2ViYS4uODlhMGI5YzhhOTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSwxNCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorI2lmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIE1BWF9BUlJBWV9C
VUZGRVJfU0laRSAoMXVsbCA8PCAzMikKKyNlbHNlCisvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyBh
IHNpemVfdCB0byBzdG9yZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhcnJheSBidWZmZXJzLCB3ZSBj
YW5ub3Qgc3VwcG9ydCA0R0Igb24gMzItYml0IHBsYXRmb3Jtcy4KKy8vIE5vdGUgdGhhdCBzdG9y
aW5nIHRoZSBzaXplIGluIGEgdWludDY0X3Qgd291bGQgYmUgcXVpdGUgbWVzc3kgb24gMzItYml0
cyBhcyB0aGUgSklUIGhhdmUgdG8gYmUgYWJsZSB0byBtYW5pcHVsYXRlIGl0LgorLy8gU28gd2Ug
YXJlIHN0aWNraW5nIHdpdGggMkdCLiBJdCBzaG91bGQgaW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRv
IHN1cHBvcnQgdXAgdG8gKDRHQiAtIDFCKSBpZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9B
UlJBWV9CVUZGRVJfU0laRSAweDdmZmZmZmZmdQorI2VuZGlmCiAKIGNsYXNzIFZNOwogY2xhc3Mg
QXJyYXlCdWZmZXI7CkBAIC01MSw3ICs1OCw3IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uID0gUGFja2VkUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+CiAK
IGNsYXNzIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gewogcHVibGljOgotICAgIFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCBzaXplX3QsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIH5T
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKCk7CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwobV9zaXplSW5CeXRlcyk7IH0KQEAgLTYwLDE0
ICs2NywxNCBAQCBwcml2YXRlOgogICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNh
Z2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsK
ICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7Ci0g
ICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKIH07
CiAKIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFycmF5QnVmZmVyQ29udGVudHMpOwogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFy
cmF5QnVmZmVyQ29udGVudHMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNv
bnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9y
RnVuY3Rpb24mJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250
ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5
QnVmZmVyQ29udGVudHMmIG9wZXJhdG9yPShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpAQCAtNzks
NyArODYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJu
ICEhbV9kYXRhOyB9CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5nZXRNYXlCZU51bGwoc2l6ZUluQnl0ZXMoKSk7IH0KLSAgICB1bnNpZ25lZCBzaXplSW5CeXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0
ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc1No
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9CiAgICAgCkBAIC05NCw3ICsxMDEsNyBA
QCBwcml2YXRlOgogICAgICAgICBEb250SW5pdGlhbGl6ZQogICAgIH07CiAKLSAgICB2b2lkIHRy
eUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICB2b2lkIHRyeUFsbG9jYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7
CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvKEFycmF5
QnVmZmVyQ29udGVudHMmKTsKQEAgLTEwNSwyOCArMTEyLDI4IEBAIHByaXZhdGU6CiAgICAgRGF0
YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1f
ZGVzdHJ1Y3RvcjsKICAgICBQYWNrZWRSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4g
bV9zaGFyZWQ7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXpl
SW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZD
b3VudGVkPEFycmF5QnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFk
b3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0
IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCiAg
ICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmlu
aXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKTsKIAogICAgIGlubGluZSB2b2lkKiBkYXRhKCk7CiAgICAgaW5saW5lIGNvbnN0IHZvaWQq
IGRhdGEoKSBjb25zdDsKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0Owor
ICAgIGlubGluZSBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFr
ZVNoYXJlZCgpOwogICAgIHZvaWQgc2V0U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9k
ZSk7CkBAIC0xMzcsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91Ymxl
IGJlZ2luKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+
IHNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25z
dDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENs
YW1wZWRJbmRleChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpIGNvbnN0OwogICAgIAogICAgIGlu
bGluZSB2b2lkIHBpbigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7CkBAIC0xNjEsMTIgKzE2
OCwxMiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRU
YXNrPHZvaWQodm9pZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRp
YWxpemF0aW9uUG9saWN5KTsKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRl
cm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxp
emF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVu
dHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCBzaXplX3Qp
OworICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5p
dGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMm
Jik7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsK
LSAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVk
IGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsKKyAgICBpbmxpbmUgc2l6ZV90IGNsYW1wSW5kZXgoZG91
YmxlIGluZGV4KSBjb25zdDsKKyAgICBzdGF0aWMgaW5saW5lIHNpemVfdCBjbGFtcFZhbHVlKGRv
dWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KTsKIAogICAgIHZvaWQgbm90aWZ5RGV0
YWNoaW5nKFZNJik7CiAKQEAgLTE5Miw3ICsxOTksNyBAQCBjb25zdCB2b2lkKiBBcnJheUJ1ZmZl
cjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQogCi11bnNp
Z25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6
OmJ5dGVMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRlbnRzLnNpemVJbkJ5dGVz
KCk7CiB9CkBAIC0yMDUsNyArMjEyLDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBj
b25zdAogc2l6ZV90IEFycmF5QnVmZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIHNjYWxlIHRoaXMgYnkgdGhlIHNo
YXJlZCByZWYgY291bnQgb3Igc29tZXRoaW5nLgotICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZm
ZXIpICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBzaXpl
b2YoQXJyYXlCdWZmZXIpICsgYnl0ZUxlbmd0aCgpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpw
aW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmll
dy5jcHAKaW5kZXggNzY4ZmVhOTA5YmFiLi40NzM3MjI3NDUzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxOCArMjUsMTcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgot
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAog
QXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGJ5dGVMZW5ndGgpCiAgICAgICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAg
ICwgbV9pc0RldGFjaGFibGUodHJ1ZSkKICAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0
aCkKICAgICAgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hlY2tlZDx1
bnNpZ25lZCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CisgICAgQ2hlY2tl
ZDxzaXplX3QsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAgIGxlbmd0
aCArPSBieXRlTGVuZ3RoOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04obGVuZ3RoIDw9IG1fYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChtX2J1ZmZl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgK
aW5kZXggN2UzOTYwNzc3OGE5Li5lNzFiMDYxZmU3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUg
PGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NywxNCAr
NzgsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VB
ZGRyZXNzKCk7IH0KIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHNpemVf
dCBieXRlT2Zmc2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9
CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3Ro
OyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7
IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGV0YWNoYWJsZShib29sKTsKICAg
ICBib29sIGlzRGV0YWNoYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxlOyB9CkBA
IC05MiwxOSArOTMsMTggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
fkFycmF5QnVmZmVyVmlldygpOwogCiAgICAgLy8gSGVscGVyIHRvIHZlcmlmeSBieXRlIG9mZnNl
dCBpcyBzaXplIGFsaWduZWQuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdu
bWVudCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0aWMgYm9vbCB2
ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgZWxlbWVu
dFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKHNpemUgLSAxKSk7
CisgICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoZWxlbWVudFNpemUgLSAxKSk7CiAgICAg
fQogCi0gICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFu
IEFycmF5QnVmZmVyIGlzCi0gICAgLy8gd2l0aGluIHJhbmdlLgotICAgIHN0YXRpYyBib29sIHZl
cmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCBzaXplX3Qgc2l6ZSkKKyAgICAvLyBIZWxw
ZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMg
d2l0aGluIHJhbmdlLgorICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0
IEFycmF5QnVmZmVyJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbnVtRWxlbWVu
dHMsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ1
ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxl
bWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6ZTsKKyAgICAgICAgc2l6ZV90
IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIGVsZW1lbnRT
aXplOwogICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMgKzEx
Myw0OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0ds
b2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBs
KEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29s
IHNldEltcGwoQXJyYXlCdWZmZXJWaWV3Kiwgc2l6ZV90IGJ5dGVPZmZzZXQpOwogCi0gICAgaW5s
aW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxl
bmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBs
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQpOworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9v
bCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwg
c2l6ZV90IGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNp
Z25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwg
aW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1
bnNpZ25lZCogbGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNl
dCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAv
LyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5n
IGJ1ZmZlcidzIHZpZXcuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZv
aWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXIm
IGJ1ZmZlciwKLSAgICAgICAgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNp
Z25lZCAqb2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIHNp
emVfdCBhcnJheUJ5dGVPZmZzZXQsCisgICAgICAgIHNpemVfdCAqb2Zmc2V0LAorICAgICAgICBz
aXplX3QgKm51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0g
KFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgc2l6ZV90
IG1heE9mZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gYXJyYXlC
eXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQp
IHsKICAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAg
ICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAg
ICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwot
ICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgp
IC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiBhZGp1c3Rl
ZE9mZnNldCA9ICpvZmZzZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsK
KyAgICAgICAgYWRqdXN0ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAo
YWRqdXN0ZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkg
PiBidWZmZXIuYnl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRl
TGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9m
ZnNldC52YWx1ZSgpOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVy
LmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVu
dHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAK
LSAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBDUFUoSlNWQUxVRTY0KQorICAg
IHVpbnQ2NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVP
ZmZzZXQgOiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVu
c2lnbmVkIG1fYnl0ZUxlbmd0aDsKKyAgICBzaXplX3QgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNp
bmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIn
cyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
IGFycmF5LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8
IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxv
dworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0
aCgpLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAor
CiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygp
KTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwg
YXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlC
dWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJh
bmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBi
eXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8v
IE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRo
YW4oYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9CiAKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRh
dGEsIGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1
ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJh
bmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3Qg
Ynl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAg
fHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAv
LyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJU
aGFuKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0
aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRl
T2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onpl
cm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCiB7
Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNl
dCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0
ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFu
Z2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZz
ZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zmc2V0LCAwLCByYW5n
ZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFycmF5QnVmZmVyVmll
dzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5z
aWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQotewot
ICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBpZiAo
c3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAg
IGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7Ci0g
ICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAgICBl
bmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBzdGFy
dDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAqbGVu
Z3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2NGFmMi4uZmJjOTg0N2Qy
ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDIwICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgIDogQXJy
YXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsK
IH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBieXRlTGVuZ3RoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdU
Rk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZp
ZXc+IERhdGFWaWV3OjpjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90
IGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRhVmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uMzQwMjY1NDEwMzE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1
ZmZlclZpZXcgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0
YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRh
Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJy
YXlCdWZmZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBm
aW5hbApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdy
YXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRs
ZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdldChzaXplX3Qgb2Zmc2V0
LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAg
ICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBi
eXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29s
IGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQoc2l6ZV90
JiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0LCBsaXR0
bGVFbmRpYW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMpCkBAIC02
OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5k
aWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KHNpemVfdCBvZmZzZXQs
IFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVv
ZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uZjQ5Mzcw
ZmNhYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFs
IDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFy
cmF5LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6
ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBz
aXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
dHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6
ZV90IGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmlu
aXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOwogICAgIAog
ICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJlc3MoKSk7IH0KICAgICAKQEAg
LTY1LDI2ICs2NSwyNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsgemVy
b1JhbmdlKDAsIGxlbmd0aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hl
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRlTGVuZ3RoKCkg
LyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUgaXRlbShzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAg
ICAgICAgcmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KHVu
c2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXQoc2l6ZV90IGlu
ZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgp
W2luZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7CiAgICAgfQogCi0g
ICAgdm9pZCBzZXROYXRpdmUodW5zaWduZWQgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
dmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXROYXRpdmUoc2l6ZV90IGluZGV4LCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEo
KVtpbmRleF0gPSB2YWx1ZTsKQEAgLTEwMCwxNiArMTAwLDkgQEAgcHVibGljOgogCiAgICAgYm9v
bCBjaGVja0luYm91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25zdAog
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAg
IHJldHVybiAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQg
PD0gbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYg
b2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRo
YW4ob2Zmc2V0LCBjb3VudCwgdGhpcy0+bGVuZ3RoKCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAg
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3Q7Ci0gICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFs
CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzEx
MSw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVj
dCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4u
NTQyOTgwYWU2NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAg
ICBBU1NFUlQoKGxlbmd0aCAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVu
Z3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVu
c2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVu
Z3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0
ID0gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0
LDcgKzc1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFy
ZXN1bHQpCkBAIC04NSw3ICs4Niw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlD
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsK
QEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAg
ICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5
KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgp
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxl
bmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVu
Z3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3Nz
aWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0
QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zm
c2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5n
dGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcq
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApp
bmRleCA4OWVhZWJkM2MyY2MuLmYwNzQwY2I2ZDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBA
QCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpT
QXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0
KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rv
cikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9y
KQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBs
ZW5ndGgpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQog
CiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgs
IHVpbnQzMl90IGVsZW1lbnRTaXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIHNpemVfdCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1v
ZGUgbW9kZSkKICAgICA6IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC04MSwxOCArODEsMTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBEb24ndCBhbGxvdyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAg
IGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6
ZSkKKyAgICBDaGVja2VkPHNpemVfdD4gc2l6ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9IGVsZW1l
bnRTaXplOworICAgIGlmIChzaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0
aCkgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZl
Y3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwg
bGVuZ3RoKTsKKworICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9j
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUudmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFt
X3ZlY3RvcikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAg
ICAgICBtZW1zZXQodmVjdG9yKCksIDAsIHNpemUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0
RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVu
dFNpemUpOworICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1
ZSgpKTsKICAgICAKICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBP
dmVyc2l6ZVR5cGVkQXJyYXk7CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6
OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1
ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgdW5z
aWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVj
dHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVk
QXJyYXkpCkBAIC0xMTQsNyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJl
KHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmll
d01vZGUpCkBAIC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRT
aXplKEpTVHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhB
cnJheVR5cGVdOwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgp
IGNvbnN0CitzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogewor
I2lmIEFTU0VSVF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgp
OworICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQu
dmFsdWUoKTsKKyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFk
eSBjaGVja2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2Fu
aXR5IGNoZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkg
KiBlbGVtZW50U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5
QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAg
QXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhp
cy0+Ynl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0
aCgpOwogCiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7
CkBAIC0zMTYsNyArMzIzLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZl
clZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0
KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxl
bmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZB
Q1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFm
N2Y4MmE1My4uZGE2ZGQwYmQ3NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIg
PSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+
OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAot
ICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVu
dFNpemUpCisgICAgc3RhdGljIHNpemVfdCBzaXplT2Yoc2l6ZV90IGxlbmd0aCwgdWludDMyX3Qg
ZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAg
ICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2Vk
PHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7
CisgICAgICAgIHJlc3VsdCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4g
aW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYsMjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVi
bGljOgogICAgICAgICBlbnVtIEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5p
dGlhbGl6ZSB9OwogICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0
aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxl
bWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBs
ZW5ndGgsIHNpemVfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwp
OwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFz
dCB0eXBlZCBhcnJheXMuIEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAg
ICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCog
dmVjdG9yKTsKKyAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBzaXplX3Qg
bGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBs
ZW5ndGgpOwogICAgICAgICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07
CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHNpemVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAgICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAgICAgICAgIAog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJl
OyB9CiAgICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1h
eUJlTnVsbChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVy
biBtX21vZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVy
biBtX2J1dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgIHVzaW5nIFZlY3RvclR5
cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAg
ICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAgIHVpbnQzMl90IG1fbGVuZ3RoOwor
ICAgICAgICBzaXplX3QgbV9sZW5ndGg7CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsK
ICAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAgICB9OwpAQCAtMTkzLDggKzE5NSw4
IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwogICAgIGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3Rv
clB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9sZW5n
dGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBk
Li45OTIyZmZkYjU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjksMTMgKzY5LDE1IEBAIGlubGluZSB1aW50MzJfdCBK
U1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIq
IGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3Qg
YmUgbmVnYXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAoaXNJ
bnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworCiAgICAgaWYgKGQgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNi
OS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYg
dm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAog
SlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAg
c2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0
YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRh
Vmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1i
b29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCos
IHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0
Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxF
X0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3
OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0Rh
dGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSkKIHsKICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5l
YzJhZjY5ODIzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNBcnJheUJ1
ZmZlclZpZXc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBl
bGVtZW50U2l6ZSA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZWxlbWVudFNpemUg
PSAxOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBUeXBlZEFycmF5Q29udGVudFR5cGUgY29udGVu
dFR5cGUgPSBUeXBlZEFycmF5Q29udGVudFR5cGU6Ok5vbmU7CiAKQEAgLTQ2LDE1ICs0NiwxNSBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsCisgICAgICAgIHNpemVfdCBieXRlTGVu
Z3RoKTsKICAgICAKICAgICAvLyBEdW1teSBtZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3
b3JrOyB0aGVzZSBhcmUganVzdCBpbiBwbGFjZSB0bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1w
bGF0ZSBzcGVjaWFsaXphdGlvbiB3ZSBkbyBlbHNld2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBi
b29sIHNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVf
dCBsZW5ndGgpOworICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpT
VmFsdWUpOwogICAgIAogICAgIEFycmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVy
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggOTQ5MDYyNDdlYTY1Li5lMGZiYzUyZjg3NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTM2LDExICsxMzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAo
IWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJf
cyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVP
ZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0
ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQg
ZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90
IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChl
bGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAg
ICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9v
bGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXRE
YXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMg
YmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmll
dy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zm
c2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsK
IApAQCAtMTgyLDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmll
dykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAg
IAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5k
ZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQi
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0
bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0
LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFj
aGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZp
ZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsK
KyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxl
bWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVu
dFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJj
NTVhMGQ4MWQuLjZhYmQyYTQxYjE3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgi
CiAjaW5jbHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19F
WFBPUlRfUFJJVkFURSBjb25zdCBDbGFzc0luZm8qIGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZv
KCk7CiAvLyAgICAgU3RydWN0dXJlKiBTICAgICAvLyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRl
cmZseSogQiAgICAgLy8gZnJvbSBKU09iamVjdAogLy8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAg
ICAgdWludDMyX3QgTAorLy8gICAgIHNpemVfdCBMCiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQog
Ly8KLS8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRo
IHdvcmRzLiBGSVhNRTogTWFrZQorLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBm
aXZlIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29y
ZHMhCiAvLwogLy8gQiBpcyB1c3VhbGx5IHVudXNlZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0
aW9uYWwgIm92ZXJmbG93IiBkYXRhIGZvcgpAQCAtMTAzLDE0ICsxMDQsMTQgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKIAotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0
b3IpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFs
aXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0
aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBz
dGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwog
ICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJl
KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAot
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0K
ICAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiB0eXBlZFZlY3RvcigpIGNvbnN0CkBAIC0xMjIsNDYgKzEyMyw0NiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSo+KHZlY3RvcigpKTsKICAgICB9CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkp
IGNvbnN0CisgICAgYm9vbCBpbkJvdW5kcyhzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUg
bWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAg
Ly8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5H
ZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVp
Y2tseShzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAm
JiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0
SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBj
YW5TZXRJbmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRv
cjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QK
KyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUo
c2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUg
Z2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1
aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9K
U1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRv
TmF0aXZlVmFsdWUoc2l6ZV90IGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAg
ewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtp
XSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBK
U1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsK
ICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1
ZTxBZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAg
ICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBpLCBK
U1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0x
NzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJv
bVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxl
bWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZy
b21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVX
aXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1
ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZh
bHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQg
c29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9s
ZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAg
ICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+
PSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuKG9mZnNldCwgbGVuZ3Ro
LCBtX2xlbmd0aCk7CiAgICAgfQogICAgIAogICAgIC8vIExpa2UgY2FuU2V0UXVpY2tseSwgZXhj
ZXB0OiBpZiBpdCByZXR1cm5zIGZhbHNlLCBpdCB3aWxsIHRocm93IHRoZQogICAgIC8vIGFwcHJv
cHJpYXRlIGV4Y2VwdGlvbi4KLSAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9vbCB2YWxpZGF0ZVJh
bmdlKEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBp
dCByZXR1cm5zIGZhbHNlCiAgICAgLy8gdGhlbiBpdCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2Vw
dGlvbi4KLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNP
YmplY3QqLCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUg
dHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2Jq
ZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNPYmplY3QqLCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoLCBDb3B5VHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOwogICAgIAogICAg
IFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZElt
cGwoKTsKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlw
ZWRJbXBsKCk7CkBAIC0zMTgsOCArMzIyLDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVy
cm9yLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdp
dGhTcGVjaWZpY1R5cGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0
LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWdu
ZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhl
ckFkYXB0b3I+KiwKKyAgICAgICAgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwg
Q29weVR5cGUpOwogCiAgICAgLy8gVGhlIEVDTUEgNiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5n
IHBvaW50IFR5cGVkIEFycmF5cyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgog
ICAgIC8vCkBAIC0zNDksNyArMzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1cmlmeUFycmF5
KCkKICAgICB7CiAgICAgICAgIEVsZW1lbnRUeXBlKiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBhcnJheVtp
XSA9IHB1cmlmeU5hTihhcnJheVtpXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCmluZGV4IDQ1MDIzODc5MmQxMC4uMWViM2QxNzg2MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMu
aCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3
ICs0OCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldygKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTY1LDcgKzY2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBs
ZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNv
bnRleHQoc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlV2l0aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksNyAr
MTAwLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0NSw3ICsx
NDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2Uo
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFw
dG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNp
ZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZz
ZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVu
c2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCisgICAgc2l6ZV90IG90aGVyT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC0yMTgsNyArMjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhl
ci0+ZXhpc3RpbmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVt
ZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUg
PT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAg
ICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRv
PEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNO
YXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAog
ICAgIC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0
byBjb3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlU
b05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6
dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+
Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgs
MTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRX
aXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRp
YXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGkt
LTspIHsKICAgICAgICAgdHJhbnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRl
IGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykKICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1
ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBl
KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVu
c2lnbmVkIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9m
ZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAg
ICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsK
LSAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNl
IHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdl
IGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIG90aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Kj4ob2JqZWN0KTsKICAgICAgICAgbGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+
bGVuZ3RoKCkpOwogICAgICAgICAKQEAgLTMxMyw4ICszMTQsMTAgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIC8vIFdlIGNvdWxkIG9wdGltaXplIHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywg
d2UgZG9uJ3QuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwg
aSArIG9iamVjdE9mZnNldCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIC8vIGdldCgpIGZvciBub3cgcHJvYmFibHkgZG9lcyBub3Qg
ZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBpbmRpY2VzIGFib3ZlIFVJTlRfTUFYLgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNJbkJvdW5kczx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkp
OworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2Vz
cyA9IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNGMwZWJkMWY2MTY1Li5j
YTAwMWQ5NTQ5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApA
QCAtNjAsNiArNjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFs
dWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNz
IEV4Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEludGVybmFsRnVuY3Rpb247
CkBAIC0yMTEsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0
QnlJbmRleElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewogICAgICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAoY2FuU2V0SW5kZXhR
dWlja2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICBpZiAodHJ5U2V0SW5kZXhRdWlj
a2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhp
cywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAg
fQogCkBAIC0yODksNyArMjg4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgY2FuR2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBn
ZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKKyAgICBKU1ZhbHVl
IGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEFycmF5UHJvZmlsZSogPSBu
dWxscHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpKSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAotICAgIEpT
VmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisKKyAgICAvLyBVc2Vz
IHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBl
ZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHko
dW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJm
bHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFM
TF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGlmIChjYW5HZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KGkpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KGkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KGksIGFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgYnJl
YWs7CkBAIC00MTEsMzUgKzQxMSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXQoZ2xv
YmFsT2JqZWN0LCBpKTsKICAgICB9CiAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0OwogICAgIHZvaWQgc2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSk7Ci0gICAgICAgIAotICAgIGJvb2wg
Y2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCi0gICAgewotICAg
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwotICAgICAgICBz
d2l0Y2ggKGluZGV4aW5nTW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5H
X1RZUEVTOgotICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkoaSwgdmFsdWUpOwotICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lO
VDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5E
RVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJ
TkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAg
ICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKLSAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0
QXJyYXlTdG9yYWdlOgotICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6
Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rv
ckxlbmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
LT5tX3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0NvcHlP
bldyaXRlKGluZGV4aW5nTW9kZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgICAgICAKKyAgICB2b2lkIHNldEluZGV4
UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVuc2lnbmVkLCBKU1ZhbHVl
KTsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBpdCBzdWNjZWVkZWQKKyAgICAvLyBVc2VzIHRo
ZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFy
cmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHkoVk0mLCB1
bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9maWxlKiA9IG51bGxwdHIpOworCiAgICAgdm9pZCBz
ZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAg
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2ZTFiYjFi
NTlmMWUuLjBiZDFmMGY5MjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTQ2NSwyMSArNDY1LDExIEBAIGlubGluZSBib29sIEpT
T2JqZWN0OjpjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0
CiAgICAgfQogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFs
dWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJy
YXlQcm9maWxlKiBhcnJheVByb2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsK
LSNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMg
QXJyYXlUeXBlIDpcCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBB
cnJheSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9S
X0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJS
QVlfVFlQRSkKLSN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQorICAgIGlmIChpID4gQXJyYXlQcm9maWxlOjpz
X3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUpCisgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKIAotaW5saW5lIEpTVmFsdWUgSlNP
YmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKLXsK
ICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFt
ZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcgKzUwMiw5MSBA
QCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogfQotICAgIAor
CitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5k
ZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAgIEFycmF5U3Rv
cmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKKyAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICBKU1Zh
bHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAgIGlmICghb2xk
KSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAgICAgICAgaWYg
KGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgo
aSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNldEluZGV4UXVp
Y2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUpCit7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsK
KyAgICBzd2l0Y2goaW5kZXhpbmdNb2RlKCkpIHsKKyAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5E
RVhJTkdfVFlQRVM6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEFMTF9XUklUQUJM
RV9JTlQzMl9JTkRFWElOR19UWVBFUzogeworICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXYu
aXNJbnQzMigpKSB7CisgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZU9yQ29udGlndW91
c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIH0KKyAgICBjYXNlIEFM
TF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgIGlmIChpID49
IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIodik7CisgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkp
CisgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAg
ICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7CisgICAgICAgICAgICBjb252
ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIHZhbHVl
ID0gdi5hc051bWJlcigpOworICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHsKKyAgICAgICAg
ICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwg
aSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBidXR0
ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICBp
ZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgYnV0dGVyZmx5
LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CisgICAgY2FzZSBBcnJheVdpdGhBcnJh
eVN0b3JhZ2U6CisgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5
U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKKyAgICBjYXNlIEFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2U6CisgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+YXJyYXlT
dG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5t
X3ZlY3RvcltpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc2V0SW5kZXhR
dWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCisgICAgY2Fz
ZSBuYW1lICMjIEFycmF5VHlwZSA6IHtcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nh
c3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJh
eS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtc
CisgICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIGlm
ICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5
UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFy
cmF5KCk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVE
X0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisj
dW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25E
YXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBA
QCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7
CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYg
KG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAg
aWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAg
IGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRl
eCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThk
YzFhMzBhZWRkLi4yYTg2MzYzMWFhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGFnZUNvdW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KCgxdWxsIDw8IDMyKSAvIHBhZ2VTaXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgLyBwYWdlU2l6ZSk7CiAKICAgICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLjkzZjA2YzlkNWJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdn
ZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWdu
ZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5k
c0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1l
IHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3Jl
YXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQg
dHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3Qg
dHlwZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkg
PD0gdmFsdWUgJiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsK
QEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wg
aW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUg
dG8gdW5zaWduZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1
ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dl
ciB0aGFuIFRhcmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0x
NjgsNyArMTY4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91
bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291
cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhh
cyBncmVhdGVyIHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291
cmNlIHdpbGwgd2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3Vy
Y2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFy
Z2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNl
LCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Up
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAg
ICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0
aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91
bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1l
IHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5
cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUs
IHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
ICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewog
ICAgICAgICAvLyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lv
bi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChz
aXplb2YoVGFyZ2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5
cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUs
IGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
ICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewog
ICAgICAgICAvLyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAg
ICAgICAgcmV0dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhT
b3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7
CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1
ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Rh
dGljIGlubGluZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1
dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlu
bGluZSBjb25zdGV4cHIgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBv
dXRwdXQpCiB7CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAg
cmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuKFQgYSwgVCBiLCBUIGJv
dW5kKQoreworICAgIENoZWNrZWQ8VD4gc3VtID0gYTsKKyAgICBzdW0gKz0gYjsKKyAgICByZXR1
cm4gIXN1bS5oYXNPdmVyZmxvd2VkKCkgJiYgc3VtLnZhbHVlKCkgPCBib3VuZDsKK30KKwogfQog
CiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2lu
ZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2lu
ZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5n
IFdURjo6aXNTdW1TbWFsbGVyVGhhbjsK
</data>
<flag name="review"
          id="463538"
          type_id="1"
          status="-"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="463534"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439880</attachid>
            <date>2021-10-01 11:23:40 -0700</date>
            <delta_ts>2021-10-01 11:37:00 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>183191</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5mZjc2MTVlY2RhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xMjc1LDcgKzEyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB2YWx1ZSA+IDB4ZmY7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2hvdWxkQmxpbmRQb2ludGVy
Rm9yU3BlY2lmaWNBcmNoKHVpbnRwdHJfdCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgYm9vbCBzaG91
bGRCbGluZFBvaW50ZXJGb3JTcGVjaWZpY0FyY2godWludHB0cl90IHZhbHVlKQogICAgIHsKICAg
ICAgICAgaWYgKHNpemVvZih2b2lkKikgPT0gNCkKICAgICAgICAgICAgIHJldHVybiBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaChzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKTsKQEAgLTE0
NjAsNiArMTQ2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBhbmQ2
NChpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICAgfQorCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAogI2lmICFDUFUoWDg2KSAmJiAhQ1BVKFg4Nl82NCkgJiYgIUNQVShBUk02NCkK
QEAgLTE3MjcsNyArMTczMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0b3JlNjQoaW1tLmFz
VHJ1c3RlZEltbTY0KCksIGRlc3QpOwogICAgIH0KIAotI2VuZGlmIC8vIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkKKyNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShS
SVNDVjY0KQogICAgIAogICAgIHZvaWQgc3RvcmUzMihJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkK
ICAgICB7CkBAIC0xODIxLDYgKzE4MjUsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJh
bmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSk7CiAgICAgfQogCisjaWYg
Q1BVKFg4Nl82NCkKKyAgICAvLyBPdGhlciA2NC1iaXQgcGxhdGZvcm1zIGRvbid0IG5lZWQgYmxp
bmRpbmcsIGFuZCBoYXZlIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24sIFJlZ2lzdGVySUQs
IEltbTY0KSBkaXJlY3RseSBkZWZpbmVkIGluIHRoZSByaWdodCBmaWxlLgorICAgIC8vIFdlIGNh
bm5vdCBwdXQgdGhpcyBpbiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oLCBiZWNhdXNlIGl0IHVzZXMg
c2hvdWxkQmxpbmQoKSwgbG9hZFJvYXRpb25CbGluZGVkQ29uc3RhbnQsIGV0Yy4uIHdoaWNoIGFy
ZSBvbmx5IGRlZmluZWQgaGVyZSBhbmQgbm90IHRoZXJlLgorICAgIEp1bXAgYnJhbmNoNjQoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAg
IHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGhh
dmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7CisgICAgICAgICAgICAgICAgbG9hZFJv
dGF0aW9uQmxpbmRlZENvbnN0YW50KHJvdGF0aW9uQmxpbmRDb25zdGFudChyaWdodCksIHNjcmF0
Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2g2
NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHNjcmF0Y2ggcmVnaXN0ZXIg
YXZhaWxhYmxlIGZvciB1c2UsIHdlJ2xsIGp1c3QKKyAgICAgICAgICAgIC8vIHBsYWNlIGEgcmFu
ZG9tIG51bWJlciBvZiBub3BzLgorICAgICAgICAgICAgdWludDMyX3Qgbm9wQ291bnQgPSByYW5k
b20oKSAmIDM7CisgICAgICAgICAgICB3aGlsZSAobm9wQ291bnQtLSkKKyAgICAgICAgICAgICAg
ICBub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5h
c1RydXN0ZWRJbW02NCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29u
ZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgfQorI2VuZGlmIC8vIENQVShY
ODZfNjQpCisKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNDI1MDkwM2JjMzIy
Li5iMzdmNGQyOGJkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJ
bW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBy
aWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAg
IHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4MmQ1
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoMzIo
QWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVuZ3Ro
LCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAgICAgICBh
dXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9hZDY0KGxl
bmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVBdXRoID8g
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlkR1BS
UmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRhdGVB
dXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0MDE3
Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRlclJlZ2lz
dGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgCi0gICAgc3Rh
dGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hv
dWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49
IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25z
dGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVy
YXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li5kN2RmMWU5M2YwZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTExOTEsMTIgKzExOTEs
MTcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKIAogICAgICAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBzdGF0ZS51LnByb3BlcnR5R1BSOwogCi0gICAgICAgIAogICAgICAg
ICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5k
KGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKSk7CiAKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90LCBzbyBl
aXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBq
aXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdGF0ZS5mYWlsQW5k
UmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNj
cmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBh
bGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpAQCAtMTYzMCw5ICsxNjM1LDE2IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwog
ICAgICAgICB9CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlz
IGEgc2l6ZV90LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRm
b3JtLgorICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAg
ICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBv
cGVyYXRpb24gZnVuY3Rpb24uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChq
aXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3Jh
dGNoR1BSKSk7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUg
c2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBh
dGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCA2OTE2Nzk0ODQzYjAuLjRjMDQyYjAwNDU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZTsKIAogLy8gVGhpcyBp
cyBhIGJpdGZpZWxkIHdoZXJlIGVhY2ggYml0IHJlcHJlc2VudHMgYW4gdHlwZSBvZiBhcnJheSBh
Y2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4uCiAvLyBUaGVyZSBhcmUgMTkgaW5kZXhpbmcgdHlwZXMg
dGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMuCi0vLyBUaGVyZSBhcmUgOSB0eXBlZCBhcnJheSB0eXBl
cyB0YWtpbmcgdGhlIGJpdHMgMTYgdG8gMjUuCisvLyBUaGVyZSBhcmUgMTEgdHlwZWQgYXJyYXkg
dHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2LTIwIGFuZCAyNi0zMS4KIHR5cGVkZWYgdW5zaWduZWQg
QXJyYXlNb2RlczsKIAogLy8gVGhlIHBvc3NpYmxlIEluZGV4aW5nVHlwZXMgYXJlIGxpbWl0ZWQg
d2l0aGluICgwIC0gMTYsIDIxLCAyMywgMjUpLgpAQCAtMjA1LDEzICsyMDUsMjIgQEAgcHVibGlj
OgogICAgICAgICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAg
ICAgfQotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBBY2Nlc3NpbmcgdHlwZWQg
YXJyYXlzIGxhcmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCBhcyB3
ZSBjYW4ndCBmb3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50MzJfdC4KKyAgICAvLyBXZSBv
bmx5IHN1cHBvcnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24gNjQtYml0IHBsYXRmb3Jtcy4K
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisjZW5kaWYKKyAgICB2b2lk
IHNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1
ZTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorCiAgICAgU3Ry
dWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0
U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2Rlcygp
IHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1h
eVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KIAogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihBcnJheVByb2ZpbGUsIG1fbWF5U3RvcmVUb0hvbGUpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoQXJyYXlQcm9maWxlLCBtX2xhc3RTZWVuU3RydWN0dXJlSUQpOyB9CisgICAgLy8gc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZk1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEFycmF5UHJvZmlsZSwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSk7IH0KIAogICAg
IHZvaWQgc2V0T3V0T2ZCb3VuZHMoKSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9v
bCogYWRkcmVzc09mT3V0T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQpAQCAt
MjQ3LDEzICsyNTYsMTggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzIDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDog
MTsKICAgICBib29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CisgICAgYm9vbCBt
X21heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzIHsgMCB9OwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0g
MTIpOwogCiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5r
ZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVBy
b2ZpbGUoKQorICAgICAgICA6IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisg
ICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyAgICB7CisgICAgfQogCiAg
ICAgdm9pZCB1cGRhdGUoQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGUpCiAgICAgewpAQCAtMjgw
LDYgKzI5NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhcnJheVByb2ZpbGUubV91c2VzT3Jp
Z2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXM7CisKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkp
CisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJh
eVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0y
OTAsNyArMzA5LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVzIDogMTsKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgOiAxOwogfTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVubGlua2VkQXJyYXlQcm9maWxlKSA8PSA4KTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggYjFkZmNhMjc0OWMxLi4wNDJi
MDdiODhhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTM0ODYsNiArMzQ4NiwxNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KAorICAgICAgICAgICAgZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkpOworICAgICAgICBpZiAodmlldykg
eworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIodmlldy0+bGVuZ3RoKCkp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50NTJBbnkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzgyMSw2ICszODMyLDE5
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNldENvbmN1
cnJlbnRseSgpOworICAgICAgICAgICAgaWYgKGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50NTJBbnkpOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICgodmFsdWUubV90eXBlICYm
ICEodmFsdWUubV90eXBlICYgflNwZWNPYmplY3QpKSAmJiB2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zp
bml0ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA2ZTI3NTMxMDRiZDMuLjA1OWJhM2Y2
ZGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0zMjUsNiArMzI1LDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQxKCksIG5vZGUpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgaXMgb25s
eSB1c2VkIGZvciBUeXBlZEFycmF5cywgc28gc2hvdWxkIG5vdCBiZSByZWxldmFudCBmb3IgYXJn
dW1lbnRzIGVsaW1pbmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGls
ZDIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAg
ICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgICAgICAgICAgQml0VmVj
dG9yKiBiaXRWZWN0b3IgPSBub2RlLT5iaXRWZWN0b3IoKTsKICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50ID0gbV9ncmFwaC5pc1dhdGNo
aW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlNb2RlLmNwcAppbmRleCA2ZTRmZTlhZmEzZWIuLjA0MWFkYjc4NjM0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcApAQCAtMjA5LDcg
KzIwOSw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6Rm9yY2VFeGl0LCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAotICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSkKKyAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlv
bihpbmRleCkgJiYgIW1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCiAgICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OkdlbmVyaWMsIGFjdGlvbigpKTsKICAgICAKICAgICAvLyBJZiB3ZSBoYWQg
ZXhpdGVkIGJlY2F1c2Ugb2YgYW4gZXhvdGljIG9iamVjdCBiZWhhdmlvciwgdGhlbiBkb24ndCB0
cnkgdG8gc3BlY2lhbGl6ZS4KQEAgLTI5NCw2ICsyOTQsNyBAQCBBcnJheU1vZGUgQXJyYXlNb2Rl
OjpyZWZpbmUoCiAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6
OkJpZ0ludDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnVWludDY0QXJyYXk6CisgICAgICAg
IC8vIEZJWE1FOiBubyBpZGVhIHdoeSB3ZSBvbmx5IHByZXNlcnZlIHRoaXMgb3V0LW9mLWJvdW5k
cyBpbmZvcm1hdGlvbiBmb3IgUHV0QnlWYWwgYW5kIG5vdCBHZXRCeVZhbCBhcyB3ZWxsLgogICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkgewogICAgICAgICAgICAgaWYgKGdyYXBo
Lmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3V0T2ZCb3VuZHMpIHx8ICFpc0lu
Qm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlSZXN1bHQod2l0aFNw
ZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNiLi5jZmZmYzBlOGJiZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwog
ICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFz
Qnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJn
ZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgQXJyYXlNb2Rl
KEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91
bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAg
ICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJn
ZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpU
eXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6QWN0aW9uIGFjdGlvbikK
QEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1
LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAg
QXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJh
eTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24s
IEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBB
cnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBB
cnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBt
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgdS5hc0J5dGVzLnR5
cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAg
ICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uOwogICAgICAgICB1LmFz
Qnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24g
PSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IG1heUJl
TGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNp
b24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rp
b24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZh
bHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRlcy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3
NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3BlY3VsYXRpb24+KHUuYXNCeXRlcy5zcGVj
dWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNpb24+KHUuYXNCeXRlcy5jb252ZXJzaW9u
KTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlvbik7IH0KKyAgICBib29sIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFy
cmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3JkKCkgY29uc3QgeyByZXR1cm4gdS5hc1dv
cmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7Ci0gICAgCisK
KyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigp
LCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9
CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVj
dWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBh
cnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNv
bnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAg
ICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3Mp
IGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24g
Y29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0K
LSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtl
U2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6
OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigp
LCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQor
CisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxhcmdl
VHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNw
ZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBjb25zdAogICAgIHsKLSAgICAg
ICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CisgICAgICAgIHJldHVybiBBcnJh
eU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rp
b24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAorICAgIHN0YXRpYyBBcnJheTo6
U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKQorICAgIHsK
ICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5
OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6T3V0T2ZCb3VuZHM7CiAg
ICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCi0gICAgICAg
ICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAgICAgICAgICAgIHJldHVybiBB
cnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0g
QXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlv
bihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6SW5Cb3VuZHM7CiAg
ICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9u
KHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSkpOworICAg
IH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
IGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAg
IHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKLQogICAgICAgICBpZiAoaXNK
U0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKICAgICAg
ICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5
TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9k
ZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24o
KSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24o
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29u
dmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKKworICAgICAgICBBcnJheTo6
U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJvb2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJv
ZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKKworICAgICAgICByZXR1cm4gd2l0
aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KG15QXJyYXlD
bGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7CiAgICAgfQogICAgIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9
IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAgICAgICAgJiYgYXJyYXlDbGFzcygpID09
IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAgJiYgc3BlY3VsYXRpb24oKSA9PSBvdGhl
ci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29u
dmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNp
b24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlC
ZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3OSw3ICs1OTAsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwogICAgICAgICAgICAgdWludDhfdCBzcGVj
dWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29udmVyc2lvbiA6IDQ7Ci0gICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDE7Cisg
ICAgICAgICAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5
dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4ODExYjg5ZjI0YTcu
LjA3ZTgxY2I5YThjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTM4MjEsMjEgKzM4MjEsMjUgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9kZSogbGVuZ3RoTm9kZTsKKyAgICAgICAgaWYg
KGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIGxlbmd0aE5vZGUg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuYWJsZUludDUyKCkpOworICAgICAgICAgICAgbGVuZ3Ro
Tm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2Rl
KGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICB9
CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVy
ZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAgICAg
aWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVz
ZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBh
IGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5v
ZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5v
ZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2Ug
dHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4K
KyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6
ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2Rl
LCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM4NTIsNyAr
Mzg1NiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3Bl
cmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFy
cmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChy
ZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlU
eXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJ
bnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRk
VG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5
OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7CisgICAgICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJh
eVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIH0KIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMzg3MCw3ICszODc5LDEyIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5l
cmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpS
ZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJl
YWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChlbmFibGVJbnQ1MigpKTsKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBPcEluZm8oQXJyYXlNb2Rl
KGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNmZGU5Nzc5Li41NDhiZDBlZWU5ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRvckhhc093
blByb3BlcnR5OgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFs
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMTMzMyw2ICsxMzM0LDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEo
KSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0NCw2ICsxNDQ2LDE0
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjYXNl
IEdldEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlLmlzU29tZVR5cGVkQXJy
YXlWaWV3KCkpOworICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKEFycmF5TGVuZ3RoTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlO
b2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOiB7CiAgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CiAg
ICAgICAgIHN3aXRjaCAobW9kZS50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCmluZGV4IGM2NmZiMjIzOWY4Zi4uYWZkYzEwYThhMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIGJvb2wgdmFsaWRh
dGlvbkVuYWJsZWQoKQogI2VuZGlmCiB9CiAKLWlubGluZSBib29sIGVuYWJsZUludDUyKCkKK2lu
bGluZSBib29sIGNvbnN0ZXhwciBlbmFibGVJbnQ1MigpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApp
bmRleCAwNzBhNDg1NDdhOTcuLjYwOWZmMDg1Nzc4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcApAQCAtMTk3LDEwICsxOTcsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0
dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFz
SW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29k
ZUF0OgogICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAg
ICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgIGNhc2Ug
R2V0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCA4ZTFiOTNlZWU2Y2EuLjM0MDhhZWJmNzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA0Myw2ICsxMDQzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oaW5kZXhT
cGVjdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNT
cGVjaWZpYygpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5C
b3VuZHMoKQorICAgICAgICAgICAgICAgICAgICAmJiAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVM
YXJnZVR5cGVkQXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0
U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgewogCiAgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTEw
NzMsNyArMTA3NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNl
RXhpdDogewogICAgICAgICAgICAgICAgIC8vIERvbid0IGZvcmNlIE9TUiBiZWNhdXNlIHdlIGhh
dmUgb25seSBzZWVuIE93blN0cnVjdHVyZU1vZGUuCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdFIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4uCisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4uCiAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gRW51bWVyYXRvckdldEJ5VmFsKQogICAg
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0
aFR5cGUoQXJyYXk6OkdlbmVyaWMpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzMs
NiArMTEzNCwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJp
bmdVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6SW50MTZBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6Oklu
dDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OEFycmF5OgorICAgICAgICAg
ICAgY2FzZSBBcnJheTo6VWludDhDbGFtcGVkQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpVaW50MTZBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgorICAg
ICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJh
eTo6RmxvYXQ2NEFycmF5OgorICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPiht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgICAgICAvL2lmIChtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2Rl
LT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAg
ICAgICAgICAgICAvL2Vsc2UKKyAgICAgICAgICAgICAgICAvLyAgICBmaXhFZGdlPEludDUyUmVw
VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNl
bGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwpAQCAtMTE4NCw2
ICsxMjAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVy
U3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgJiYgbm9k
ZS0+YXJyYXlNb2RlKCkuaXNTcGVjaWZpYygpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUt
PmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKQorICAgICAgICAgICAgICAgICAgICAmJiAhbm9kZS0+
YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAm
JiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkg
ewogCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKQEAgLTEyNjYsNyArMTI4MywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Y2FzZSBBcnJheTo6VWludDE2QXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJB
cnJheToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAg
IC8vaWYgKGNoaWxkMi0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSB8fCAhbm9kZS0+YXJyYXlNb2Rl
KCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICAvL2Vsc2UKKyAgICAgICAgICAgICAg
ICAvLyAgICBmaXhFZGdlPEludDUyUmVwVXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGlm
IChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZp
eEludE9yQm9vbGVhbkVkZ2UoY2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGls
ZDMtPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpCkBAIC0xMjc3LDcgKzEyOTcsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4oY2hpbGQxKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIp
OworICAgICAgICAgICAgICAgIC8vaWYgKGNoaWxkMi0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSB8
fCAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICAvL2Vs
c2UKKyAgICAgICAgICAgICAgICAvLyAgICBmaXhFZGdlPEludDUyUmVwVXNlPihjaGlsZDIpOwog
ICAgICAgICAgICAgICAgIGZpeERvdWJsZU9yQm9vbGVhbkVkZ2UoY2hpbGQzKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CkBAIC0x
NzE3LDEyICsxNzQwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwot
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVy
YXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApAQCAtMjE0OSw3ICsyMTc2LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6
IHsKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgICAgIEFy
cmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUobV9ncmFwaCwgbm9k
ZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1bnVzZWRJbmRleFNw
ZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTb21lVHlwZWRB
cnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsK
KyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwg
bm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAgICAgICAgIGZpeEVk
Z2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CiAgICAgICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTI3MzIsNyArMjc3MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERh
dGFWaWV3R2V0SW50OgogICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8RGF0YVZpZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vaWYg
KG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1v
ZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vZWxzZSAvLyBGSVhNRTogbm90
IGNsZWFyIHdoYXQgd2Ugc2hvdWxkIGRvIGhlcmUgaWYgdGhlIGluZGV4IGlzIHNvbWV0aGluZyBj
cmF6eQorICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQzKCkpOwogCkBAIC0yNzU4LDcgKzI3OTksMTAg
QEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIERhdGFWaWV3U2V0OiB7CiAgICAgICAgICAgICBm
aXhFZGdlPERhdGFWaWV3T2JqZWN0VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsK
LSAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkpOworICAgICAgICAgICAgLy9pZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSB8fCAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgLy8gICAg
Zml4RWRnZTxJbnQ1MlJlcFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAg
ICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSkKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAg
ICAgICAgICAgCkBAIC00MDk2LDE0ICs0MTQwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAog
ICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAg
IE5vZGUqIHByZXBlbmRHZXRBcnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hp
bGQsIEFycmF5TW9kZSBhcnJheU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0g
Y2hlY2tBcnJheShhcnJheU1vZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRz
U3RvcmFnZSk7Ci0gICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBv
cmlnaW4sCi0gICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGls
ZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252
ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4y
ZDg2ZWI3NTczOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2Vu
ZXJhdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRp
b25JbmZvLmgKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBs
aXZlIHZhbHVlcyBkdXJpbmcgY29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3Jt
YXRpb24gYXMgdG8gd2hldGhlciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQg
aWYgc28gd2hpY2gsCiAvLyB3aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUg
UmVnaXN0ZXJGaWxlLCBhbmQgaWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWls
cyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJv
eGVkIGZvcm0sIGJ1dCB3ZSBtYXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94
KSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWlu
LAorLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFu
eSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93
IHdoZW4gdGhlIHZhbHVlIGlzIGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lh
dGVkIHdpdGggaXQKIC8vIG1heSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2Vy
UmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKaW5kZXggMWJhYTFjOGJjZjUxLi40M2I1ZDEwMTJl
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCkBAIC0xNDk5LDYgKzE0OTksNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25z
aGlwKG5vZGUsIG1femVybywgUmVsYXRpb25zaGlwOjpHcmVhdGVyVGhhbiwgLTEpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAyYWY3OTcw
NjhhOWMuLmQxM2QzN2YwMmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTY1LDYgKzE5NjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAg
ICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAg
ICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgog
CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7
CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4u
NzI2NGRjMmY1NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0yNjEsOCArMjYxLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhNdWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVs
dGlEZWxldGVCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlz
IG9ubHkgcmVsZXZhbnQgZm9yIFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVz
IHRoYXQgY2FuIGhhdmUgYSBsZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8g
XAorICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAg
ICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CmluZGV4IDY5YWNmNTE5YzBiYS4uZDVkYTM0YTUxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBKU1ZhbHVlCiAgICAgfQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYg
KG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAg
IG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAo
b2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwog
ICAgICAgICByZXR1cm47CkBAIC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
dm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJh
eVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRB
cnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEz
IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVk
IGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgCisKKyAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
aXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCB1
bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNp
emUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+
KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUp
KSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwg
KFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTkyNCw3ICsxOTI0LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbE8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7
CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0
MCw3ICsxOTQwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2
QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7
CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTIwMjAsNyArMjAyMCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNVaW50MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29k
ZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUy
LDcgKzIwNTIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2
NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhcios
IChKU0dsbwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmlnSW50NjRBcnJheT4oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDg0NGMxOWIzMTE0MS4uODBk
ZjgxZmRmMDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApA
QCAtMTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVj
dHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRl
cmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
LCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
c2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Jp
Z1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdCaWdVaW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IsIEpT
Q2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjBk
MDQ0ZjVmNWMwLi40Nzg3MDNhYzEwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODYs
NiArOTg2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVj
SW50NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uNWJkMzc3
ZGFmODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aApAQCAtMzczLDYgKzM3Myw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBH
ZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNl
IEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hh
ckF0OgpAQCAtMzg1LDYgKzM4Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBj
YXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEo
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZp
ZXcpKTsKICAgICAgICAgICAgIAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGI0YzhmODYw
YjUxNC4uNjQ0OTYwM2U1NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzI0NSwxNiArMzI0NSwyOCBAQCBKSVRDb21waWxlcjo6
SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiBu
b2RlLCBHUFJSZQogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50
cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgp
LmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZp
ZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAg
IHNpemVfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2Rl
ID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRl
eE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0
aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9k
ZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6
SnVtcCgpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBN
YWNyb0Fzc2VtYmxlcjo6SW1tNjQobGVuZ3RoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gbV9q
aXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBp
bmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQor
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSkpOworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2VuZGlmCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRz
Q2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKQEAgLTc5
NjAsNyArNzk3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFn
ZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRh
Z0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFn
QXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7
CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3Jh
Z2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRh
dGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODM0MiwxMiArODM1
NCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSog
bm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5s
b2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTExMTExLDEwICsxMTEyOSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9
IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRB
cnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgCisKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXpl
LmdwcigpOwotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9u
cyB3ZSBjYWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0
X3Qgb24gNjQgYml0IHBsYXRmb3JtcworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVH
UFIsIHNpemVHUFIpOworI2VuZGlmCisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5S
ZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUikKK3sKICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMTExMzAsNiArMTExNTgsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAKICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWJvdmUsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVM
aW1pdCkpKTsKKyAgICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBw
YXRoIHRoYXQgdGhlIHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQo
aXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOwog
ICAgIAogICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNo
aWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0
Y2hHUFIpOwpAQCAtMTExODUsOSArMTEyMTUsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIG1faml0LnN0b3JlUHRy
KAogICAgICAgICBzdG9yYWdlR1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBtX2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNp
emVHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3Jl
MzIoCiAgICAgICAgIFRydXN0ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TW9kZSgpKSk7CkBAIC0xNDE1OSw2ICsxNDE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAg
ICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOwor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGls
ZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRp
ZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVu
dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVn
cyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5Li42YTYyNzc0Y2RkNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
MzAwLDkgKzEzMDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5n
V2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBj
b21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2wo
Tm9kZSopOwotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdp
c3RlcihOb2RlKiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBz
aXplR1BSKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwot
ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBh
cmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBp
bGVHZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIGNv
bXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAKICAgICB2b2lkIGNv
bXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSWRl
bnQoTm9kZSopOwpAQCAtMTQzNSw2ICsxNDQyLDkgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVy
OjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9kZSosIEdQ
UlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAgICAgdm9pZCBl
bWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGlu
ZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbklu
dFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3Jt
YXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXko
R1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5
VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3Jt
YXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcgKzI0
MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdp
dmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwg
bG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQn
cyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50
NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0
NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsK
IAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRo
ZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVz
IHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJp
dHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJp
Y3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggNmVmYmNlZGRiYzBhLi40ZWQ3NTlmMTkwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEz
NCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUq
IG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdl
dEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlw
ZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJh
eU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAg
ICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4
KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxh
dGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBi
cmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJ
ZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2Rl
KTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlMTM1ZmQ1MzQ4ZTguLmY5NTQ5YTUzMGMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjY5NCw2ICsyNjk0LDg3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUy
U2l6ZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
IGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOworICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJh
eVR5cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOworCisgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKKworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0
aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIp
OworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUy
KE5vZGUqIG5vZGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNT
b21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
YmFzZSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVz
dWx0R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgxdWxs
IDw8IDUyKSwgInRoZXJlIGlzIGEgcmlzayB0aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJyYXkg
d29uJ3QgZml0IGluIGFuIEludDUyIik7CisgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3IodGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IGRhdGEodGhpcyk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKKyAgICBH
UFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7CisgICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9y
R1BSKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKKyAgICBBU1NFUlQodmVjdG9y
R1BSICE9IGRhdGFHUFIpOworCisgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsK
KworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9mZnNldCA9IG1faml0LmJyYW5jaDMy
KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSks
CisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJyYXkpKTsKKworICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1
bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZlY3Rv
ckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSk7
CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIpOworICAgIG1faml0LmNhZ2VXaXRo
b3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BSKTsKKworICAgIGNhZ2VUeXBl
ZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOworCisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlC
dWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdp
bmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUx
NQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJyYXlCdWZmZXJH
UFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRhdGFHUFIpOworI2lmIENQVShBUk02
NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0YUdQUik7CisjZW5kaWYKKworICAg
IG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShBUk02NEUpCisgICAgbnVsbFZlY3Rv
ci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5dGVPZmZzZXQubGluaygmbV9qaXQp
OworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmVjdG9yR1BSKTsKKwor
ICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJNNjRFKQorICAgIEFTU0VSVCghSlNB
cnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7CisgICAgbnVsbFZlY3Rvci5saW5rKCZt
X2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBO
b2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC00Mzc1LDYgKzQ0NTYsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlM
ZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFz
SW50NTI6CisgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIobm9kZSk7CisgICAg
ICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxl
dGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ0OTMsNiArNDU3OCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAg
IGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGls
ZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTU1ODMsNyArNTY3Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9q
aXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5
dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5
dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFW
aWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQy
LCB0MSkpOwogCkBAIC01Nzg0LDcgKzU4NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQ
UiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2pp
dC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXgg
NWY1MWYyMjUxMDRmLi42YjNlMjUzZWY5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcApAQCAtMjc5LDYgKzI3
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
ICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAg
ICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a0RldGFjaGVkOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZToKQEAgLTM1OSw2ICszNjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0
QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNl
IE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggZDEyNDhjOWZhZDY3Li5jOTkwZDU5Y2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE3MCw2ICsxNzAsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFJlYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVy
Zmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBj
YXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgpAQCAtMzkxLDYgKzM5Miw3
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6
CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNh
c2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCA0M2QyNmU4M2U5NjguLjA1ZTgzMTRmMGQ4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAyNSw2ICsx
MDI1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAg
ICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC01MDU0LDggKzUwNTcsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5p
c1NvbWVUeXBlZEFycmF5VmlldygpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoCi0gICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgICAg
ICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQu
YWJvdmVPckVxdWFsKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0
VG9JbnQzMihsZW5ndGgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTUwNjQsNiArNTA2OCwxMyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRB
cnJheVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0
aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRW
ZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgp
LnR5cGUoKSkgewpAQCAtODE2OSw5OCArODE4MCwxOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEludDMyVXNlOiB7CiAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0
dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSBz
aXplID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFz
aWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3IobV9vdXQuaW50
UHRyWmVybyk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBt
X291dC5hYm92ZShzaXplLCBtX291dC5jb25zdEludDMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0
U2l6ZUxpbWl0KSksCi0gICAgICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShz
bWFsbEVub3VnaENhc2UpKTsKLQotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKLQotICAgICAgICAgICAg
TFZhbHVlIGJ5dGVTaXplID0KLSAgICAgICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4
dFB0cihzaXplKSwgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlw
ZSkpKTsKLSAgICAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7
Ci0gICAgICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCi0gICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAotICAgICAg
ICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcp
KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIGFsbG9jYXRv
ciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxv
Y2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBzcGxhdFdvcmRzKAotICAgICAgICAgICAgICAgIHN0b3JhZ2UsCi0gICAgICAgICAgICAg
ICAgbV9vdXQuaW50MzJaZXJvLAotICAgICAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1f
b3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMpKSksCi0gICAgICAgICAgICAg
ICAgbV9vdXQuaW50NjRaZXJvLAotICAgICAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVBy
b3BlcnRpZXMpOwotCi0jaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSk7Ci0gICAgICAgICAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBv
aW50ZXJUeXBlKCkpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJl
Z2lzdGVyKHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNp
emVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKLSAg
ICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBh
cmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgc3Rv
cmFnZSA9IGF1dGhlbnRpY2F0ZTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKKyAg
ICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQuc2lnbkV4dDMyVG82NChsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMSgpKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBu
dWxscHRyOwotICAgICAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgewotI2RlZmluZSBU
WVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAotICAgICAgICAgICAgY2FzZSBUeXBlICMjIG5h
bWU6IFwKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxK
UyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBc
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJB
WV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQotI3VuZGVm
IFRZUEVEX0FSUkFZX1RZUEVfQ0FTRQotICAgICAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6Ci0g
ICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmll
dz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1
ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICAgICAgbV9vdXQu
c3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0
VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19t
b2RlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbXV0YXRvckZlbmNlKCk7Ci0gICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRW
YWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAg
TFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2Us
IGhhdmVTdG9yYWdlKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlw
ZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAg
ICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVk
QXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgICAg
ICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAgICAg
ICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0
cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Y3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9jYXRp
b25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25z
WzFdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRp
cmVjdEdQUigpKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHNpemUsIHN0
b3JhZ2VWYWx1ZSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd1N0cmljdEludDUyKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXpl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCiAgICAgICAgIGNhc2UgVW50eXBl
ZFVzZTogewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKIApAQCAtODI3Nyw3ICs4MjA5LDEwMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlw
ZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVl
IHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAg
ICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVz
dWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8g
V2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXpl
IGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGlu
dDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisgICAgICAgIExWYWx1
ZSBzaXplID0gbV9vdXQuY2FzdFRvSW50MzIoc2l6ZTY0Qml0cyk7CisKKyAgICAgICAgTFZhbHVl
IGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUp
LCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAg
Ynl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVT
aXplLCBtX291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3Rv
cmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAg
c3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQz
Mlplcm8sCisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXpl
LCBtX291dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAor
ICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJN
NjRFKQorICAgICAgICB7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9F
eHRQdHIoc2l6ZSk7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9
IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0
ZS0+YXBwZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVn
aXN0ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3By
KCkpOworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBh
cmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBh
dXRoZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBm
YXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBl
KSB7CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2Ug
VHlwZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9i
amVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nh
c2UpOyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlf
VFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBU
WVBFRF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAg
ICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1
cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
c3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rv
cik7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBz
LkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQu
Y29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAg
VmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUp
OworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFs
dWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisK
KyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRW
YWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8
TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4g
eworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0
eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAor
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
LmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBs
b2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNp
emU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1
bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0
UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lk
IGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUg
b2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE1NTkxLDcgKzE1NjE4LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZp
ZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9v
dXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2
ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBM
VmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlm
IChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFk
ZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAg
LTE1NzM0LDcgKzE1NzYxLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0
YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1f
b3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihp
bmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4
VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5i
eXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3MjYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
YXV0byBkb1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShB
Uk02NEUpCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0g
ICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAg
ICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4g
bG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9p
bnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9h
ZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsg
cmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRp
dmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2
NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAg
ICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDk0ZjdhZmUxMWE5MS4uN2E1NjA3
NTY1ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0Vt
aXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03OSwyMyArNzksMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
OjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAg
IHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5z
aWM6IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVl
R1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAg
IGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5i
b3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNj
ZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRl
TGVuZ3RoSW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUu
YmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7
CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNo
aWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAg
ICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBz
dGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkg
ewotICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlw
ZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4K
LSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUo
dHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQg
aGVyZSBzaW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5
dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0
MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAg
ICB9Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlm
CiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEy
Niw4ICsxMzUsMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmlu
c2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9u
ZS5saW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGpp
dC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNj
cmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJl
Z3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4
IGQ3ZGY3Y2I4ZTg3NS4uNWQ2YjBhODVhNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpT
VmFsdWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2ts
eShpLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2
bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5
KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAg
ICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MSwxNyArMjMzOSwx
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigp
KSB7Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAg
ICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1
ZSkpIHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0
SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0
cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAg
IGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRP
ZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAg
ICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAg
ICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShp
KTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhR
dWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKQEAg
LTIzNzEsOCArMjM2OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZh
bHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051
bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFy
cmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDJlZmI3MWM0YTY0Li5hMzg4NDI2M2Ix
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cApAQCAtMTA0Niw4ICsxMDQ2LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRC
eVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUKICAgICAgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1
aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5
KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRl
eFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApA
QCAtMTE2OSwxNCArMTE2OSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0
X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNv
ZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVp
bnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewog
ICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAg
ICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAg
ICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZt
LCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwg
aSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IGMzNWU0NTQ0MTEwNi4uYzgwMGVjZTlhYTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0y
MTUsNiArMjE1LDcgQEAgZW5kCiBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBOdW1iZXJPZlN0cnVj
dHVyZUlERW50cm9weUJpdHMgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19udW1iZXJP
ZkVudHJvcHlCaXRzCiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0
ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2lu
dGVyCisgICAgY29uc3QgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gY29uc3RleHByIEFycmF5
UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgKIGVuZAogCiBjb25zdCBtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IGNvbnN0ZXhwciBtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbApAQCAtMTMwMCw3ICsxMzAxLDcgQEAgbWFjcm8gYXJyYXlQcm9maWxlKG9mZnNldCwg
Y2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCiAgICAgbG9hZGIgSlNDZWxs
OjptX2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKLW1hY3Jv
IGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlz
aERvdWJsZUdldEJ5VmFsLCBzbG93UGF0aCkKK21hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNl
LCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJn
ZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVu
IGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAg
ZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJz
dFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMxMSw4ICsxMzEyLDE0IEBAIG1hY3JvIGdldEJ5VmFs
VHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdl
dEJ5VmFsLCBzCiAgICAgaWYgQVJNNjRFCiAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2CiAgICAg
ICAgIGNvbnN0IHNjcmF0Y2ggPSB0NwotICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6
bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAotICAgICAgICBiaWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93
UGF0aAorICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxl
bmd0aAorICAgICAgICBicWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAgIGVsc2lmIEpT
VkFMVUU2NAorICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1
bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhl
ciBwbGF0Zm9ybXMuCisgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9s
ZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGJxYmVxIGluZGV4LCBzbWFsbFR5cGVkQXJy
YXlNYXhMZW5ndGgsIHNtYWxsVHlwZWRBcnJheQorICAgICAgICBzZXRMYXJnZVR5cGVkQXJyYXko
KQorLnNtYWxsVHlwZWRBcnJheToKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3Jh
dGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRo
ZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KaW5kZXggZjNkOTdjYTRmN2NiLi4zNjMyMzcxNDFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBA
IC0xNjY2LDcgKzE2NjYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNo
KCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93
KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Z2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZmJkYmE2OGUwZjMwLi5mYjVhZTRjNjY1MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3MTMsMTAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
ICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisg
ICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlW
YWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heU1heUJlTGFyZ2VUeXBlZEFycmF5W3Q1
XQorICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQyKQogCiAgICAgZ2V0KG1fYmFzZSwgdDIp
CkBAIC0xNzYzLDcgKzE3NjcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3Bh
dGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVk
QXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5v
cEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRH
ZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgLm9wR2V0
QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4YTFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQy
LDcgQEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVm
KCk7CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29u
dGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0
cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAg
ICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUluQnl0
ZXMoc2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZm
ZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJhbnNm
ZXJUbygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVu
dHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVy
Q29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0
ZXMpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsxMDks
MjEgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5CeXRl
cyA9IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Q
b2xpY3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Q
b2xpY3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2Yg
dGhlIHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVk
IHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAo
dG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+
IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0gbnVt
RWxlbWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChz
aXplSW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9B
UlJBWV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxl
bWVudHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25T
aXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAg
ICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxs
b2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0
aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9k
YXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBl
KGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBy
ZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBt
ZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNp
emVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsK
ICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVj
dG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpz
aGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQo
b3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsK
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVy
ID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0y
MDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5
QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVzZWQg
ZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0ZU1l
bW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5IGNv
bWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVkKCkg
fHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAgcmV0
dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNlIGEg
bmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQgYWNj
ZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3VsZCBh
bGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogewog
ICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBk
YXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpAQCAt
MjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21C
eXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0
ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJu
IHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBB
cnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5
dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0
OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0
ZUludGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1S
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMs
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwog
fQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0
cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpj
cmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGlj
eSBwb2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0
LDE3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRl
cm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291
cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291
cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92
ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxl
bmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7Cisg
ICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9
CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlh
bGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVu
dHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIo
QXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJheUJ1
ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQp
CitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBz
aXplX3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwg
bGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1
ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7
CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29u
c3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7
Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3Qg
Y3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAg
ICBpbmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShp
bmRleCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVy
biBzbGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7
CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJ
bmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6
ZV90IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5k
IC0gYmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVn
aW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0
KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJh
Li44OWEwYjljOGE5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDcgKzM5LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgQ1BV
KEFERFJFU1M2NCkKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFICgxdWxsIDw8IDMyKQor
I2Vsc2UKKy8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2l6ZV90IHRvIHN0b3JlIHRoZSBzaXpl
IGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRHQiBvbiAzMi1i
aXQgcGxhdGZvcm1zLgorLy8gTm90ZSB0aGF0IHN0b3JpbmcgdGhlIHNpemUgaW4gYSB1aW50NjRf
dCB3b3VsZCBiZSBxdWl0ZSBtZXNzeSBvbiAzMi1iaXRzIGFzIHRoZSBKSVQgaGF2ZSB0byBiZSBh
YmxlIHRvIG1hbmlwdWxhdGUgaXQuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0
IHNob3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIp
IGlmIGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZm
ZmZ1CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzU4
LDcgQEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRS
ZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJD
b250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAg
ICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMo
KTsKICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJl
TnVsbChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY3LDE0IEBAIHByaXZhdGU6CiAgICAg
dXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVz
OworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250
ZW50cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWdu
ZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNp
emVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMm
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9
KEFycmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2
b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRl
cygpKTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
SW5CeXRlczsgfQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZUluQnl0ZXM7IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFyZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJ
bml0aWFsaXplCiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOwor
ICAgIHZvaWQgdHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFy
ZWQoKTsKICAgICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1
LDI4ICsxMTIsMjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2Vk
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJl
ZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBt
X3NpemVJbkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJy
YXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1
YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9p
ZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3Qg
Ynl0ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUo
Y29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCog
c291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWlu
dDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
UHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQq
IGRhdGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGlu
ZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVu
Z3RoKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRT
aGFyaW5nTW9kZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDQsNyBAQCBw
dWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNl
KGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVu
c2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRF
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwg
c2l6ZV90IGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5s
aW5lIHZvaWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTY4LDEyIEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRp
dmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMm
JiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kp
OworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVy
Q29udGVudHMmJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQg
Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwor
ICAgIGlubGluZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0
YXRpYyBpbmxpbmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXpl
X3QgcmlnaHQpOwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcg
KzE5OSw3IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1
cm4gbV9jb250ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVu
Z3RoKCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTIsNyBA
QCBib29sIEFycmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6
OmdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2Jh
Ymx5IHdhbnQgdG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhp
bmcuCi0gICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVu
Z3RoKCk7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIu
LjQ3MzcyMjc0NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVm
ZmVyVmlldygKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBt
X2J5dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQog
ICAgICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+
IGxlbmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93
PiBsZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLmU3MWIw
NjFmZTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAg
ICAvLyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBz
dGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQo
c2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9m
ZnNldCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVy
aWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3
aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3Qg
QXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxl
bWVudHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVu
IHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGlj
IGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKQog
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7
CisgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAg
ICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBzaXplOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0
ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gZWxlbWVudFNpemU7CiAgICAgICAgIGlmIChudW1FbGVt
ZW50cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0MyArMTEzLDQ4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlC
dWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVu
Z3RoKTsKIAotICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
LCBzaXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0
KTsKLSAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wg
c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6
ZV90IGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CiAKLSAg
ICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBy
YW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNl
dEFuZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNp
emUsCi0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOworICAgIGlu
bGluZSBib29sIHplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5
dGVMZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50
cyBmcm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAgIC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVt
YmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlpbmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1l
bnRzKAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLAotICAgICAgICB1bnNpZ25l
ZCBhcnJheUJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpvZmZzZXQsCi0gICAgICAgIHVu
c2lnbmVkICpudW1FbGVtZW50cykKKyAgICAgICAgc2l6ZV90IGFycmF5Qnl0ZU9mZnNldCwKKyAg
ICAgICAgc2l6ZV90ICpvZmZzZXQsCisgICAgICAgIHNpemVfdCAqbnVtRWxlbWVudHMpCiAgICAg
ewotICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZz
ZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBzaXplX3QgbWF4T2Zmc2V0ID0gKHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOwog
ICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewogICAgICAgICAgICAgKm9mZnNldCA9
IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAqbnVtRWxlbWVudHMgPSAwOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICpvZmZzZXQgPSBhcnJheUJ5dGVP
ZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4o
YnVmZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmlu
Z0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsK
KyAgICAgICAgQ2hlY2tlZDxzaXplX3Q+IGFkanVzdGVkT2Zmc2V0ID0gKm9mZnNldDsKKyAgICAg
ICAgYWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAgICBhZGp1c3RlZE9mZnNldCAr
PSBhcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3RlZE9mZnNldC5oYXNPdmVyZmxv
d2VkKCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5ieXRlTGVuZ3RoKCkpCisg
ICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCk7CisgICAgICAgIHNp
emVfdCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkg
LyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0Vs
ZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNl
dCA6IDMxOworI2lmIENQVShKU1ZBTFVFNjQpCisgICAgdWludDY0X3QgbV9ieXRlT2Zmc2V0IDog
NjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNldCA6IDMxOworI2VuZGlmCiAgICAg
Ym9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9ieXRlTGVuZ3RoOworICAg
IHNpemVfdCBtX2J5dGVMZW5ndGg7CiAKICAgICB1c2luZyBCYXNlQWRkcmVzcyA9IENhZ2VkUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAvLyBUaGlzIGlz
IHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUg
b2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJy
YXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZm
ZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHNpemVfdCBieXRlT2Zmc2V0
KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVP
ZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAv
LyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJU
aGFuKGJ5dGVPZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5
dGVPZmZzZXQsIGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChj
b25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5
dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRl
TGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxl
bmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBv
dmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBkYXRhQnl0ZUxl
bmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAg
IHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAg
ICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChi
eXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0
ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVM
ZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Ig
b3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNldCwgZGF0YUJ5dGVM
ZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAg
ICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VB
ZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGluYXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBk
YXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJW
aWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVM
ZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0
ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRl
T2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAg
ICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBieXRl
TGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWlu
dDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBt
ZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5n
dGgoCi0gICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVk
KiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAg
ICAgc3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0
ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsKLSAgICBp
ZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKLSAgICBpZiAo
ZW5kIDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0OwotICAgICpvZmZzZXQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZW5kIC0gc3RhcnQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNpbmcgSlNDOjpB
cnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21p
Y3NPYmplY3QuY3BwCmluZGV4IDY4ODNhMTdjNDcyZC4uZDM2MjQ1MGEyZjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAtMTIwLDgg
KzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0b21pY0FjY2VzcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAgICAgICAgIGFjY2Vzc0luZGV4ID0g
YWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImFjY2Vzc0luZGV4Iik7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIH0KLSAgICAKLSAgICBB
U1NFUlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJ
TlRfTUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlwZWRBcnJheVZpZXctPmxlbmd0
aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWNj
ZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nlc3MuIl9zKTsKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKaW5k
ZXggZGNjMmY1MDY0YWYyLi5mYmM5ODQ3ZDJkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK0RhdGFWaWV3OjpEYXRh
VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6
ZV90IGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBi
eXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3Ojpj
cmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRl
TGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZShSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIt
PmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpOwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXggZGEwNmI0
YmIyMTQ0Li4zNDAyNjU0MTAzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERhdGFW
aWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIFJlZjxE
YXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAgVHlwZWRB
cnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KikgZmluYWw7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGdldCh1
bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRy
KQorICAgIFQgZ2V0KHNpemVfdCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0
dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAg
aWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBy
ZWFkKHVuc2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQorICAgIFQgcmVhZChzaXplX3QmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJv
b2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRoaXMtPnRl
bXBsYXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAgICAgaWYg
KCFzdGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNl
dCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisg
ICAgdm9pZCBzZXQoc2l6ZV90IG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJv
b2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAg
ICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC04Myw3
ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZpZXcoUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KTsKKyAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0
LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgK
aW5kZXggYmU3ZTZjMDUzNGZhLi5mNDkzNzBmY2FiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBjbGFzcyBH
ZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHNpemVfdCBsZW5n
dGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3Qg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRp
YyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMg
UmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CisgICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQoc2l6ZV90IGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihi
YXNlQWRkcmVzcygpKTsgfQogICAgIApAQCAtNjUsMjYgKzY1LDI2IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KTsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlu
ZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29u
c3QKKyAgICB2b2lkIHNldChzaXplX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7
CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+
bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9t
RG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRl
eCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2
ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMt
Pmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IHZhbHVlOwpAQCAtMTAwLDE2ICsx
MDAsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zm
c2V0LCBzaXplX3QgY291bnQpIGNvbnN0CiAgICAgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0aGlzLT5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbGVuZ3RoCi0gICAg
ICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA8PSBsZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNr
IG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA+PSBvZmZzZXQpOworICAg
ICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbihvZmZzZXQsIGNvdW50LCB0aGlzLT5sZW5ndGgo
KSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFy
cmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAgICBUeXBlZEFycmF5
VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9y
Ojp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZm
ZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKIAog
cHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEdlbmVyaWNUeXBl
ZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKaW5kZXggYWU1YmRkOGM2YTMxLi41NDI5ODBhZTY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5l
cmljVHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogQXJyYXlCdWZm
ZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoICogc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgobGVuZ3RoIC8gc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKQorUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBh
dXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CkBAIC00Nyw3ICs0OCw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVz
dWx0ID0gdHJ5Q3JlYXRlKGFycmF5LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CkBAIC01Niw3ICs1Nyw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBs
ZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC02NCw3
ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQgPSB0cnlD
cmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgp
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwpAQCAt
MTE4LDI1ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnlDcmVhdGUoV1RG
TW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVy
biBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAot
ewotICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0ZU9mZnNldEFuZExl
bmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAg
QXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAgQVNTRVJU
KGJ1ZmZlcik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigq
YnVmZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiB0cnlD
cmVhdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp3cmFwKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4uZjA3NDBjYjZkNDc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVy
Vmlldzo6c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVp
bnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
aXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUp
CiAgICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkK
QEAgLTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6
OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsCisgICAgVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRT
aXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1cmUobnVs
bHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwxOCBAQCBKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQgYXJyYXkg
dG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWQ8c2l6ZV90PiBzaXplID0g
bGVuZ3RoOworICAgIHNpemUgKj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUgPiBNQVhfQVJS
QVlfQlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVu
dFNpemUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3IgPSBWZWN0
b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1
ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwgc2l6ZSk7
CiAgICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBvcnRFeHRy
YU1lbW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0dXJlID0g
c3RydWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEwMCw3ICsx
MDAsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0
aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQog
ICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgK
IAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNv
bnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBh
cnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERh
dGFWaWV3VGFnKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIERhdGFW
aWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVu
Z3RoKQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKQEAgLTIzOCw5ICsyMzgsMTYgQEAgc3Rh
dGljIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNUeXBlIHR5cGUpCiAgICAgcmV0dXJuIEVs
ZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlwZV07CiB9CiAKLXVuc2lnbmVkIEpTQXJy
YXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKK3NpemVfdCBKU0FycmF5QnVmZmVyVmll
dzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBDaGVja2Vk
PHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoKCk7CisgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplKHR5
cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOworI2Vsc2UKKyAgICAvLyBUaGUgYWJz
ZW5jZSBvZiBvdmVyZmxvdyBpcyBhbHJlYWR5IGNoZWNrZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBz
byBJIG9ubHkgYWRkIHRoZSBleHRyYSBzYW5pdHkgY2hlY2sgd2hlbiBhc3NlcnRzIGFyZSBlbmFi
bGVkLgogICAgIHJldHVybiBsZW5ndGgoKSAqIGVsZW1lbnRTaXplKHR5cGUoKSk7CisjZW5kaWYK
IH0KIAogQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVt
b3J5KCkKQEAgLTI2Nyw3ICsyNzQsNyBAQCBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6
OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhp
cy0+c3RydWN0dXJlKHZtKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOwotICAg
IHVuc2lnbmVkIGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5
dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CiAKICAgICBzd2l0Y2ggKG1fbW9kZSkgewog
ICAgIGNhc2UgRmFzdFR5cGVkQXJyYXk6IHsKQEAgLTMxNiw3ICszMjMsNyBAQCBSZWZQdHI8QXJy
YXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdW5zaWduZWQgYnl0
ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlz
LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dp
dGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMj
IEFycmF5VHlwZTogXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmgKaW5kZXggZGQwMWY3ZjgyYTUzLi5kYTZkZDBiZDc1M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAt
MTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZhc3RTaXplTGlt
aXQgPSAxMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZhc3RTaXplTGltaXQgPSAx
MDAwOwogICAgIHVzaW5nIFZlY3RvclB0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJp
bWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAKICAgICBzdGF0aWMgdm9pZCogbnVsbFZlY3Rv
clB0cigpCkBAIC0xMTcsMTAgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxs
LnJhd0JpdHMoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBzaXplT2YodWludDMy
X3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkKKyAgICBzdGF0aWMgc2l6ZV90IHNpemVP
ZihzaXplX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpIC0gMSkKLSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFs
dWUpIC0gMSk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1bHQgPSBsZW5ndGg7CisgICAg
ICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSArMTM4
LDI1IEBAIHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSW5pdGlhbGl6YXRp
b25Nb2RlIHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07CiAgICAgICAgIAotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWlu
dDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0g
WmVyb0ZpbGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0
KFZNJiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplLCBJbml0
aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGlz
IG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQncyB1c2VkIGJ5IHRo
ZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJl
KiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBDb25zdHJ1Y3Rpb25D
b250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAgICAgICAg
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAg
ICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAgICAgdW5z
aWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgICAgIAogICAgICAgICBlbnVt
IERhdGFWaWV3VGFnIHsgRGF0YVZpZXcgfTsKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dCgK
ICAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpOwor
ICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdU
YWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAh
bV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAgICB1
aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAgVHlwZWRBcnJh
eU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAgICAgIApAQCAt
MTYyLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVy
ZTsKICAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAg
ICAgICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICAg
ICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5
OwogICAgIH07CkBAIC0xOTMsOCArMTk1LDggQEAgcHVibGljOgogICAgIGlubGluZSB1bnNpZ25l
ZCBieXRlT2Zmc2V0KCk7CiAgICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVP
ZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIHNp
emVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgIHNpemVfdCBieXRl
TGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAtMjE5
LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJ
bkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1fdmVjdG9yOwotICAgIHVpbnQzMl90IG1f
bGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAppbmRleCAzNGVhMjE0NjBhMGQuLjk5MjJmZmRiNTdiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxMyAr
NjksMTUgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KKworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMy
KCk7CisKICAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkg
ewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikp
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAg
ICAgcmV0dXJuIGFzSW50MzIoKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6
dG9JbnQzMihkKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5jcHAKaW5kZXggNmZhYjQ2NWRkM2I5Li5kZmQ2YTUxMWQxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBK
U0RhdGFWaWV3OjpKU0RhdGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4
dCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcgogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUo
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVM
ZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcwLDI1ICs3MCwyNSBAQCBKU0RhdGFW
aWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNEYXRh
VmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0
aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCkKIHsKICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRh
VmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0Rh
dGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBz
aXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQsIEpTVmFsdWUpCitib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0
Kiwgc2l6ZV90LCBKU1ZhbHVlKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuaAppbmRleCAyYzc4NWU0NzYxMWEuLmVjMmFmNjk4MjM5NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0FycmF5QnVmZmVyVmlldzsKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gMTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBlbGVtZW50U2l6ZSA9IDE7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFR5
cGVkQXJyYXlDb250ZW50VHlwZSBjb250ZW50VHlwZSA9IFR5cGVkQXJyYXlDb250ZW50VHlwZTo6
Tm9uZTsKIApAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNl
dCwKKyAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhv
ZHMsIHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRv
CiAgICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3
aGVyZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0
YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1
bnNpZ25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVV
bmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7
CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90
LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChK
U0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXIq
IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBB
cnJheUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkwNjI0
N2VhNjUuLmUwZmJjNTJmODc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBt
ZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVP
ZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRp
YW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTQ5LDcgKzE0
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJV
bmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3Mp
OwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBz
aXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNp
emUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
T3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIsNyArMTgyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11
c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7
CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgo
Z2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVk
IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVf
dCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAo
ZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAg
ICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0Jv
b2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0
RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
ICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFz
IGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZp
ZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1S
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4uNmFiZDJhNDFiMTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5o
IgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5o
IgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyog
Z2V0QmlnVWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1cmUqIFMgICAgIC8v
IGZyb20gSlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAgICAvLyBmcm9tIEpTT2JqZWN0CiAv
LyAgICAgRWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJfdCBMCisvLyAgICAgc2l6ZV90IEwK
IC8vICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0
b3RhbCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCisvLyBUaGVzZSBm
aWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6
IE1ha2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBCIGlzIHVzdWFsbHkgdW51c2Vk
IGJ1dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZsb3ciIGRhdGEgZm9yCkBAIC0x
MDMsMTQgKzEwNCwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogCi0gICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1
bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVu
Z3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBs
ZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmll
d1R5cGU+JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6
Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9Cisg
ICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsg
fQogICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVjdG9yKCkg
Y29uc3QKQEAgLTEyMiw0NiArMTIzLDQ2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4odmVjdG9yKCkpOwogICAgIH0KIAotICAg
IGJvb2wgaW5Cb3VuZHModW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGluQm91bmRzKHNpemVf
dCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aDsKICAgICB9CiAK
ICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBtZWFudCB0byBtYXRjaCBpbmRleGVkIGFjY2VzcyBt
ZXRob2RzIHRoYXQgSlNPYmplY3QKICAgICAvLyBzdXBwb3J0cyAtIGhlbmNlIHRoZSBzbGlnaHQg
cmVkdW5kYW5jeS4KLSAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25z
dAorICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIGluQm91bmRzKGkpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2ts
eTsKICAgICB9Ci0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSkgY29uc3QKKyAgICBib29sIGNhblNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNW
YWx1ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGggJiYg
dmFsdWUuaXNOdW1iZXIoKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAg
fQogICAgIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRp
dmVWYWx1ZSh1bnNpZ25lZCBpKSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0
SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICByZXR1cm4gdHlwZWRWZWN0b3IoKVtpXTsK
ICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29u
c3QKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseShzaXplX3QgaSkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBBZGFwdG9yOjp0b0pTVmFsdWUobnVsbHB0ciwgZ2V0SW5kZXhRdWlja2x5
QXNOYXRpdmVWYWx1ZShpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5
VG9OYXRpdmVWYWx1ZSh1bnNpZ25lZCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQor
ICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShzaXplX3QgaSwgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9sZW5ndGgp
OwogICAgICAgICB0eXBlZFZlY3RvcigpW2ldID0gdmFsdWU7CiAgICAgfQogICAgIAotICAgIHZv
aWQgc2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBz
ZXRJbmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBB
U1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2
ZVZhbHVlKGksIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KHZhbHVlKSk7CiAgICAgfQogICAg
IAotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaSwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgc2l6ZV90IGksIEpTVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE3Niw5ICsxNzcsMTUgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9y
TmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNW
YWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBq
c1ZhbHVlKTsgfQorICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwg
anNWYWx1ZSk7CisgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+
IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUp
IHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFs
dWUpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5h
dGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAg
ICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNW
YWx1ZSk7CisgICAgfQogCiAgICAgdm9pZCBzb3J0KCkKICAgICB7CkBAIC0xOTgsMjEgKzIwNSwx
OCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGNhbkFjY2Vzc1Jhbmdl
UXVpY2tseSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBib29sIGNhbkFj
Y2Vzc1JhbmdlUXVpY2tseShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsg
bGVuZ3RoIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAg
ICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoID49IG9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzU3Vt
U21hbGxlclRoYW4ob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsKICAgICB9CiAgICAgCiAgICAg
Ly8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJldHVybnMgZmFsc2UsIGl0IHdp
bGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgotICAgIGJvb2wgdmFs
aWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVs
LCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFsc2UKICAgICAvLyB0aGVuIGl0
IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2lnbmVkIG9iamVjdE9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7
CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCos
IHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlID0gQ29weVR5cGU6
OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdU
eXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAgLTMxOCw4ICszMjIsOCBAQCBw
cml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24g
ZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVy
QWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAorICAgICAgICBzaXplX3Qgb2Jq
ZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAKICAgICAvLyBUaGUgRUNNQSA2
IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQgQXJyYXlzIHNob3VsZCBoYXZl
IHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0OSw3ICszNTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAgICAgICAgRWxlbWVudFR5cGUq
IGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sZW5ndGg7
IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFOKGFycmF5W2ldKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwLi4xZWIzZDE3
ODYxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIKICNpbmNsdWRlICJUeXBlRXJyb3Iu
aCIKICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
V2l0aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVu
Z3RoLCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9y
KTsKQEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQg
bGVuZ3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC05OSw3ICsxMDAsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMTQ1LDcgKzE0Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3Ro
ZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQgb3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBz
aXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhl
ciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3ICsyMTksNyBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgICAgICB8
fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlzdGluZ0J1ZmZlcigpCiAgICAgICAgIHx8
IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplICYmIHZlY3RvcigpIDw9IG90aGVyLT52
ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHNldEluZGV4
UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJB
ZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAg
IG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsK
QEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8gTm93IHdlIGVpdGhlciBoYXZlICgyQikg
b3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVyICgyQikuCiAgICAgaWYgKGVsZW1lbnRT
aXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVu
Z3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAg
ICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAg
b2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAg
ICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkg
KyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5LDExIEBAIGJvb2wgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgCiAgICAgLy8g
RmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJhbnNmZXIgYnVmZmVyIChpLmUuIGNhc2Ug
KDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVm
ZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAg
Zm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICB0cmFuc2ZlckJ1ZmZlcltp
XSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAg
ICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7
CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICBmb3IgKHNp
emVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZh
bHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ldKTsKICAgICAKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCi0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0
LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU09iamVj
dCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0
eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNpID0g
b2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChjaS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBl
ID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNl
OiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KKyAgICAgICAg
Ly8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0
aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyogb3RoZXIgPSBq
c0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgICAgICBsZW5ndGgg
PSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgoKSk7CiAgICAgICAgIApAQCAtMzEzLDgg
KzMxNCwxMCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gV2UgY291bGQgb3B0aW1pemUg
dGhpcyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
b2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0KTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgLy8gZ2V0KCkg
Zm9yIG5vdyBwcm9iYWJseSBkb2VzIG5vdCBkbyB0aGUgcmlnaHQgdGhpbmcgZm9yIGluZGljZXMg
YWJvdmUgVUlOVF9NQVguCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0luQm91bmRzPHVu
c2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
b2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVj
dE9mZnNldCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZz
ZXQgKyBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNl
cHRpb24oKSB8fCAhc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAppbmRleCA0YzBlYmQxZjYxNjUuLmNhMDAxZDk1NDliOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwq
IGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAor
Y2xhc3MgQXJyYXlQcm9maWxlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVy
OwogY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBz
aG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
Ci0gICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsK
LSAgICAgICAgICAgIHNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIGlmICh0cnlTZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhv
ZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2ln
bmVkKSBjb25zdDsKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5z
aWduZWQpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1
bnNpZ25lZCwgQXJyYXlQcm9maWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wg
Y2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICsz
NDQsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
fQogICAgIH0KLSAgICAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWdu
ZWQgaSkgY29uc3QKKworICAgIC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0
byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBK
U1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSA9IG51bGxwdHIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAg
ICAgICAgaWYgKGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJv
b2wgY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29u
c3Q7CiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1Zh
bHVlKTsKLSAgICAgICAgCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwg
SlNWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhp
cy0+YnV0dGVyZmx5KCk7Ci0gICAgICAgIHN3aXRjaCAoaW5kZXhpbmdNb2RlKCkpIHsKLSAgICAg
ICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1cm4gY2Fu
U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2YWx1ZSk7Ci0gICAgICAgIGNhc2UgQUxM
X1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNh
c2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExf
V1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBOb25BcnJh
eVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgot
ICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwotICAgICAg
ICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIGNhc2UgQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVy
Zmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkKLSAgICAgICAgICAgICAgICAmJiAh
IWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgICAgIAorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdU
eXBlKFZNJiwgdW5zaWduZWQsIEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0
IHN1Y2NlZWRlZAorICAgIC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBz
ZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29s
IHRyeVNldEluZGV4UXVpY2tseShWTSYsIHVuc2lnbmVkLCBKU1ZhbHVlLCBBcnJheVByb2ZpbGUq
ID0gbnVsbHB0cik7CisKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVk
IGksIEpTVmFsdWUgdikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9i
dXR0ZXJmbHkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCmluZGV4IDZlMWJiMWI1OWYxZS4uMGJkMWYwZjkyNTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDIx
ICs0NjUsMTEgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGluZSBib29sIEpTT2Jq
ZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUpIGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkgY29uc3QK
IHsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUo
bmFtZSkgXAotICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAgICAgcmV0dXJuIGpz
Q2FzdDxjb25zdCBKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNr
bHkoaSwgdmFsdWUpOwotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElO
R19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENBU0VfVFlQRURfQVJS
QVlfVFlQRQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Cisg
ICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFy
cmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJh
eSgpOwogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheSh1bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5l
IENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAgICAgY2FzZSBuYW1lICMjIEFycmF5VHlw
ZSA6IHtcCkBAIC01MTIsNyArNTAyLDkxIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiB9Ci0gICAgCisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRl
eFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5
KCktPmFycmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9IHN0b3Jh
Z2UtPm1fdmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xkID0geC5nZXQoKTsKKyAgICB4LnNldCh2
bSwgdGhpcywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAgICAgICAgKytzdG9yYWdlLT5tX251bVZh
bHVlc0luVmVjdG9yOworICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7CisgICAgfQorfQorCitpbmxpbmUgYm9v
bCBKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOworICAgIHN3aXRjaChpbmRleGluZ01vZGUoKSkgewor
ICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CisgICAg
ICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmICghdi5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgIGNvbnZl
cnRJbnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGks
IHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgfQorICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdf
VFlQRVM6IHsKKyAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKCku
YXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgaWYgKGkgPj0g
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVi
bGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgdik7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VC
TEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCF2LmlzTnVt
YmVyKCkpIHsKKyAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZv
cm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVtYmVyKCk7CisgICAgICAgIGlmICh2
YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1do
aWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRo
aXMsIGkpID0gdmFsdWU7CisgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3Ro
KCkpCisgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFn
ZToKKyAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKKyAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlOgorICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKKyAgICAgICAg
aWYgKGkgPj0gYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1
dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5
cGUodm0sIGksIHYpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyNkZWZpbmUgQ0FTRV9UWVBFRF9B
UlJBWV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKKyAgICAg
ICAgYXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMp
O1wKKyAgICAgICAgaWYgKCF0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdikpXAor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1wKKyAgICAgICAgdHlwZWRBcnJheS0+c2V0SW5kZXhR
dWlja2x5KGksIHYpO1wKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlw
ZWRBcnJheU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgICAgIHJldHVybiB0cnVlO1wK
KyAgICB9CisgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVX
KENBU0VfVFlQRURfQVJSQVlfVFlQRSkKKyN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKKyAg
ICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5n
TW9kZSgpKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIGlubGluZSB2b2lk
IEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCBjZTczMGYzYmY5
NjUuLjA5MTllNzIxODZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaApAQCAtODk4LDggKzg5OCw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUg
Z2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAg
ICAgaWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KGJhc2UpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaW5k
ZXgpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4
UXVpY2tseShpbmRleCkpOworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRy
eUdldEluZGV4UXVpY2tseShpbmRleCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJp
bmcoYmFzZSktPmNhbkdldEluZGV4KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QYWdlQ291bnQuaAppbmRleCBlOGRjMWEzMGFlZGQuLjJhODYzNjMxYWEwMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaApAQCAtOTYsNyArOTYsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQg
KiBLQjsKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291
bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSAvIHBhZ2VTaXplKTsKIAogICAgIHVpbnQzMl90
IG1fcGFnZUNvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0
aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCmluZGV4IGZmMTU2
NWYxMWRlZC4uOTNmMDZjOWQ1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNo
ZWNrZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9IHNpemVvZihUYXJnZXQpID49IHNpemVvZihT
b3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6
aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNl
Pjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNv
bnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgog
ICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgo
KTsKICAgICB9CiB9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIHRydWU+
IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNh
bWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5j
cmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPFRhcmdldD46Om1heCgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2Us
IHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IC8vIFdoZW4gY29udmVydGluZyB2YWx1ZSB0byB1bnNpZ25lZCBTb3VyY2UsIHZhbHVlIHdpbGwg
YmVjb21lIGEgYmlnIHZhbHVlIGlmIHZhbHVlIGlzIG5lZ2F0aXZlLgogICAgICAgICAvLyBDYXN0
ZWQgdmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2VyIHRoYW4gVGFyZ2V0OjptYXggYXMgU291cmNlIGlz
IGJpZ2dlciB0aGFuIFRhcmdldC4KQEAgLTE2OCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwg
U291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIGZhbHNl
PiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBi
b29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBU
aGUgdW5zaWduZWQgU291cmNlIHR5cGUgaGFzIGdyZWF0ZXIgcHJlY2lzaW9uIHRoYW4gdGhlIHRh
cmdldCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3VyY2Ugd2lsbCB3aWRlbi4KICAgICAgICAgcmV0dXJu
IHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+
OjptYXgoKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0
YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5C
b3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNh
bWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4NCw3ICsxODQsNyBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHND
aGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8g
U2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9v
bCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91
bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyBzaWduZWQgd2l0
aCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLiBJZiBzdHJpY3RseSBncmVhdGVyLCBpdCBpcyBh
bHdheXMgc2FmZS4KICAgICAgICAgaWYgKHNpemVvZihUYXJnZXQpID4gc2l6ZW9mKFNvdXJjZSkp
CkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9v
bCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91
bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyB1bnNpZ25lZCB3
aXRoIGdyZWF0ZXIgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdmFsdWUgPj0gMDsKICAgICB9
CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBp
c0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVlKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFNhZmVseShT
b3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGNvbnZlcnRTYWZl
bHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKIHsKICAgICBpZiAoIWlzSW5Cb3VuZHM8
VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk5Niw2ICs5OTYsMTMg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gYm9vbCBwcm9kdWN0T3Zl
cmZsb3dzKEFyZ3MuLi4gYXJncykKICAgICByZXR1cm4gY2hlY2tlZFByb2R1Y3Q8VD4oYXJncy4u
LikuaGFzT3ZlcmZsb3dlZCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzU3Vt
U21hbGxlclRoYW4oVCBhLCBUIGIsIFQgYm91bmQpCit7CisgICAgQ2hlY2tlZDxUPiBzdW0gPSBh
OworICAgIHN1bSArPSBiOworICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0u
dmFsdWUoKSA8IGJvdW5kOworfQorCiB9CiAKIHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsK
QEAgLTEwMTcsMyArMTAyNCw0IEBAIHVzaW5nIFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVz
aW5nIFdURjo6aXNJbkJvdW5kczsKIHVzaW5nIFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5n
IFdURjo6c3VtT3ZlcmZsb3dzOwordXNpbmcgV1RGOjppc1N1bVNtYWxsZXJUaGFuOwo=
</data>
<flag name="commit-queue"
          id="463639"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439884</attachid>
            <date>2021-10-01 11:33:29 -0700</date>
            <delta_ts>2021-10-01 13:19:54 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>183188</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5mZjc2MTVlY2RhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xMjc1LDcgKzEyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB2YWx1ZSA+IDB4ZmY7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2hvdWxkQmxpbmRQb2ludGVy
Rm9yU3BlY2lmaWNBcmNoKHVpbnRwdHJfdCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgYm9vbCBzaG91
bGRCbGluZFBvaW50ZXJGb3JTcGVjaWZpY0FyY2godWludHB0cl90IHZhbHVlKQogICAgIHsKICAg
ICAgICAgaWYgKHNpemVvZih2b2lkKikgPT0gNCkKICAgICAgICAgICAgIHJldHVybiBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaChzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKTsKQEAgLTE0
NjAsNiArMTQ2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBhbmQ2
NChpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICAgfQorCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAogI2lmICFDUFUoWDg2KSAmJiAhQ1BVKFg4Nl82NCkgJiYgIUNQVShBUk02NCkK
QEAgLTE3MjcsNyArMTczMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0b3JlNjQoaW1tLmFz
VHJ1c3RlZEltbTY0KCksIGRlc3QpOwogICAgIH0KIAotI2VuZGlmIC8vIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkKKyNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShS
SVNDVjY0KQogICAgIAogICAgIHZvaWQgc3RvcmUzMihJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkK
ICAgICB7CkBAIC0xODIxLDYgKzE4MjUsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJh
bmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSk7CiAgICAgfQogCisjaWYg
Q1BVKFg4Nl82NCkKKyAgICAvLyBPdGhlciA2NC1iaXQgcGxhdGZvcm1zIGRvbid0IG5lZWQgYmxp
bmRpbmcsIGFuZCBoYXZlIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24sIFJlZ2lzdGVySUQs
IEltbTY0KSBkaXJlY3RseSBkZWZpbmVkIGluIHRoZSByaWdodCBmaWxlLgorICAgIC8vIFdlIGNh
bm5vdCBwdXQgdGhpcyBpbiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oLCBiZWNhdXNlIGl0IHVzZXMg
c2hvdWxkQmxpbmQoKSwgbG9hZFJvYXRpb25CbGluZGVkQ29uc3RhbnQsIGV0Yy4uIHdoaWNoIGFy
ZSBvbmx5IGRlZmluZWQgaGVyZSBhbmQgbm90IHRoZXJlLgorICAgIEp1bXAgYnJhbmNoNjQoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAg
IHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGhh
dmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7CisgICAgICAgICAgICAgICAgbG9hZFJv
dGF0aW9uQmxpbmRlZENvbnN0YW50KHJvdGF0aW9uQmxpbmRDb25zdGFudChyaWdodCksIHNjcmF0
Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2g2
NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHNjcmF0Y2ggcmVnaXN0ZXIg
YXZhaWxhYmxlIGZvciB1c2UsIHdlJ2xsIGp1c3QKKyAgICAgICAgICAgIC8vIHBsYWNlIGEgcmFu
ZG9tIG51bWJlciBvZiBub3BzLgorICAgICAgICAgICAgdWludDMyX3Qgbm9wQ291bnQgPSByYW5k
b20oKSAmIDM7CisgICAgICAgICAgICB3aGlsZSAobm9wQ291bnQtLSkKKyAgICAgICAgICAgICAg
ICBub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5h
c1RydXN0ZWRJbW02NCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29u
ZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgfQorI2VuZGlmIC8vIENQVShY
ODZfNjQpCisKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNDI1MDkwM2JjMzIy
Li5iMzdmNGQyOGJkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJ
bW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBy
aWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAg
IHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4MmQ1
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoMzIo
QWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVuZ3Ro
LCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAgICAgICBh
dXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9hZDY0KGxl
bmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVBdXRoID8g
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlkR1BS
UmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRhdGVB
dXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0MDE3
Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRlclJlZ2lz
dGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgCi0gICAgc3Rh
dGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hv
dWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49
IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25z
dGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVy
YXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li5kN2RmMWU5M2YwZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTExOTEsMTIgKzExOTEs
MTcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKIAogICAgICAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBzdGF0ZS51LnByb3BlcnR5R1BSOwogCi0gICAgICAgIAogICAgICAg
ICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5k
KGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKSk7CiAKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90LCBzbyBl
aXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBq
aXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdGF0ZS5mYWlsQW5k
UmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNj
cmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBh
bGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpAQCAtMTYzMCw5ICsxNjM1LDE2IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwog
ICAgICAgICB9CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlz
IGEgc2l6ZV90LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRm
b3JtLgorICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAg
ICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBv
cGVyYXRpb24gZnVuY3Rpb24uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChq
aXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3Jh
dGNoR1BSKSk7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUg
c2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBh
dGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCA2OTE2Nzk0ODQzYjAuLjRjMDQyYjAwNDU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZTsKIAogLy8gVGhpcyBp
cyBhIGJpdGZpZWxkIHdoZXJlIGVhY2ggYml0IHJlcHJlc2VudHMgYW4gdHlwZSBvZiBhcnJheSBh
Y2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4uCiAvLyBUaGVyZSBhcmUgMTkgaW5kZXhpbmcgdHlwZXMg
dGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMuCi0vLyBUaGVyZSBhcmUgOSB0eXBlZCBhcnJheSB0eXBl
cyB0YWtpbmcgdGhlIGJpdHMgMTYgdG8gMjUuCisvLyBUaGVyZSBhcmUgMTEgdHlwZWQgYXJyYXkg
dHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2LTIwIGFuZCAyNi0zMS4KIHR5cGVkZWYgdW5zaWduZWQg
QXJyYXlNb2RlczsKIAogLy8gVGhlIHBvc3NpYmxlIEluZGV4aW5nVHlwZXMgYXJlIGxpbWl0ZWQg
d2l0aGluICgwIC0gMTYsIDIxLCAyMywgMjUpLgpAQCAtMjA1LDEzICsyMDUsMjIgQEAgcHVibGlj
OgogICAgICAgICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAg
ICAgfQotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBBY2Nlc3NpbmcgdHlwZWQg
YXJyYXlzIGxhcmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCBhcyB3
ZSBjYW4ndCBmb3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50MzJfdC4KKyAgICAvLyBXZSBv
bmx5IHN1cHBvcnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24gNjQtYml0IHBsYXRmb3Jtcy4K
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisjZW5kaWYKKyAgICB2b2lk
IHNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1
ZTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorCiAgICAgU3Ry
dWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0
U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2Rlcygp
IHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1h
eVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KIAogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihBcnJheVByb2ZpbGUsIG1fbWF5U3RvcmVUb0hvbGUpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoQXJyYXlQcm9maWxlLCBtX2xhc3RTZWVuU3RydWN0dXJlSUQpOyB9CisgICAgLy8gc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZk1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEFycmF5UHJvZmlsZSwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSk7IH0KIAogICAg
IHZvaWQgc2V0T3V0T2ZCb3VuZHMoKSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9v
bCogYWRkcmVzc09mT3V0T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQpAQCAt
MjQ3LDEzICsyNTYsMTggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzIDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDog
MTsKICAgICBib29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CisgICAgYm9vbCBt
X21heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzIHsgMCB9OwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0g
MTIpOwogCiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5r
ZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVBy
b2ZpbGUoKQorICAgICAgICA6IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisg
ICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyAgICB7CisgICAgfQogCiAg
ICAgdm9pZCB1cGRhdGUoQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGUpCiAgICAgewpAQCAtMjgw
LDYgKzI5NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhcnJheVByb2ZpbGUubV91c2VzT3Jp
Z2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXM7CisKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkp
CisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJh
eVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0y
OTAsNyArMzA5LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVzIDogMTsKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgOiAxOwogfTsK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVubGlua2VkQXJyYXlQcm9maWxlKSA8PSA4KTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggYjFkZmNhMjc0OWMxLi4wNDJi
MDdiODhhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTM0ODYsNiArMzQ4NiwxNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KAorICAgICAgICAgICAgZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkpOworICAgICAgICBpZiAodmlldykg
eworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIodmlldy0+bGVuZ3RoKCkp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50NTJBbnkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzgyMSw2ICszODMyLDE5
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNldENvbmN1
cnJlbnRseSgpOworICAgICAgICAgICAgaWYgKGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50NTJBbnkpOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICgodmFsdWUubV90eXBlICYm
ICEodmFsdWUubV90eXBlICYgflNwZWNPYmplY3QpKSAmJiB2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zp
bml0ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA2ZTI3NTMxMDRiZDMuLjA1OWJhM2Y2
ZGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0zMjUsNiArMzI1LDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQxKCksIG5vZGUpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgaXMgb25s
eSB1c2VkIGZvciBUeXBlZEFycmF5cywgc28gc2hvdWxkIG5vdCBiZSByZWxldmFudCBmb3IgYXJn
dW1lbnRzIGVsaW1pbmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGls
ZDIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAg
ICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgICAgICAgICAgQml0VmVj
dG9yKiBiaXRWZWN0b3IgPSBub2RlLT5iaXRWZWN0b3IoKTsKICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50ID0gbV9ncmFwaC5pc1dhdGNo
aW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlNb2RlLmNwcAppbmRleCA2ZTRmZTlhZmEzZWIuLjA0MWFkYjc4NjM0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcApAQCAtMjA5LDcg
KzIwOSw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6Rm9yY2VFeGl0LCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAotICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSkKKyAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlv
bihpbmRleCkgJiYgIW1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCiAgICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OkdlbmVyaWMsIGFjdGlvbigpKTsKICAgICAKICAgICAvLyBJZiB3ZSBoYWQg
ZXhpdGVkIGJlY2F1c2Ugb2YgYW4gZXhvdGljIG9iamVjdCBiZWhhdmlvciwgdGhlbiBkb24ndCB0
cnkgdG8gc3BlY2lhbGl6ZS4KQEAgLTI5NCw2ICsyOTQsNyBAQCBBcnJheU1vZGUgQXJyYXlNb2Rl
OjpyZWZpbmUoCiAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6
OkJpZ0ludDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnVWludDY0QXJyYXk6CisgICAgICAg
IC8vIEZJWE1FOiBubyBpZGVhIHdoeSB3ZSBvbmx5IHByZXNlcnZlIHRoaXMgb3V0LW9mLWJvdW5k
cyBpbmZvcm1hdGlvbiBmb3IgUHV0QnlWYWwgYW5kIG5vdCBHZXRCeVZhbCBhcyB3ZWxsLgogICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkgewogICAgICAgICAgICAgaWYgKGdyYXBo
Lmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3V0T2ZCb3VuZHMpIHx8ICFpc0lu
Qm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlSZXN1bHQod2l0aFNw
ZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNiLi5jZmZmYzBlOGJiZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwog
ICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFz
Qnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJn
ZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgQXJyYXlNb2Rl
KEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91
bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAg
ICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJn
ZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpU
eXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6QWN0aW9uIGFjdGlvbikK
QEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1
LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAg
QXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJh
eTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24s
IEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBB
cnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBB
cnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBt
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgdS5hc0J5dGVzLnR5
cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAg
ICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uOwogICAgICAgICB1LmFz
Qnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24g
PSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IG1heUJl
TGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNp
b24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rp
b24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZh
bHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRlcy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3
NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3BlY3VsYXRpb24+KHUuYXNCeXRlcy5zcGVj
dWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNpb24+KHUuYXNCeXRlcy5jb252ZXJzaW9u
KTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlvbik7IH0KKyAgICBib29sIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFy
cmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3JkKCkgY29uc3QgeyByZXR1cm4gdS5hc1dv
cmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7Ci0gICAgCisK
KyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigp
LCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9
CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVj
dWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBh
cnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNv
bnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAg
ICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3Mp
IGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24g
Y29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0K
LSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtl
U2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6
OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigp
LCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQor
CisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxhcmdl
VHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNw
ZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBjb25zdAogICAgIHsKLSAgICAg
ICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CisgICAgICAgIHJldHVybiBBcnJh
eU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rp
b24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAorICAgIHN0YXRpYyBBcnJheTo6
U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKQorICAgIHsK
ICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5
OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6T3V0T2ZCb3VuZHM7CiAg
ICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCi0gICAgICAg
ICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAgICAgICAgICAgIHJldHVybiBB
cnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0g
QXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlv
bihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6SW5Cb3VuZHM7CiAg
ICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9u
KHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSkpOworICAg
IH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
IGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAg
IHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKLQogICAgICAgICBpZiAoaXNK
U0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKICAgICAg
ICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5
TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9k
ZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24o
KSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24o
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29u
dmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKKworICAgICAgICBBcnJheTo6
U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJvb2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJv
ZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKKworICAgICAgICByZXR1cm4gd2l0
aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KG15QXJyYXlD
bGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7CiAgICAgfQogICAgIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9
IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAgICAgICAgJiYgYXJyYXlDbGFzcygpID09
IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAgJiYgc3BlY3VsYXRpb24oKSA9PSBvdGhl
ci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29u
dmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNp
b24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlC
ZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3OSw3ICs1OTAsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwogICAgICAgICAgICAgdWludDhfdCBzcGVj
dWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29udmVyc2lvbiA6IDQ7Ci0gICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDE7Cisg
ICAgICAgICAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5
dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4ODExYjg5ZjI0YTcu
LjA3ZTgxY2I5YThjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTM4MjEsMjEgKzM4MjEsMjUgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9kZSogbGVuZ3RoTm9kZTsKKyAgICAgICAgaWYg
KGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIGxlbmd0aE5vZGUg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuYWJsZUludDUyKCkpOworICAgICAgICAgICAgbGVuZ3Ro
Tm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2Rl
KGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICB9
CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVy
ZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAgICAg
aWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVz
ZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBh
IGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5v
ZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5v
ZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2Ug
dHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4K
KyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6
ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2Rl
LCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM4NTIsNyAr
Mzg1NiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3Bl
cmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFy
cmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChy
ZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlU
eXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJ
bnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRk
VG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5
OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7CisgICAgICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJh
eVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIH0KIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMzg3MCw3ICszODc5LDEyIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5l
cmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpS
ZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJl
YWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChlbmFibGVJbnQ1MigpKTsKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBPcEluZm8oQXJyYXlNb2Rl
KGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNmZGU5Nzc5Li41NDhiZDBlZWU5ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRvckhhc093
blByb3BlcnR5OgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFs
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMTMzMyw2ICsxMzM0LDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEo
KSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0NCw2ICsxNDQ2LDE0
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjYXNl
IEdldEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlLmlzU29tZVR5cGVkQXJy
YXlWaWV3KCkpOworICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKEFycmF5TGVuZ3RoTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlO
b2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOiB7CiAgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CiAg
ICAgICAgIHN3aXRjaCAobW9kZS50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCmluZGV4IGM2NmZiMjIzOWY4Zi4uYWZkYzEwYThhMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIGJvb2wgdmFsaWRh
dGlvbkVuYWJsZWQoKQogI2VuZGlmCiB9CiAKLWlubGluZSBib29sIGVuYWJsZUludDUyKCkKK2lu
bGluZSBib29sIGNvbnN0ZXhwciBlbmFibGVJbnQ1MigpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApp
bmRleCAwNzBhNDg1NDdhOTcuLjYwOWZmMDg1Nzc4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcApAQCAtMTk3LDEwICsxOTcsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0
dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFz
SW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29k
ZUF0OgogICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAg
ICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgIGNhc2Ug
R2V0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCA4ZTFiOTNlZWU2Y2EuLjM0MDhhZWJmNzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA0Myw2ICsxMDQzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oaW5kZXhT
cGVjdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNT
cGVjaWZpYygpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5C
b3VuZHMoKQorICAgICAgICAgICAgICAgICAgICAmJiAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVM
YXJnZVR5cGVkQXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0
U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgewogCiAgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTEw
NzMsNyArMTA3NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNl
RXhpdDogewogICAgICAgICAgICAgICAgIC8vIERvbid0IGZvcmNlIE9TUiBiZWNhdXNlIHdlIGhh
dmUgb25seSBzZWVuIE93blN0cnVjdHVyZU1vZGUuCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdFIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4uCisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4uCiAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gRW51bWVyYXRvckdldEJ5VmFsKQogICAg
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0
aFR5cGUoQXJyYXk6OkdlbmVyaWMpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzMs
NiArMTEzNCwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJp
bmdVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6SW50MTZBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6Oklu
dDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OEFycmF5OgorICAgICAgICAg
ICAgY2FzZSBBcnJheTo6VWludDhDbGFtcGVkQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpVaW50MTZBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgorICAg
ICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJh
eTo6RmxvYXQ2NEFycmF5OgorICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPiht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgICAgICAvL2lmIChtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2Rl
LT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAg
ICAgICAgICAgICAvL2Vsc2UKKyAgICAgICAgICAgICAgICAvLyAgICBmaXhFZGdlPEludDUyUmVw
VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNl
bGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwpAQCAtMTE4NCw2
ICsxMjAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVy
U3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgJiYgbm9k
ZS0+YXJyYXlNb2RlKCkuaXNTcGVjaWZpYygpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUt
PmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKQorICAgICAgICAgICAgICAgICAgICAmJiAhbm9kZS0+
YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAm
JiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkg
ewogCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKQEAgLTEyNjYsNyArMTI4MywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Y2FzZSBBcnJheTo6VWludDE2QXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJB
cnJheToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAg
IC8vaWYgKGNoaWxkMi0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSB8fCAhbm9kZS0+YXJyYXlNb2Rl
KCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICAvL2Vsc2UKKyAgICAgICAgICAgICAg
ICAvLyAgICBmaXhFZGdlPEludDUyUmVwVXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGlm
IChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZp
eEludE9yQm9vbGVhbkVkZ2UoY2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGls
ZDMtPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpCkBAIC0xMjc3LDcgKzEyOTcsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4oY2hpbGQxKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIp
OworICAgICAgICAgICAgICAgIC8vaWYgKGNoaWxkMi0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSB8
fCAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICAvL2Vs
c2UKKyAgICAgICAgICAgICAgICAvLyAgICBmaXhFZGdlPEludDUyUmVwVXNlPihjaGlsZDIpOwog
ICAgICAgICAgICAgICAgIGZpeERvdWJsZU9yQm9vbGVhbkVkZ2UoY2hpbGQzKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CkBAIC0x
NzE3LDEyICsxNzQwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwot
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVy
YXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApAQCAtMjE0OSw3ICsyMTc2LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6
IHsKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgICAgIEFy
cmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUobV9ncmFwaCwgbm9k
ZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1bnVzZWRJbmRleFNw
ZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTb21lVHlwZWRB
cnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsK
KyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwg
bm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAgICAgICAgIGZpeEVk
Z2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CiAgICAgICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTI3MzIsNyArMjc3MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERh
dGFWaWV3R2V0SW50OgogICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8RGF0YVZpZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vaWYg
KG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1v
ZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vZWxzZSAvLyBGSVhNRTogbm90
IGNsZWFyIHdoYXQgd2Ugc2hvdWxkIGRvIGhlcmUgaWYgdGhlIGluZGV4IGlzIHNvbWV0aGluZyBj
cmF6eQorICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQzKCkpOwogCkBAIC0yNzU4LDcgKzI3OTksMTAg
QEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIERhdGFWaWV3U2V0OiB7CiAgICAgICAgICAgICBm
aXhFZGdlPERhdGFWaWV3T2JqZWN0VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsK
LSAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkpOworICAgICAgICAgICAgLy9pZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSB8fCAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgLy8gICAg
Zml4RWRnZTxJbnQ1MlJlcFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAg
ICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSkKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAg
ICAgICAgICAgCkBAIC00MDk2LDE0ICs0MTQwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAog
ICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAg
IE5vZGUqIHByZXBlbmRHZXRBcnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hp
bGQsIEFycmF5TW9kZSBhcnJheU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0g
Y2hlY2tBcnJheShhcnJheU1vZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRz
U3RvcmFnZSk7Ci0gICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBv
cmlnaW4sCi0gICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGls
ZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252
ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4y
ZDg2ZWI3NTczOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2Vu
ZXJhdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRp
b25JbmZvLmgKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBs
aXZlIHZhbHVlcyBkdXJpbmcgY29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3Jt
YXRpb24gYXMgdG8gd2hldGhlciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQg
aWYgc28gd2hpY2gsCiAvLyB3aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUg
UmVnaXN0ZXJGaWxlLCBhbmQgaWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWls
cyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJv
eGVkIGZvcm0sIGJ1dCB3ZSBtYXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94
KSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWlu
LAorLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFu
eSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93
IHdoZW4gdGhlIHZhbHVlIGlzIGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lh
dGVkIHdpdGggaXQKIC8vIG1heSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2Vy
UmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKaW5kZXggMWJhYTFjOGJjZjUxLi40M2I1ZDEwMTJl
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCkBAIC0xNDk5LDYgKzE0OTksNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25z
aGlwKG5vZGUsIG1femVybywgUmVsYXRpb25zaGlwOjpHcmVhdGVyVGhhbiwgLTEpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAyYWY3OTcw
NjhhOWMuLmQxM2QzN2YwMmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTY1LDYgKzE5NjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAg
ICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAg
ICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgog
CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7
CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0
aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4u
NzI2NGRjMmY1NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0yNjEsOCArMjYxLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhNdWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVs
dGlEZWxldGVCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlz
IG9ubHkgcmVsZXZhbnQgZm9yIFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVz
IHRoYXQgY2FuIGhhdmUgYSBsZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8g
XAorICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAg
ICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CmluZGV4IDY5YWNmNTE5YzBiYS4uZDVkYTM0YTUxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBKU1ZhbHVlCiAgICAgfQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYg
KG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAg
IG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAo
b2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwog
ICAgICAgICByZXR1cm47CkBAIC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
dm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJh
eVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRB
cnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEz
IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVk
IGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgCisKKyAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
aXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCB1
bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNp
emUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+
KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUp
KSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwg
KFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTkyNCw3ICsxOTI0LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbE8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7
CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0
MCw3ICsxOTQwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2
QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7
CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTIwMjAsNyArMjAyMCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNVaW50MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29k
ZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUy
LDcgKzIwNTIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2
NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhcios
IChKU0dsbwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmlnSW50NjRBcnJheT4oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDg0NGMxOWIzMTE0MS4uODBk
ZjgxZmRmMDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApA
QCAtMTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVj
dHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRl
cmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
LCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
c2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Jp
Z1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdCaWdVaW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IsIEpT
Q2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjBk
MDQ0ZjVmNWMwLi40Nzg3MDNhYzEwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODYs
NiArOTg2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVj
SW50NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uNWJkMzc3
ZGFmODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aApAQCAtMzczLDYgKzM3Myw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBH
ZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNl
IEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hh
ckF0OgpAQCAtMzg1LDYgKzM4Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBj
YXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEo
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZp
ZXcpKTsKICAgICAgICAgICAgIAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGI0YzhmODYw
YjUxNC4uNjQ0OTYwM2U1NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzI0NSwxNiArMzI0NSwyOCBAQCBKSVRDb21waWxlcjo6
SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiBu
b2RlLCBHUFJSZQogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50
cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgp
LmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZp
ZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAg
IHNpemVfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2Rl
ID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRl
eE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0
aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9k
ZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6
SnVtcCgpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBN
YWNyb0Fzc2VtYmxlcjo6SW1tNjQobGVuZ3RoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gbV9q
aXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBp
bmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQor
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSkpOworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2VuZGlmCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRz
Q2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKQEAgLTc5
NjAsNyArNzk3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFn
ZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRh
Z0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFn
QXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7
CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3Jh
Z2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRh
dGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODM0MiwxMiArODM1
NCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSog
bm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5s
b2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTExMTExLDEwICsxMTEyOSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9
IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRB
cnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgCisKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXpl
LmdwcigpOwotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9u
cyB3ZSBjYWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0
X3Qgb24gNjQgYml0IHBsYXRmb3JtcworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVH
UFIsIHNpemVHUFIpOworI2VuZGlmCisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5S
ZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUikKK3sKICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMTExMzAsNiArMTExNTgsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAKICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWJvdmUsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVM
aW1pdCkpKTsKKyAgICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBw
YXRoIHRoYXQgdGhlIHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQo
aXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOwog
ICAgIAogICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNo
aWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0
Y2hHUFIpOwpAQCAtMTExODUsOSArMTEyMTUsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIG1faml0LnN0b3JlUHRy
KAogICAgICAgICBzdG9yYWdlR1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBtX2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNp
emVHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3Jl
MzIoCiAgICAgICAgIFRydXN0ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TW9kZSgpKSk7CkBAIC0xNDE1OSw2ICsxNDE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAg
ICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOwor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGls
ZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRp
ZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVu
dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVn
cyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5Li42YTYyNzc0Y2RkNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
MzAwLDkgKzEzMDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5n
V2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBj
b21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2wo
Tm9kZSopOwotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdp
c3RlcihOb2RlKiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBz
aXplR1BSKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwot
ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBh
cmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBp
bGVHZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIGNv
bXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAKICAgICB2b2lkIGNv
bXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSWRl
bnQoTm9kZSopOwpAQCAtMTQzNSw2ICsxNDQyLDkgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVy
OjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9kZSosIEdQ
UlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAgICAgdm9pZCBl
bWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGlu
ZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbklu
dFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3Jt
YXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXko
R1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5
VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3Jt
YXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcgKzI0
MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdp
dmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwg
bG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQn
cyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50
NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0
NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsK
IAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRo
ZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVz
IHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJp
dHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJp
Y3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggNmVmYmNlZGRiYzBhLi40ZWQ3NTlmMTkwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEz
NCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUq
IG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdl
dEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlw
ZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJh
eU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAg
ICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4
KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxh
dGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBi
cmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJ
ZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2Rl
KTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlMTM1ZmQ1MzQ4ZTguLmY5NTQ5YTUzMGMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjY5NCw2ICsyNjk0LDg3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUy
U2l6ZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
IGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOworICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJh
eVR5cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOworCisgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKKworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0
aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIp
OworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUy
KE5vZGUqIG5vZGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNT
b21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
YmFzZSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVz
dWx0R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgxdWxs
IDw8IDUyKSwgInRoZXJlIGlzIGEgcmlzayB0aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJyYXkg
d29uJ3QgZml0IGluIGFuIEludDUyIik7CisgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3IodGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IGRhdGEodGhpcyk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKKyAgICBH
UFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7CisgICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9y
R1BSKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKKyAgICBBU1NFUlQodmVjdG9y
R1BSICE9IGRhdGFHUFIpOworCisgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsK
KworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9mZnNldCA9IG1faml0LmJyYW5jaDMy
KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSks
CisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJyYXkpKTsKKworICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1
bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZlY3Rv
ckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSk7
CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIpOworICAgIG1faml0LmNhZ2VXaXRo
b3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BSKTsKKworICAgIGNhZ2VUeXBl
ZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOworCisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlC
dWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdp
bmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUx
NQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJyYXlCdWZmZXJH
UFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRhdGFHUFIpOworI2lmIENQVShBUk02
NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0YUdQUik7CisjZW5kaWYKKworICAg
IG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShBUk02NEUpCisgICAgbnVsbFZlY3Rv
ci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5dGVPZmZzZXQubGluaygmbV9qaXQp
OworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmVjdG9yR1BSKTsKKwor
ICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJNNjRFKQorICAgIEFTU0VSVCghSlNB
cnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7CisgICAgbnVsbFZlY3Rvci5saW5rKCZt
X2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBO
b2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC00Mzc1LDYgKzQ0NTYsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlM
ZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFz
SW50NTI6CisgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIobm9kZSk7CisgICAg
ICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxl
dGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ0OTMsNiArNDU3OCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAg
IGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGls
ZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTU1ODMsNyArNTY3Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9q
aXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5
dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5
dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFW
aWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQy
LCB0MSkpOwogCkBAIC01Nzg0LDcgKzU4NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQ
UiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2pp
dC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXgg
NWY1MWYyMjUxMDRmLi42YjNlMjUzZWY5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcApAQCAtMjc5LDYgKzI3
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
ICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAg
ICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a0RldGFjaGVkOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZToKQEAgLTM1OSw2ICszNjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0
QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNl
IE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggZDEyNDhjOWZhZDY3Li5jOTkwZDU5Y2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE3MCw2ICsxNzAsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFJlYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVy
Zmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBj
YXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgpAQCAtMzkxLDYgKzM5Miw3
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6
CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNh
c2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCA0M2QyNmU4M2U5NjguLjA1ZTgzMTRmMGQ4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAyNSw2ICsx
MDI1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAg
ICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC01MDU0LDggKzUwNTcsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5p
c1NvbWVUeXBlZEFycmF5VmlldygpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoCi0gICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgICAg
ICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQu
YWJvdmVPckVxdWFsKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0
VG9JbnQzMihsZW5ndGgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTUwNjQsNiArNTA2OCwxMyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRB
cnJheVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0
aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRW
ZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgp
LnR5cGUoKSkgewpAQCAtODE2OSw5OCArODE4MCwxOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEludDMyVXNlOiB7CiAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0
dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSBz
aXplID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFz
aWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3IobV9vdXQuaW50
UHRyWmVybyk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBt
X291dC5hYm92ZShzaXplLCBtX291dC5jb25zdEludDMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0
U2l6ZUxpbWl0KSksCi0gICAgICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShz
bWFsbEVub3VnaENhc2UpKTsKLQotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKLQotICAgICAgICAgICAg
TFZhbHVlIGJ5dGVTaXplID0KLSAgICAgICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4
dFB0cihzaXplKSwgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlw
ZSkpKTsKLSAgICAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7
Ci0gICAgICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCi0gICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAotICAgICAg
ICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcp
KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIGFsbG9jYXRv
ciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxv
Y2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBzcGxhdFdvcmRzKAotICAgICAgICAgICAgICAgIHN0b3JhZ2UsCi0gICAgICAgICAgICAg
ICAgbV9vdXQuaW50MzJaZXJvLAotICAgICAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1f
b3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMpKSksCi0gICAgICAgICAgICAg
ICAgbV9vdXQuaW50NjRaZXJvLAotICAgICAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVBy
b3BlcnRpZXMpOwotCi0jaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSk7Ci0gICAgICAgICAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBv
aW50ZXJUeXBlKCkpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJl
Z2lzdGVyKHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNp
emVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKLSAg
ICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBh
cmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgc3Rv
cmFnZSA9IGF1dGhlbnRpY2F0ZTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKKyAg
ICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQuc2lnbkV4dDMyVG82NChsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMSgpKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBu
dWxscHRyOwotICAgICAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgewotI2RlZmluZSBU
WVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAotICAgICAgICAgICAgY2FzZSBUeXBlICMjIG5h
bWU6IFwKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxK
UyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBc
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJB
WV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQotI3VuZGVm
IFRZUEVEX0FSUkFZX1RZUEVfQ0FTRQotICAgICAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6Ci0g
ICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmll
dz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1
ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICAgICAgbV9vdXQu
c3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0
VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19t
b2RlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbXV0YXRvckZlbmNlKCk7Ci0gICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRW
YWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAg
TFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2Us
IGhhdmVTdG9yYWdlKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlw
ZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAg
ICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVk
QXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgICAg
ICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAgICAg
ICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0
cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Y3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9jYXRp
b25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25z
WzFdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRp
cmVjdEdQUigpKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHNpemUsIHN0
b3JhZ2VWYWx1ZSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd1N0cmljdEludDUyKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXpl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCiAgICAgICAgIGNhc2UgVW50eXBl
ZFVzZTogewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKIApAQCAtODI3Nyw3ICs4MjA5LDEwMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlw
ZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVl
IHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAg
ICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVz
dWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8g
V2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXpl
IGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGlu
dDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisgICAgICAgIExWYWx1
ZSBzaXplID0gbV9vdXQuY2FzdFRvSW50MzIoc2l6ZTY0Qml0cyk7CisKKyAgICAgICAgTFZhbHVl
IGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUp
LCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAg
Ynl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVT
aXplLCBtX291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3Rv
cmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAg
c3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQz
Mlplcm8sCisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXpl
LCBtX291dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAor
ICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJN
NjRFKQorICAgICAgICB7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9F
eHRQdHIoc2l6ZSk7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9
IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0
ZS0+YXBwZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVn
aXN0ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3By
KCkpOworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBh
cmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBh
dXRoZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBm
YXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBl
KSB7CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2Ug
VHlwZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9i
amVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nh
c2UpOyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlf
VFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBU
WVBFRF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAg
ICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1
cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
c3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rv
cik7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBz
LkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQu
Y29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAg
VmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUp
OworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFs
dWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisK
KyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRW
YWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8
TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4g
eworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0
eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAor
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
LmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBs
b2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNp
emU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1
bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0
UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lk
IGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUg
b2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE1NTkxLDcgKzE1NjE4LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZp
ZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9v
dXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2
ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBM
VmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlm
IChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFk
ZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAg
LTE1NzM0LDcgKzE1NzYxLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0
YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1f
b3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihp
bmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4
VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5i
eXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3MjYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
YXV0byBkb1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShB
Uk02NEUpCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0g
ICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAg
ICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4g
bG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9p
bnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9h
ZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsg
cmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRp
dmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2
NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAg
ICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDk0ZjdhZmUxMWE5MS4uN2E1NjA3
NTY1ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0Vt
aXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03OSwyMyArNzksMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
OjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAg
IHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5z
aWM6IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVl
R1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAg
IGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5i
b3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNj
ZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRl
TGVuZ3RoSW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUu
YmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7
CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNo
aWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAg
ICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBz
dGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkg
ewotICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlw
ZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4K
LSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUo
dHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQg
aGVyZSBzaW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5
dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0
MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAg
ICB9Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlm
CiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEy
Niw4ICsxMzUsMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmlu
c2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9u
ZS5saW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGpp
dC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNj
cmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJl
Z3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4
IGQ3ZGY3Y2I4ZTg3NS4uNWQ2YjBhODVhNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpT
VmFsdWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2ts
eShpLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2
bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5
KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAg
ICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MSwxNyArMjMzOSwx
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigp
KSB7Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAg
ICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1
ZSkpIHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0
SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0
cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAg
IGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRP
ZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAg
ICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAg
ICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShp
KTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhR
dWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKQEAg
LTIzNzEsOCArMjM2OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZh
bHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051
bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFy
cmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDJlZmI3MWM0YTY0Li5hMzg4NDI2M2Ix
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cApAQCAtMTA0Niw4ICsxMDQ2LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRC
eVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUKICAgICAgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1
aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5
KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRl
eFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApA
QCAtMTE2OSwxNCArMTE2OSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0
X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNv
ZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVp
bnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewog
ICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAg
ICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAg
ICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZt
LCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwg
aSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IGMzNWU0NTQ0MTEwNi4uYzgwMGVjZTlhYTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0y
MTUsNiArMjE1LDcgQEAgZW5kCiBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBOdW1iZXJPZlN0cnVj
dHVyZUlERW50cm9weUJpdHMgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19udW1iZXJP
ZkVudHJvcHlCaXRzCiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0
ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2lu
dGVyCisgICAgY29uc3QgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gY29uc3RleHByIEFycmF5
UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgKIGVuZAogCiBjb25zdCBtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IGNvbnN0ZXhwciBtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbApAQCAtMTMwMCw3ICsxMzAxLDcgQEAgbWFjcm8gYXJyYXlQcm9maWxlKG9mZnNldCwg
Y2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCiAgICAgbG9hZGIgSlNDZWxs
OjptX2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKLW1hY3Jv
IGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlz
aERvdWJsZUdldEJ5VmFsLCBzbG93UGF0aCkKK21hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNl
LCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJn
ZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVu
IGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAg
ZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJz
dFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMxMSw4ICsxMzEyLDE0IEBAIG1hY3JvIGdldEJ5VmFs
VHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdl
dEJ5VmFsLCBzCiAgICAgaWYgQVJNNjRFCiAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2CiAgICAg
ICAgIGNvbnN0IHNjcmF0Y2ggPSB0NwotICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6
bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAotICAgICAgICBiaWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93
UGF0aAorICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxl
bmd0aAorICAgICAgICBicWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAgIGVsc2lmIEpT
VkFMVUU2NAorICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1
bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhl
ciBwbGF0Zm9ybXMuCisgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9s
ZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGJxYmVxIGluZGV4LCBzbWFsbFR5cGVkQXJy
YXlNYXhMZW5ndGgsIHNtYWxsVHlwZWRBcnJheQorICAgICAgICBzZXRMYXJnZVR5cGVkQXJyYXko
KQorLnNtYWxsVHlwZWRBcnJheToKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3Jh
dGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRo
ZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KaW5kZXggZjNkOTdjYTRmN2NiLi4zNjMyMzcxNDFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBA
IC0xNjY2LDcgKzE2NjYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNo
KCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93
KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Z2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZmJkYmE2OGUwZjMwLi4zNjY1MTY1ZTViNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3MTMsMTAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
ICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisg
ICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlW
YWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQor
ICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQyKQogCiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBA
IC0xNzYzLDcgKzE3NjcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNo
KCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgLm9wR2V0QnlW
YWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4YTFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcg
QEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2ln
YWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7
CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAgICAg
LCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUluQnl0ZXMo
c2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJD
b250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJhbnNmZXJU
bygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29u
dGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMp
CiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsxMDksMjEg
QEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5CeXRlcyA9
IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShzaXplX3Qg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhl
IHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRv
dGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90
YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1B
WF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0gbnVtRWxl
bWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXpl
SW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVu
dHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXpl
ID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAgICAg
ICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2Nh
dGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0
IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRy
eU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRh
ID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRh
dGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNl
dCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBtZW1z
ZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNpemVJ
bkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKICAg
ICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9y
KCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFy
ZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQob3Ro
ZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsKICAg
ICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0g
dHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yMDgs
NyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVzZWQgZnJv
bToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9y
eS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5IGNvbWUK
IC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVkKCkgfHwg
KEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAgcmV0dXJu
IGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
Ynl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNlIGEgbmV3
IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQgYWNjZXNz
ZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3VsZCBhbGxv
Y2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
RnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAg
IGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRh
KSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5
LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRl
cyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVh
dGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVy
b0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRy
eUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJh
eUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVM
ZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwx
NyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUlu
dGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQog
Ci1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3
IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUlu
dGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNl
LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291cmNl
KTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShj
b250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0
aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAg
ICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6
YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7
CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwg
cG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZl
cjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCitz
aXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXpl
X3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVm
dCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShk
b3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9
CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QK
K3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0g
ICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgY3Vy
cmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBp
bmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRl
eCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBz
bGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRl
eCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90
IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0g
YmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4g
OiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0KQog
ICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJhLi44
OWEwYjljOGE5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM5LDcgKzM5LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgQ1BVKEFE
RFJFU1M2NCkKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFICgxdWxsIDw8IDMyKQorI2Vs
c2UKKy8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2l6ZV90IHRvIHN0b3JlIHRoZSBzaXplIGlu
IGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRHQiBvbiAzMi1iaXQg
cGxhdGZvcm1zLgorLy8gTm90ZSB0aGF0IHN0b3JpbmcgdGhlIHNpemUgaW4gYSB1aW50NjRfdCB3
b3VsZCBiZSBxdWl0ZSBtZXNzeSBvbiAzMi1iaXRzIGFzIHRoZSBKSVQgaGF2ZSB0byBiZSBhYmxl
IHRvIG1hbmlwdWxhdGUgaXQuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0IHNo
b3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIpIGlm
IGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZmZmZ1
CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzU4LDcg
QEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQ
dHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBT
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKTsK
ICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVs
bChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY3LDE0IEBAIHByaXZhdGU6CiAgICAgdXNp
bmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdl
ZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwor
ICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50
cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJs
aWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQg
c2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJ
bkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFy
cmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lk
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygp
KTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5C
eXRlczsgfQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUlu
Qnl0ZXM7IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0
aWFsaXplCiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAg
IHZvaWQgdHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQo
KTsKICAgICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4
ICsxMTIsMjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0
cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3Np
emVJbkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlC
dWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1Ymxp
YzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCog
c291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0
ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNp
Z25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29u
c3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRh
dGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1
bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3Ro
KCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFy
aW5nTW9kZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDQsNyBAQCBwdWJs
aWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRv
dWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2ln
bmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6
ZV90IGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5l
IHZvaWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTY4LDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVH
aWdhY2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwg
Y29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwor
ICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29u
dGVudHMmJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJy
YXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQgY2xh
bXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOworICAg
IGlubGluZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0YXRp
YyBpbmxpbmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3Qg
cmlnaHQpOwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzE5
OSw3IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4g
bV9jb250ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3Ro
KCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTIsNyBAQCBi
b29sIEFycmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6Omdj
U2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5
IHdhbnQgdG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcu
Ci0gICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5
dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3Ro
KCk7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLjQ3
MzcyMjc0NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVy
VmlldygKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5
dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAg
ICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxl
bmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93PiBs
ZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5
dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLmU3MWIwNjFm
ZTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAgICAv
LyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBzdGF0
aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNp
emVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoc2l6
ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNl
dCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5
IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRo
aW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJy
YXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVu
dHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1
Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJv
b2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKQogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7Cisg
ICAgICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAg
aWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9m
ZnNldCkgLyBzaXplOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxl
bmd0aCAtIGJ5dGVPZmZzZXQpIC8gZWxlbWVudFNpemU7CiAgICAgICAgIGlmIChudW1FbGVtZW50
cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0MyArMTEzLDQ4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZm
ZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3Ro
KTsKIAotICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCBz
aXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsK
LSAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBk
YXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0
UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90
IGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBp
bmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5n
ZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFu
ZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUs
Ci0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOworICAgIGlubGlu
ZSBib29sIHplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVM
ZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBm
cm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAgIC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVy
IG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlpbmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRz
KAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLAotICAgICAgICB1bnNpZ25lZCBh
cnJheUJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpvZmZzZXQsCi0gICAgICAgIHVuc2ln
bmVkICpudW1FbGVtZW50cykKKyAgICAgICAgc2l6ZV90IGFycmF5Qnl0ZU9mZnNldCwKKyAgICAg
ICAgc2l6ZV90ICpvZmZzZXQsCisgICAgICAgIHNpemVfdCAqbnVtRWxlbWVudHMpCiAgICAgewot
ICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZzZXQp
IC8gc2l6ZW9mKFQpOworICAgICAgICBzaXplX3QgbWF4T2Zmc2V0ID0gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAg
ICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewogICAgICAgICAgICAgKm9mZnNldCA9IGJ1
ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAqbnVtRWxlbWVudHMgPSAwOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICpvZmZzZXQgPSBhcnJheUJ5dGVPZmZz
ZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4oYnVm
ZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0Vs
ZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKKyAg
ICAgICAgQ2hlY2tlZDxzaXplX3Q+IGFkanVzdGVkT2Zmc2V0ID0gKm9mZnNldDsKKyAgICAgICAg
YWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAgICBhZGp1c3RlZE9mZnNldCArPSBh
cnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3RlZE9mZnNldC5oYXNPdmVyZmxvd2Vk
KCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5ieXRlTGVuZ3RoKCkpCisgICAg
ICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCk7CisgICAgICAgIHNpemVf
dCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBz
aXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1l
bnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6
IDMxOworI2lmIENQVShKU1ZBTFVFNjQpCisgICAgdWludDY0X3QgbV9ieXRlT2Zmc2V0IDogNjM7
CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNldCA6IDMxOworI2VuZGlmCiAgICAgYm9v
bCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9ieXRlTGVuZ3RoOworICAgIHNp
emVfdCBtX2J5dGVMZW5ndGg7CiAKICAgICB1c2luZyBCYXNlQWRkcmVzcyA9IENhZ2VkUHRyPEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAvLyBUaGlzIGlzIHRo
ZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zm
c2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlC
dWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJW
aWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHNpemVfdCBieXRlT2Zmc2V0KQog
ewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZz
ZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVP
ZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBP
dXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFu
KGJ5dGVPZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVP
ZmZzZXQsIGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
Citib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVP
ZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVu
Z3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0
aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVy
ZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0
aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVp
bnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAg
bWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
Citib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxl
bmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5n
dGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3Zl
cmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5n
dGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBj
b25zdCB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VBZGRy
ZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGluYXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRh
Qnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3
Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5n
dGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zm
c2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBp
ZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBieXRlTGVu
Z3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhf
dCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1z
ZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgo
Ci0gICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVkKiBv
ZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAg
c3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ID0g
MDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsKLSAgICBpZiAo
ZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5k
IDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0OwotICAgICpvZmZzZXQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZW5kIC0gc3RhcnQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNpbmcgSlNDOjpBcnJh
eUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
dG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NP
YmplY3QuY3BwCmluZGV4IDY4ODNhMTdjNDcyZC4uZDM2MjQ1MGEyZjhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAtMTIwLDggKzEy
MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0b21pY0FjY2VzcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAgICAgICAgIGFjY2Vzc0luZGV4ID0gYWNj
ZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImFjY2Vzc0luZGV4Iik7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIH0KLSAgICAKLSAgICBBU1NF
UlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRf
TUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlwZWRBcnJheVZpZXctPmxlbmd0aCgp
KSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWNjZXNz
IGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nlc3MuIl9zKTsKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmll
dy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKaW5kZXgg
ZGNjMmY1MDY0YWYyLi5mYmM5ODQ3ZDJkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK0RhdGFWaWV3OjpEYXRhVmll
dyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRl
T2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVh
dGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVu
Z3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZShSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5
dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
OwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXggZGEwNmI0YmIy
MTQ0Li4zNDAyNjU0MTAzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERhdGFWaWV3
IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIFJlZjxEYXRh
Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAgVHlwZWRBcnJh
eVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0
KikgZmluYWw7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGdldCh1bnNp
Z25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQor
ICAgIFQgZ2V0KHNpemVfdCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMg
PSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYg
KG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFk
KHVuc2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxs
cHRyKQorICAgIFQgcmVhZChzaXplX3QmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wq
IHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRoaXMtPnRlbXBs
YXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAgICAgaWYgKCFz
dGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNldCwg
VCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAg
dm9pZCBzZXQoc2l6ZV90IG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wq
IHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAg
ICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC04Myw3ICs4
Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsK
KyAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBz
aXplX3QgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5k
ZXggYmU3ZTZjMDUzNGZhLi5mNDkzNzBmY2FiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBjbGFzcyBHZW5l
cmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShj
b25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShj
b25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHNpemVfdCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2l6ZV90IGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNl
QWRkcmVzcygpKTsgfQogICAgIApAQCAtNjUsMjYgKzY1LDI2IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsK
ICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4
IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QK
KyAgICB2b2lkIHNldChzaXplX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVu
Z3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91
YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShz
aXplX3QgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxl
bmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IHZhbHVlOwpAQCAtMTAwLDE2ICsxMDAs
OSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0
LCBzaXplX3QgY291bnQpIGNvbnN0CiAgICAgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0
aGlzLT5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbGVuZ3RoCi0gICAgICAg
ICAgICAmJiBvZmZzZXQgKyBjb3VudCA8PSBsZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92
ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA+PSBvZmZzZXQpOworICAgICAg
ICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbihvZmZzZXQsIGNvdW50LCB0aGlzLT5sZW5ndGgoKSk7
CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5
KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3Vi
YXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAgICBUeXBlZEFycmF5VHlw
ZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0
eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJW
aWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKIAogcHJp
dmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEdlbmVyaWNUeXBlZEFy
cmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVf
dCBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKaW5kZXggYWU1YmRkOGM2YTMxLi41NDI5ODBhZTY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmlj
VHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJW
aWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgobGVuZ3RoIC8gc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQorUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRv
IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7
CkBAIC00Nyw3ICs0OCw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0
ID0gdHJ5Q3JlYXRlKGFycmF5LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7
CkBAIC01Niw3ICs1Nyw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCBieXRl
T2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC02NCw3ICs2
NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwog
ICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUo
Ci0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0
aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQgPSB0cnlDcmVh
dGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwpAQCAtMTE4
LDI1ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnlDcmVhdGUoV1RGTW92
ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBz
dWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewot
ICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0
aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgQXJy
YXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAgQVNTRVJUKGJ1
ZmZlcik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVm
ZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiB0cnlDcmVh
dGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp3
cmFwKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4uZjA3NDBjYjZkNDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyVmll
dzo6c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQz
Ml90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAg
ICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAg
LTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25D
b250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsCisgICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXpl
LAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1cmUobnVsbHB0
cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwxOCBAQCBKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQgYXJyYXkgdG8g
dXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWQ8c2l6ZV90PiBzaXplID0gbGVu
Z3RoOworICAgIHNpemUgKj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUgPiBNQVhfQVJSQVlf
QlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudFNp
emUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3IgPSBWZWN0b3JU
eXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1ZSgp
KSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwgc2l6ZSk7CiAg
ICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1l
bW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0dXJlID0gc3Ry
dWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEwMCw3ICsxMDAs
NyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQog
ICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAg
ICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAog
SlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRl
eHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJh
eUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFW
aWV3VGFnKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIERhdGFWaWV3
VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3Ro
KQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKQEAgLTIzOCw5ICsyMzgsMTYgQEAgc3RhdGlj
IGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNUeXBlIHR5cGUpCiAgICAgcmV0dXJuIEVsZW1l
bnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlwZV07CiB9CiAKLXVuc2lnbmVkIEpTQXJyYXlC
dWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKK3NpemVfdCBKU0FycmF5QnVmZmVyVmlldzo6
Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBDaGVja2VkPHNp
emVfdD4gcmVzdWx0ID0gbGVuZ3RoKCk7CisgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplKHR5cGUo
KSk7CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOworI2Vsc2UKKyAgICAvLyBUaGUgYWJzZW5j
ZSBvZiBvdmVyZmxvdyBpcyBhbHJlYWR5IGNoZWNrZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBzbyBJ
IG9ubHkgYWRkIHRoZSBleHRyYSBzYW5pdHkgY2hlY2sgd2hlbiBhc3NlcnRzIGFyZSBlbmFibGVk
LgogICAgIHJldHVybiBsZW5ndGgoKSAqIGVsZW1lbnRTaXplKHR5cGUoKSk7CisjZW5kaWYKIH0K
IAogQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5
KCkKQEAgLTI2Nyw3ICsyNzQsNyBAQCBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNs
b3dEb3duQW5kV2FzdGVNZW1vcnkoKQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKHZtKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOwotICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVM
ZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CiAKICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAg
IGNhc2UgRmFzdFR5cGVkQXJyYXk6IHsKQEAgLTMxNiw3ICszMjMsNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5s
ZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNo
ICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMjIEFy
cmF5VHlwZTogXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmgKaW5kZXggZGQwMWY3ZjgyYTUzLi5kYTZkZDBiZDc1M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTA4
LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZhc3RTaXplTGltaXQg
PSAxMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZhc3RTaXplTGltaXQgPSAxMDAw
OwogICAgIHVzaW5nIFZlY3RvclB0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0
aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAKICAgICBzdGF0aWMgdm9pZCogbnVsbFZlY3RvclB0
cigpCkBAIC0xMTcsMTAgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxsLnJh
d0JpdHMoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBzaXplT2YodWludDMyX3Qg
bGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkKKyAgICBzdGF0aWMgc2l6ZV90IHNpemVPZihz
aXplX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpIC0gMSkKLSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUp
IC0gMSk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1bHQgPSBsZW5ndGg7CisgICAgICAg
IHJlc3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRp
b25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSArMTM4LDI1
IEBAIHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSW5pdGlhbGl6YXRpb25N
b2RlIHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07CiAgICAgICAgIAotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWludDMy
X3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVy
b0ZpbGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZN
JiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplLCBJbml0aWFs
aXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGlzIG9u
bHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQncyB1c2VkIGJ5IHRoZSBK
SVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJlKiwg
dWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBDb25zdHJ1Y3Rpb25Db250
ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAgICAgICAgIAog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAg
ICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgICAgIAogICAgICAgICBlbnVtIERh
dGFWaWV3VGFnIHsgRGF0YVZpZXcgfTsKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dCgKICAg
ICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpOworICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcp
OwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9z
dHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAgICB1aW50
MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBzaXplX3Qg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAgVHlwZWRBcnJheU1v
ZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAgICAgIApAQCAtMTYy
LDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsK
ICAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUs
IHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAg
ICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICAgICAg
VHlwZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5Owog
ICAgIH07CkBAIC0xOTMsOCArMTk1LDggQEAgcHVibGljOgogICAgIGlubGluZSB1bnNpZ25lZCBi
eXRlT2Zmc2V0KCk7CiAgICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZz
ZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIHNpemVf
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVu
Z3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcg
KzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1
dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1fdmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVu
Z3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAppbmRleCAzNGVhMjE0NjBhMGQuLjk5MjJmZmRiNTdiNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxMyArNjks
MTUgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJp
bmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KKworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMyKCk7
CisKICAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAg
cmV0dXJuIGFzSW50MzIoKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9J
bnQzMihkKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5jcHAKaW5kZXggNmZhYjQ2NWRkM2I5Li5kZmQ2YTUxMWQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBKU0Rh
dGFWaWV3OjpKU0RhdGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwg
QXJyYXlCdWZmZXIqIGJ1ZmZlcgogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5n
dGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcwLDI1ICs3MCwyNSBAQCBKU0RhdGFWaWV3
KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFs
aXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCkKIHsKICAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0RhdGFW
aWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXpl
X3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQsIEpTVmFsdWUpCitib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwg
c2l6ZV90LCBKU1ZhbHVlKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
aAppbmRleCAyYzc4NWU0NzYxMWEuLmVjMmFmNjk4MjM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0FycmF5QnVmZmVyVmlldzsKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBlbGVtZW50U2l6ZSA9IDE7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFR5cGVk
QXJyYXlDb250ZW50VHlwZSBjb250ZW50VHlwZSA9IFR5cGVkQXJyYXlDb250ZW50VHlwZTo6Tm9u
ZTsKIApAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwK
KyAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMs
IHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCiAg
ICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3aGVy
ZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNp
Z25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmlu
aXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBK
U09iamVjdCosIHNpemVfdCwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChKU0ds
b2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXIqIHBv
c3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBBcnJh
eUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkwNjI0N2Vh
NjUuLmUwZmJjNTJmODc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRo
b2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZz
ZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4g
PSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTQ5LDcgKzE0OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRl
cmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwog
Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBzaXpl
X3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUg
PiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0
IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIsNyArMTgyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3Qg
YmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7Cisg
ICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xv
YmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVs
ZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBl
bGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxl
bWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAgICAg
ICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0Jvb2xl
YW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0
YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJl
ZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
ID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXct
Pmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNl
dCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4uNmFiZDJhNDFiMTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgog
I2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtNTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyogZ2V0
QmlnVWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1cmUqIFMgICAgIC8vIGZy
b20gSlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAgICAvLyBmcm9tIEpTT2JqZWN0CiAvLyAg
ICAgRWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJfdCBMCisvLyAgICAgc2l6ZV90IEwKIC8v
ICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3Rh
bCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCisvLyBUaGVzZSBmaWVs
ZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1h
a2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBCIGlzIHVzdWFsbHkgdW51c2VkIGJ1
dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZsb3ciIGRhdGEgZm9yCkBAIC0xMDMs
MTQgKzEwNCwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGVs
ZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogCi0gICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNy
ZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRl
V2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5n
dGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5
cGU+JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUo
U3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmll
d1R5cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CisgICAg
c2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsgfQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQog
ICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVjdG9yKCkgY29u
c3QKQEAgLTEyMiw0NiArMTIzLDQ2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4odmVjdG9yKCkpOwogICAgIH0KIAotICAgIGJv
b2wgaW5Cb3VuZHModW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGluQm91bmRzKHNpemVfdCBp
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aDsKICAgICB9CiAKICAg
ICAvLyBUaGVzZSBtZXRob2RzIGFyZSBtZWFudCB0byBtYXRjaCBpbmRleGVkIGFjY2VzcyBtZXRo
b2RzIHRoYXQgSlNPYmplY3QKICAgICAvLyBzdXBwb3J0cyAtIGhlbmNlIHRoZSBzbGlnaHQgcmVk
dW5kYW5jeS4KLSAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAor
ICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIGluQm91bmRzKGkpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsK
ICAgICB9Ci0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2
YWx1ZSkgY29uc3QKKyAgICBib29sIGNhblNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1
ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGggJiYgdmFs
dWUuaXNOdW1iZXIoKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQog
ICAgIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVW
YWx1ZSh1bnNpZ25lZCBpKSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5k
ZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICByZXR1cm4gdHlwZWRWZWN0b3IoKVtpXTsKICAg
ICB9CiAgICAgCi0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QK
KyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseShzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBBZGFwdG9yOjp0b0pTVmFsdWUobnVsbHB0ciwgZ2V0SW5kZXhRdWlja2x5QXNO
YXRpdmVWYWx1ZShpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9O
YXRpdmVWYWx1ZSh1bnNpZ25lZCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQorICAg
IHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShzaXplX3QgaSwgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9sZW5ndGgpOwog
ICAgICAgICB0eXBlZFZlY3RvcigpW2ldID0gdmFsdWU7CiAgICAgfQogICAgIAotICAgIHZvaWQg
c2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NF
UlQoIXZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZh
bHVlKGksIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KHZhbHVlKSk7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQg
aSwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgc2l6ZV90IGksIEpTVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIFZN
JiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE3Niw5ICsxNzcsMTUgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0
aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1
ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1Zh
bHVlKTsgfQorICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNW
YWx1ZSk7CisgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRv
QWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpIHsg
cmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUp
OyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2
ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1
ZSk7CisgICAgfQogCiAgICAgdm9pZCBzb3J0KCkKICAgICB7CkBAIC0xOTgsMjEgKzIwNSwxOCBA
QCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVp
Y2tseSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBib29sIGNhbkFjY2Vz
c1JhbmdlUXVpY2tseShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVu
Z3RoIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgbGVuZ3RoID49IG9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21h
bGxlclRoYW4ob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsKICAgICB9CiAgICAgCiAgICAgLy8g
TGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJldHVybnMgZmFsc2UsIGl0IHdpbGwg
dGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgotICAgIGJvb2wgdmFsaWRh
dGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBh
bmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFsc2UKICAgICAvLyB0aGVuIGl0IHdp
bGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7Cisg
ICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCosIHNp
emVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlID0gQ29weVR5cGU6OlVu
b2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBl
PiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9y
OjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAgLTMxOCw4ICszMjIsOCBAQCBwcml2
YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJy
b3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJB
ZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRh
cHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwg
Q29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAorICAgICAgICBzaXplX3Qgb2JqZWN0
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAKICAgICAvLyBUaGUgRUNNQSA2IHNw
ZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQgQXJyYXlzIHNob3VsZCBoYXZlIHRo
ZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0OSw3ICszNTMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAgICAgICAgRWxlbWVudFR5cGUqIGFy
cmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkr
KykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFOKGFycmF5W2ldKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwLi4xZWIzZDE3ODYx
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIKICNpbmNsdWRlICJUeXBlRXJyb3IuaCIK
ICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0
aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0
aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsK
QEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVu
Z3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC05OSw3ICsxMDAsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtMTQ1LDcgKzE0Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJB
ZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQgb3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXpl
X3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwK
KyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBl
eGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlzdGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChl
bGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0
b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFw
dG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90
aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAg
LTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
ZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8gTm93IHdlIGVpdGhlciBoYXZlICgyQikgb3Ig
KDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVyICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXpl
ID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3Ro
OyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAg
ICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zm
c2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAg
ICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBv
dGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFp
bDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJhbnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMp
KS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVy
KGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9y
IChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9
IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAg
b3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAg
ICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICBmb3IgKHNpemVf
dCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVl
KG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ldKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1
bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCog
b2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2Jq
ZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChjaS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09
IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3
ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8g
VGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUg
c2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nh
c3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgICAgICBsZW5ndGggPSBz
dGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgoKSk7CiAgICAgICAgIApAQCAtMzEzLDggKzMx
NCwxMCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gV2UgY291bGQgb3B0aW1pemUgdGhp
cyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2Jq
ZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0KTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgLy8gZ2V0KCkgZm9y
IG5vdyBwcm9iYWJseSBkb2VzIG5vdCBkbyB0aGUgcmlnaHQgdGhpbmcgZm9yIGluZGljZXMgYWJv
dmUgVUlOVF9NQVguCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0luQm91bmRzPHVuc2ln
bmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2Jq
ZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9m
ZnNldCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
ICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQg
KyBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSB8fCAhc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAppbmRleCA0YzBlYmQxZjYxNjUuLmNhMDAxZDk1NDliOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdl
dEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xh
c3MgQXJyYXlQcm9maWxlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwog
Y2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAg
ICAgICAgICAgIHNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAg
ICAgIGlmICh0cnlTZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRh
YmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVk
KSBjb25zdDsKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWdu
ZWQpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCwgQXJyYXlQcm9maWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2Fu
R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQs
MTUgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQg
aSkgY29uc3QKKworICAgIC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBz
ZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1Zh
bHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJv
ZmlsZSA9IG51bGxwdHIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAg
ICAgaWYgKGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wg
Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7
CiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVl
KTsKLSAgICAgICAgCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNW
YWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+
YnV0dGVyZmx5KCk7Ci0gICAgICAgIHN3aXRjaCAoaW5kZXhpbmdNb2RlKCkpIHsKLSAgICAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1cm4gY2FuU2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2YWx1ZSk7Ci0gICAgICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2Ug
QUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJ
VEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBOb25BcnJheVdp
dGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAg
ICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwotICAgICAgICBj
YXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIGNhc2UgQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkKLSAgICAgICAgICAgICAgICAmJiAhIWJ1
dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
ICAgIAorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBl
KFZNJiwgdW5zaWduZWQsIEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0IHN1
Y2NlZWRlZAorICAgIC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQg
dGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRy
eVNldEluZGV4UXVpY2tseShWTSYsIHVuc2lnbmVkLCBKU1ZhbHVlLCBBcnJheVByb2ZpbGUqID0g
bnVsbHB0cik7CisKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGks
IEpTVmFsdWUgdikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0
ZXJmbHkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oCmluZGV4IDZlMWJiMWI1OWYxZS4uMGJkMWYwZjkyNTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDIxICs0
NjUsMTEgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0
OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFs
dWUpIGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkgY29uc3QKIHsK
LSAgICBzd2l0Y2ggKHR5cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFt
ZSkgXAotICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAgICAgcmV0dXJuIGpzQ2Fz
dDxjb25zdCBKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHko
aSwgdmFsdWUpOwotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19E
QVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENBU0VfVFlQRURfQVJSQVlf
VFlQRQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19CisgICAg
aWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFycmF5
UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgp
OwogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJh
eSh1bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIENB
U0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6
IHtcCkBAIC01MTIsNyArNTAyLDkxIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiB9Ci0gICAgCisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1
aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5KCkt
PmFycmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2Ut
Pm1fdmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xkID0geC5nZXQoKTsKKyAgICB4LnNldCh2bSwg
dGhpcywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVl
c0luVmVjdG9yOworICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKKyAgICAgICAg
ICAgIHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBK
U09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2
LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IHRoaXMtPmJ1dHRlcmZseSgpOworICAgIHN3aXRjaChpbmRleGluZ01vZGUoKSkgeworICAg
IGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAg
IGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmICghdi5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgIGNvbnZlcnRJ
bnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9V
R0g7CisgICAgfQorICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQ
RVM6IHsKKyAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXQo
dGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGlj
TGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgdik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVf
SU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5n
dGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCF2LmlzTnVtYmVy
KCkpIHsKKyAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1p
bmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVtYmVyKCk7CisgICAgICAgIGlmICh2YWx1
ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxl
UGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRoaXMs
IGkpID0gdmFsdWU7CisgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkp
CisgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToK
KyAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKKyAgICAgICAgaWYgKGkgPj0gYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9y
YWdlOgorICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKKyAgICAgICAgaWYg
KGkgPj0gYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRl
cmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUo
dm0sIGksIHYpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJB
WV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKKyAgICAgICAg
YXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpO1wK
KyAgICAgICAgaWYgKCF0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdikpXAorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlO1wKKyAgICAgICAgdHlwZWRBcnJheS0+c2V0SW5kZXhRdWlj
a2x5KGksIHYpO1wKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRB
cnJheU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgICAgIHJldHVybiB0cnVlO1wKKyAg
ICB9CisgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENB
U0VfVFlQRURfQVJSQVlfVFlQRSkKKyN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKKyAgICBk
ZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9k
ZSgpKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIGlubGluZSB2b2lkIEpT
T2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCBjZTczMGYzYmY5NjUu
LjA5MTllNzIxODZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaApAQCAtODk4LDggKzg5OCw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0
QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAg
aWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2UpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaW5kZXgp
KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4UXVp
Y2tseShpbmRleCkpOworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdl
dEluZGV4UXVpY2tseShpbmRleCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmco
YmFzZSktPmNhbkdldEluZGV4KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QYWdlQ291bnQuaAppbmRleCBlOGRjMWEzMGFlZGQuLjJhODYzNjMxYWEwMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaApAQCAtOTYsNyArOTYsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQgKiBL
QjsKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSAvIHBhZ2VTaXplKTsKIAogICAgIHVpbnQzMl90IG1f
cGFnZUNvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1l
dGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCmluZGV4IGZmMTU2NWYx
MWRlZC4uOTNmMDZjOWQ1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNr
ZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9IHNpemVvZihUYXJnZXQpID49IHNpemVvZihTb3Vy
Y2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6aXNf
c2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlPjo6
aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJn
ZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZl
cnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAg
ICAgICByZXR1cm4gdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsK
ICAgICB9CiB9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIHRydWU+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wg
Y29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUg
c2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVh
c2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNf
bGltaXRzPFRhcmdldD46Om1heCgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0
LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3Vy
Y2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIHRy
dWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGlj
IGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8v
IFdoZW4gY29udmVydGluZyB2YWx1ZSB0byB1bnNpZ25lZCBTb3VyY2UsIHZhbHVlIHdpbGwgYmVj
b21lIGEgYmlnIHZhbHVlIGlmIHZhbHVlIGlzIG5lZ2F0aXZlLgogICAgICAgICAvLyBDYXN0ZWQg
dmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2VyIHRoYW4gVGFyZ2V0OjptYXggYXMgU291cmNlIGlzIGJp
Z2dlciB0aGFuIFRhcmdldC4KQEAgLTE2OCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIGZhbHNlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUaGUg
dW5zaWduZWQgU291cmNlIHR5cGUgaGFzIGdyZWF0ZXIgcHJlY2lzaW9uIHRoYW4gdGhlIHRhcmdl
dCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3VyY2Ugd2lsbCB3aWRlbi4KICAgICAgICAgcmV0dXJuIHZh
bHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+Ojpt
YXgoKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5k
c0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRp
YyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3Vu
ZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUg
cHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2Ft
ZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBp
bkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyBzaWduZWQgd2l0aCBn
cmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLiBJZiBzdHJpY3RseSBncmVhdGVyLCBpdCBpcyBhbHdh
eXMgc2FmZS4KICAgICAgICAgaWYgKHNpemVvZihUYXJnZXQpID4gc2l6ZW9mKFNvdXJjZSkpCkBA
IC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBp
bkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyB1bnNpZ25lZCB3aXRo
IGdyZWF0ZXIgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdmFsdWUgPj0gMDsKICAgICB9CiB9
OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBpc0lu
Qm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gQm91bmRzQ2hlY2tlcjxUYXJnZXQs
IFNvdXJjZT46OmluQm91bmRzKHZhbHVlKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFNhZmVseShTb3Vy
Y2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGNvbnZlcnRTYWZlbHko
U291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKIHsKICAgICBpZiAoIWlzSW5Cb3VuZHM8VGFy
Z2V0PihpbnB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk5Niw2ICs5OTYsMTMgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gYm9vbCBwcm9kdWN0T3ZlcmZs
b3dzKEFyZ3MuLi4gYXJncykKICAgICByZXR1cm4gY2hlY2tlZFByb2R1Y3Q8VD4oYXJncy4uLiku
aGFzT3ZlcmZsb3dlZCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzU3VtU21h
bGxlclRoYW4oVCBhLCBUIGIsIFQgYm91bmQpCit7CisgICAgQ2hlY2tlZDxUPiBzdW0gPSBhOwor
ICAgIHN1bSArPSBiOworICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFs
dWUoKSA8IGJvdW5kOworfQorCiB9CiAKIHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsKQEAg
LTEwMTcsMyArMTAyNCw0IEBAIHVzaW5nIFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVzaW5n
IFdURjo6aXNJbkJvdW5kczsKIHVzaW5nIFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5nIFdU
Rjo6c3VtT3ZlcmZsb3dzOwordXNpbmcgV1RGOjppc1N1bVNtYWxsZXJUaGFuOwo=
</data>
<flag name="commit-queue"
          id="463646"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439902</attachid>
            <date>2021-10-01 13:19:54 -0700</date>
            <delta_ts>2021-10-01 16:11:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>183574</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5mZjc2MTVlY2RhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xMjc1LDcgKzEyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB2YWx1ZSA+IDB4ZmY7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2hvdWxkQmxpbmRQb2ludGVy
Rm9yU3BlY2lmaWNBcmNoKHVpbnRwdHJfdCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgYm9vbCBzaG91
bGRCbGluZFBvaW50ZXJGb3JTcGVjaWZpY0FyY2godWludHB0cl90IHZhbHVlKQogICAgIHsKICAg
ICAgICAgaWYgKHNpemVvZih2b2lkKikgPT0gNCkKICAgICAgICAgICAgIHJldHVybiBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaChzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKTsKQEAgLTE0
NjAsNiArMTQ2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBhbmQ2
NChpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICAgfQorCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAogI2lmICFDUFUoWDg2KSAmJiAhQ1BVKFg4Nl82NCkgJiYgIUNQVShBUk02NCkK
QEAgLTE3MjcsNyArMTczMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0b3JlNjQoaW1tLmFz
VHJ1c3RlZEltbTY0KCksIGRlc3QpOwogICAgIH0KIAotI2VuZGlmIC8vIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkKKyNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShS
SVNDVjY0KQogICAgIAogICAgIHZvaWQgc3RvcmUzMihJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkK
ICAgICB7CkBAIC0xODIxLDYgKzE4MjUsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJh
bmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSk7CiAgICAgfQogCisjaWYg
Q1BVKFg4Nl82NCkKKyAgICAvLyBPdGhlciA2NC1iaXQgcGxhdGZvcm1zIGRvbid0IG5lZWQgYmxp
bmRpbmcsIGFuZCBoYXZlIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24sIFJlZ2lzdGVySUQs
IEltbTY0KSBkaXJlY3RseSBkZWZpbmVkIGluIHRoZSByaWdodCBmaWxlLgorICAgIC8vIFdlIGNh
bm5vdCBwdXQgdGhpcyBpbiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oLCBiZWNhdXNlIGl0IHVzZXMg
c2hvdWxkQmxpbmQoKSwgbG9hZFJvYXRpb25CbGluZGVkQ29uc3RhbnQsIGV0Yy4uIHdoaWNoIGFy
ZSBvbmx5IGRlZmluZWQgaGVyZSBhbmQgbm90IHRoZXJlLgorICAgIEp1bXAgYnJhbmNoNjQoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAg
IHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGhh
dmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7CisgICAgICAgICAgICAgICAgbG9hZFJv
dGF0aW9uQmxpbmRlZENvbnN0YW50KHJvdGF0aW9uQmxpbmRDb25zdGFudChyaWdodCksIHNjcmF0
Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2g2
NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHNjcmF0Y2ggcmVnaXN0ZXIg
YXZhaWxhYmxlIGZvciB1c2UsIHdlJ2xsIGp1c3QKKyAgICAgICAgICAgIC8vIHBsYWNlIGEgcmFu
ZG9tIG51bWJlciBvZiBub3BzLgorICAgICAgICAgICAgdWludDMyX3Qgbm9wQ291bnQgPSByYW5k
b20oKSAmIDM7CisgICAgICAgICAgICB3aGlsZSAobm9wQ291bnQtLSkKKyAgICAgICAgICAgICAg
ICBub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5h
c1RydXN0ZWRJbW02NCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29u
ZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgfQorI2VuZGlmIC8vIENQVShY
ODZfNjQpCisKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNDI1MDkwM2JjMzIy
Li5iMzdmNGQyOGJkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJ
bW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBy
aWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAg
IHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4MmQ1
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoMzIo
QWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVuZ3Ro
LCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAgICAgICBh
dXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9hZDY0KGxl
bmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVBdXRoID8g
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlkR1BS
UmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRhdGVB
dXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0MDE3
Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRlclJlZ2lz
dGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgCi0gICAgc3Rh
dGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hv
dWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49
IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25z
dGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVy
YXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li5kN2RmMWU5M2YwZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTExOTEsMTIgKzExOTEs
MTcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKIAogICAgICAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBzdGF0ZS51LnByb3BlcnR5R1BSOwogCi0gICAgICAgIAogICAgICAg
ICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5k
KGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKSk7CiAKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90LCBzbyBl
aXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBq
aXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdGF0ZS5mYWlsQW5k
UmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNj
cmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBh
bGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpAQCAtMTYzMCw5ICsxNjM1LDE2IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwog
ICAgICAgICB9CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlz
IGEgc2l6ZV90LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRm
b3JtLgorICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAg
ICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBv
cGVyYXRpb24gZnVuY3Rpb24uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChq
aXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3Jh
dGNoR1BSKSk7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUg
c2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBh
dGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCA2OTE2Nzk0ODQzYjAuLmQyMTk4ZGIzMTEz
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZTsKIAogLy8gVGhpcyBp
cyBhIGJpdGZpZWxkIHdoZXJlIGVhY2ggYml0IHJlcHJlc2VudHMgYW4gdHlwZSBvZiBhcnJheSBh
Y2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4uCiAvLyBUaGVyZSBhcmUgMTkgaW5kZXhpbmcgdHlwZXMg
dGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMuCi0vLyBUaGVyZSBhcmUgOSB0eXBlZCBhcnJheSB0eXBl
cyB0YWtpbmcgdGhlIGJpdHMgMTYgdG8gMjUuCisvLyBUaGVyZSBhcmUgMTEgdHlwZWQgYXJyYXkg
dHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2LTIwIGFuZCAyNi0zMS4KIHR5cGVkZWYgdW5zaWduZWQg
QXJyYXlNb2RlczsKIAogLy8gVGhlIHBvc3NpYmxlIEluZGV4aW5nVHlwZXMgYXJlIGxpbWl0ZWQg
d2l0aGluICgwIC0gMTYsIDIxLCAyMywgMjUpLgpAQCAtMjA1LDEzICsyMDUsMjIgQEAgcHVibGlj
OgogICAgICAgICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAg
ICAgfQotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBBY2Nlc3NpbmcgdHlwZWQg
YXJyYXlzIGxhcmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCBhcyB3
ZSBjYW4ndCBmb3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50MzJfdC4KKyAgICAvLyBXZSBv
bmx5IHN1cHBvcnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24gNjQtYml0IHBsYXRmb3Jtcy4K
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisjZW5kaWYKKyAgICB2b2lk
IHNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1
ZTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorCiAgICAgU3Ry
dWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0
U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2Rlcygp
IHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1h
eVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KIAogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihBcnJheVByb2ZpbGUsIG1fbWF5U3RvcmVUb0hvbGUpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoQXJyYXlQcm9maWxlLCBtX2xhc3RTZWVuU3RydWN0dXJlSUQpOyB9CisgICAgLy8gc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZk1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEFycmF5UHJvZmlsZSwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSk7IH0KIAogICAg
IHZvaWQgc2V0T3V0T2ZCb3VuZHMoKSB7IG1fb3V0T2ZCb3VuZHMgPSB0cnVlOyB9CiAgICAgYm9v
bCogYWRkcmVzc09mT3V0T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQpAQCAt
MjQ0LDYgKzI1Myw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVj
dHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRo
aXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBj
YXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVw
ZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkg
anVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRo
aXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMu
CiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMgOiAxOwogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOwog
ICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsKQEAgLTI1Myw3ICsyNjMs
MTEgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CiAKIGNsYXNz
IFVubGlua2VkQXJyYXlQcm9maWxlIHsKIHB1YmxpYzoKLSAgICBVbmxpbmtlZEFycmF5UHJvZmls
ZSgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBVbmxpbmtlZEFycmF5UHJvZmlsZSgpCisgICAg
ICAgIDogbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKKyAgICAgICAgLCBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorICAgIHsKKyAgICB9CiAKICAgICB2b2lkIHVwZGF0
ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7CkBAIC0yODAsNiArMjk0LDExIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX3VzZXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0
dXJlczsKKworICAgICAgICBpZiAobV9tYXlCZUxhcmdlVHlwZWRBcnJheSkKKyAgICAgICAgICAg
IGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGFycmF5UHJvZmlsZS5tX21h
eUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5MCw3ICszMDksOSBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAx
OworICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CiB9Oworc3RhdGljX2Fzc2Vy
dChzaXplb2YoVW5saW5rZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCBiMWRmY2EyNzQ5YzEuLjA0MmIwN2I4OGFhMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtMzQ4Niw2ICszNDg2LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhB
c0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlH
ZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3Zh
bHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50
MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zODIxLDYgKzM4MzIsMTkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZp
ZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5t
X3ZhbHVlKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Cisg
ICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0
UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5
cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1p
bmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1MzEwNGJkMy4uMDU5YmEzZjZkY2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50
NTI6CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5
cGVkQXJyYXlzLCBzbyBzaG91bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWlu
YXRpb24KKyAgICAgICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNwcmVhZDogewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3Rv
ciA9IG5vZGUtPmJpdFZlY3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hp
bmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFk
VGltZVdhdGNocG9pbnQobm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCmluZGV4IDZlNGZlOWFmYTNlYi4uMDQxYWRiNzg2MzRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJy
YXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5
OjpGb3JjZUV4aXQsIGFjdGlvbigpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3Bl
Y3VsYXRpb24oaW5kZXgpKQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAh
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
R2VuZXJpYywgYWN0aW9uKCkpOwogICAgIAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVz
ZSBvZiBhbiBleG90aWMgb2JqZWN0IGJlaGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFs
aXplLgpAQCAtMjk0LDYgKzI5NCw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAg
ICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJh
eToKICAgICBjYXNlIEFycmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5v
IGlkZWEgd2h5IHdlIG9ubHkgcHJlc2VydmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9u
IGZvciBQdXRCeVZhbCBhbmQgbm90IEdldEJ5VmFsIGFzIHdlbGwuCiAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsKSB7CiAgICAgICAgICAgICBpZiAoZ3JhcGguaGFzRXhpdFNpdGUo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdXRPZkJvdW5kcykgfHwgIWlzSW5Cb3VuZHMoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHlwZWRBcnJheVJlc3VsdCh3aXRoU3BlY3VsYXRpb24oQXJy
YXk6Ok91dE9mQm91bmRzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aAppbmRleCBhMDI2YWFkMTg5M2IuLmNmZmZjMGU4YmJmOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FycmF5TW9kZS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogICAgICAg
ICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNC
eXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24g
PSBBcnJheTo6V3JpdGU7CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9
IGZhbHNlOwogICAgIH0KICAgICAKICAgICBleHBsaWNpdCBBcnJheU1vZGUoQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xMzYsNiArMTM3LDcgQEAgcHVibGljOgog
ICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAg
IHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5h
Y3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9
IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJy
YXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTQ1LDE1ICsx
NDcsMTcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6
SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAg
ICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlC
ZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUoQXJy
YXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlv
biBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlv
biBhY3Rpb24pCisgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBh
cnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBl
ZEFycmF5ID0gZmFsc2UpCiAgICAgewogICAgICAgICB1LmFzQnl0ZXMudHlwZSA9IHR5cGU7CiAg
ICAgICAgIHUuYXNCeXRlcy5hcnJheUNsYXNzID0gYXJyYXlDbGFzczsKICAgICAgICAgdS5hc0J5
dGVzLnNwZWN1bGF0aW9uID0gc3BlY3VsYXRpb247CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJz
aW9uID0gY29udmVyc2lvbjsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAg
ICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gbWF5QmVMYXJnZVR5cGVkQXJy
YXk7CiAgICAgfQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFj
dGlvbiBhY3Rpb24pCkBAIC0xNjMsNiArMTY3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0
ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252
ZXJzaW9uID0gY29udmVyc2lvbjsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsK
KyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQog
ICAgIAogICAgIEFycmF5OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxB
cnJheTo6VHlwZT4odS5hc0J5dGVzLnR5cGUpOyB9CkBAIC0xNzAsNiArMTc1LDcgQEAgcHVibGlj
OgogICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEFycmF5OjpTcGVjdWxhdGlvbj4odS5hc0J5dGVzLnNwZWN1bGF0aW9uKTsgfQog
ICAgIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxBcnJheTo6Q29udmVyc2lvbj4odS5hc0J5dGVzLmNvbnZlcnNpb24pOyB9CiAgICAgQXJy
YXk6OkFjdGlvbiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6QWN0
aW9uPih1LmFzQnl0ZXMuYWN0aW9uKTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXko
KSBjb25zdCB7IHJldHVybiB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KICAgICAK
ICAgICB1bnNpZ25lZCBhc1dvcmQoKSBjb25zdCB7IHJldHVybiB1LmFzV29yZDsgfQogICAgIApA
QCAtMTc5LDM1ICsxODUsNTAgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXJy
YXlNb2RlIGZyb21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2Zp
bGUqLCBBcnJheTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKLSAgICAKKworICAgIEFycmF5TW9k
ZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24o
KSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKwogICAgIEFycmF5
TW9kZSB3aXRoU3BlY3VsYXRpb24oQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwg
c3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBh
Y3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5
TW9kZSB3aXRoQXJyYXlDbGFzcyhBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcykgY29uc3QKKworICAg
IEFycmF5TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3Ms
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
LCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFy
cmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAor
CisgICAgQXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBB
cnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24s
IGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKKyAgICBBcnJheU1v
ZGUgd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KEFy
cmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIGJv
b2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkpIGNvbnN0CiAgICAgewotICAgICAgICBBcnJheTo6U3Bl
Y3VsYXRpb24gbXlTcGVjdWxhdGlvbjsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCks
IGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSk7CisgICAgfQogCisgICAgc3RhdGljIEFycmF5OjpTcGVjdWxhdGlvbiBz
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpCisgICAgewogICAgICAgICBpZiAo
bWFrZVNhZmUpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRz
OworICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpPdXRPZkJvdW5kczsKICAgICAgICAgZWxzZSBp
ZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hvbGUobG9ja2VyKSkKLSAgICAgICAgICAgIG15U3BlY3Vs
YXRpb24gPSBBcnJheTo6VG9Ib2xlOworICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpUb0hvbGU7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3Vu
ZHM7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRp
b24pOworICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpJbkJvdW5kczsKICAgICB9Ci0gICAgCisK
KyAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb25G
cm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKSk7CisgICAgfQorCiAgICAgQXJy
YXlNb2RlIHdpdGhQcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBB
cnJheTo6Q2xhc3MgbXlBcnJheUNsYXNzOwotCiAgICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewog
ICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2Nr
ZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewogICAgICAgICAgICAgICAgIEFy
cmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIp
OwpAQCAtMjIxLDIzICsyNDIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG15QXJyYXlD
bGFzcyA9IEFycmF5OjpBcnJheTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5
Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5
Q2xhc3MobXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFy
cmF5OjpUeXBlIHR5cGUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7
Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVy
c2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0
eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkp
OwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5
OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOworCisgICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBz
cGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CisKKyAgICAgICAgYm9vbCBsYXJnZVR5cGVkQXJyYXkgPSBwcm9maWxlLT5tYXlCZUxh
cmdlVHlwZWRBcnJheShsb2NrZXIpOworCisgICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzc0Fu
ZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkobXlBcnJheUNsYXNzLCBzcGVjdWxh
dGlvbiwgbGFyZ2VUeXBlZEFycmF5KTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSB1bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlID0gU3BlY0ludDMyT25s
eTsKQEAgLTUyNiw3ICs1MzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0g
b3RoZXIudHlwZSgpCiAgICAgICAgICAgICAmJiBhcnJheUNsYXNzKCkgPT0gb3RoZXIuYXJyYXlD
bGFzcygpCiAgICAgICAgICAgICAmJiBzcGVjdWxhdGlvbigpID09IG90aGVyLnNwZWN1bGF0aW9u
KCkKLSAgICAgICAgICAgICYmIGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCk7Cisg
ICAgICAgICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpCisgICAgICAg
ICAgICAmJiBtYXlCZUxhcmdlVHlwZWRBcnJheSgpID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFy
cmF5KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUm
IG90aGVyKSBjb25zdApAQCAtNTc5LDcgKzU5MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1
aW50OF90IGFycmF5Q2xhc3M7CiAgICAgICAgICAgICB1aW50OF90IHNwZWN1bGF0aW9uOwogICAg
ICAgICAgICAgdWludDhfdCBjb252ZXJzaW9uIDogNDsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWN0
aW9uIDogNDsKKyAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogMTsKKyAgICAgICAgICAgIGJv
b2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkgOiAxOwogICAgICAgICB9IGFzQnl0ZXM7CiAgICAgICAg
IHVuc2lnbmVkIGFzV29yZDsKICAgICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDg4MTFiODlmMjRhNy4uMDdlODFjYjlhOGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtMzgyMSwyMSArMzgyMSwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAg
ICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwog
Ci0gICAgICAgIE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpOworICAgICAgICBOb2RlKiBsZW5ndGhOb2RlOworICAgICAgICBpZiAoaXNJbnQzMlNwZWN1
bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgo
R2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCku
YXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7CisgICAgICAgICAgICBsZW5ndGhOb2RlID0gYWRkVG9H
cmFwaChHZXRBcnJheUxlbmd0aEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAgICAgIH0KICAgICAgICAgLy8g
T3VyIEFycmF5TW9kZSBzaG91bGRuJ3QgY2F1c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3Vs
ZCBiZSBvayB0byBleGl0IHdpdGhvdXQgZWZmZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVl
OwogICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUp
IHsKICAgICAgICAgICAgIHNldChyZXN1bHQsIGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0
IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgd2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAot
ICAgICAgICAvLyB0aGF0IG92ZXJmbG93cyBpbnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2Rl
ID0ganNDb25zdGFudChqc051bWJlcihsb2dTaXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoQXJpdGhCaXRMU2hpZnQsIGxlbmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAg
ICAvLyBXZSBjYW5ub3QgdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMg
bWF5IGhhdmUgYSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2Rl
KiB0eXBlU2l6ZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAg
IHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7
CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzg1Miw3ICszODU2LDEyIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFy
cmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpS
ZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFy
cmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29y
ZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChlbmFibGVJbnQ1MigpKTsKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgo
R2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6
OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biB0cnVlOwogCkBAIC0zODcwLDcgKzM4NzksMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMK
ICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAg
ICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGVuYWJsZUludDUyKCkpOworICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjU0OGJkMGVlZTllZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk6CiAg
ICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
IGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRB
cnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOwogICAgICAgICByZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYsMTQgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7Cisg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQXJyYXlM
ZW5ndGhMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAg
ICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNo
IChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXgg
YzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgp
CiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29u
c3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0
N2E5Ny4uNjA5ZmYwODU3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2Fz
ZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0Ogor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5
M2VlZTZjYS4uMzQwOGFlYmY3MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQog
ICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAg
ICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAg
ICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJh
eSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
bmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4g
T3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhh
dmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6
R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDIxIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5
OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNl
IEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIC8vaWYgKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMSktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9kZSgp
Lm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIC8v
ZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzEyMDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihp
bmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUo
KS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCku
aXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5t
YXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhh
c0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApA
QCAtMTI2Niw3ICsxMjgzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpV
aW50MTZBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9pZiAoY2hpbGQy
LT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFu
RWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3Bl
Y3VsYXRlSW50NTIoKSkKQEAgLTEyNzcsNyArMTI5NywxMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rmxv
YXQ2NEFycmF5OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICAgICAgLy9pZiAoY2hpbGQyLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJh
eU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAg
ICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAg
ICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKQEAgLTE3MTcsMTIgKzE3NDAs
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6
IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0yMTQ5LDcgKzIxNzYsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogeworICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5
TW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZShtX2dyYXBoLCBub2RlLCBub2RlLT5jaGls
ZDEoKS0+cHJlZGljdGlvbigpLCBBcnJheU1vZGU6OnVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUp
OworICAgICAgICAgICAgQVNTRVJUKGFycmF5TW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsK
KyAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUpOworICAgICAgICAgICAg
Ymxlc3NBcnJheU9wZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgRWRnZSgpLCBub2RlLT5jaGlsZDIo
KSwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKKworICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MjczMiw3ICsyNzcwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6
CiAgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogewogICAgICAgICAgICAgZml4RWRnZTxE
YXRhVmlld09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy9pZiAobm9kZS0+Y2hpbGQy
KCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFy
Z2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgLy9lbHNlIC8vIEZJWE1FOiBub3QgY2xlYXIgd2hhdCB3
ZSBzaG91bGQgZG8gaGVyZSBpZiB0aGUgaW5kZXggaXMgc29tZXRoaW5nIGNyYXp5CisgICAgICAg
ICAgICAvLyAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFu
VXNlPihub2RlLT5jaGlsZDMoKSk7CiAKQEAgLTI3NTgsNyArMjc5OSwxMCBAQCBwcml2YXRlOgog
CiAgICAgICAgIGNhc2UgRGF0YVZpZXdTZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZp
ZXdPYmplY3RVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAg
ICAgICAvL2lmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5zaG91bGRTcGVjdWxhdGVJ
bnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkpOworICAgICAgICAgICAgLy9lbHNlCisgICAgICAgICAgICAvLyAgICBmaXhFZGdlPEludDUy
UmVwVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAgIGlmICht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9v
bGVhblVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CiAgICAgICAgICAgICAKQEAg
LTQwOTYsMTQgKzQxNDAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIG5vZGUt
PmNoaWxkMigpID0gRWRnZShzdG9yYWdlKTsKICAgICB9Ci0gICAgCi0gICAgTm9kZSogcHJlcGVu
ZEdldEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2luLCBOb2RlKiBjaGlsZCwgQXJyYXlNb2Rl
IGFycmF5TW9kZSkKLSAgICB7Ci0gICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFy
cmF5TW9kZSwgb3JpZ2luLCBjaGlsZCwgbnVsbHB0ciwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKLSAg
ICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG9yaWdpbiwKLSAgICAg
ICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGNoaWxkLCBLbm93bkNlbGxV
c2UpLCBFZGdlKHN0b3JhZ2UpKTsKLSAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRUb0hhc0luZGV4
ZWRQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR2VuZXJhdGlvbkluZm8uaAppbmRleCA0ZmFmOTQ5YTc4NjAuLjJkODZlYjc1NzM5YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaApAQCAt
MzksOCArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBUaGlzIGNs
YXNzIGlzIHVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGxpdmUgdmFsdWVzIGR1
cmluZyBjb2RlIGdlbmVyYXRpb24uCiAvLyBDYW4gcHJvdmlkZSBpbmZvcm1hdGlvbiBhcyB0byB3
aGV0aGVyIGEgdmFsdWUgaXMgaW4gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBpZiBzbyB3aGljaCwK
IC8vIHdoZXRoZXIgYSB2YWx1ZSBoYXMgYmVlbiBzcGlsbGVkIHRvIHRoZSBSZWdpc3RlckZpbGUs
IGFuZCBpZiBzbyBtYXkgYmUgYWJsZSB0byBwcm92aWRlCi0vLyBkZXRhaWxzIG9mIHRoZSBmb3Jt
YXQgaW4gbWVtb3J5IChhbGwgdmFsdWVzIGFyZSBzcGlsbGVkIGluIGEgYm94ZWQgZm9ybSwgYnV0
IHdlIG1heSBiZQotLy8gYWJsZSB0byB0cmFjayB0aGUgdHlwZSBvZiBib3gpLCBhbmQgdHJhY2tz
IGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCisvLyBkZXRhaWxz
IG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5LCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5n
IHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCiAvLyBzbyB0aGF0IHdlIGtub3cgd2hlbiB0aGUgdmFs
dWUgaXMgZGVhZCBhbmQgdGhlIG1hY2hpbmUgcmVnaXN0ZXJzIGFzc29jaWF0ZWQgd2l0aCBpdAog
Ly8gbWF5IGJlIHJlbGVhc2VkLgogY2xhc3MgR2VuZXJhdGlvbkluZm8gewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjQzYjVkMTAxMmUwZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTE0OTksNiArMTQ5OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hpcChSZWxhdGlvbnNoaXAobm9kZSwgbV96
ZXJvLCBSZWxhdGlvbnNoaXA6OkdyZWF0ZXJUaGFuLCAtMSkpOwogICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4uZDEzZDM3
ZjAyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUsNiArMTk2
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2UgQXJy
YXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICAg
ICAgY2FzZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZToKICAgICAgICAgY2FzZSBB
cnJheUluZGV4T2Y6CkBAIC0yMDA0LDYgKzIwMDUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgY2Fz
ZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1cm4gMjsKIAogICAgICAgICBj
YXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBj
YXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li43MjY0ZGMyZjU2NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0
QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zm
c2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJy
YXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFu
dCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2
ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRzLiAqLyBcCisgICAgbWFjcm8o
R2V0QXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhHZXRW
ZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFNjb3BlLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNjlhY2Y1
MTljMGJhLi5kNWRhMzRhNTE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtOTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9p
ZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFsdWUK
ICAgICB9CiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5T
ZXRJbmRleFF1aWNrbHkoaW5kZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5zZXRJ
bmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRyeVNl
dEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTE3NSw3ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFs
Q2VsbFN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBzaXplLCBjaGFyKiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ1BVUmVnaXN0ZXIgc2l6ZSwgY2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTgzLDExICsxODEsMTMgQEAgY2hhciogbmV3
VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
U3RydWN0dXJlKiBzdHIKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5l
Z2F0aXZlIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKworICAg
IHNpemVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpOworCiAgICAg
aWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNz
OjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSwgdW50
YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVuc2lnbmVkU2l6ZSkp
KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9jYXN0PGNoYXIqPihW
aWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSkpKTsKIH0KIAogdGVt
cGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA4LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAoVk0qIHZtUG9pbnRl
ciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTQwLDcgKzE5NDAsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MTZB
cnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxs
b3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTk1Niw3ICsxOTU2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
ODgsNyArMTk4OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNVaW50OENsYW1wZWRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29k
ZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsy
MDIwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMjAzNiw3ICsyMDM2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Miw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50
NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggODQ0YzE5YjMxMTQxLi44MGRmODFmZGYwNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xMTksMjcgKzEx
OSwyNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5LCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKgogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdFbXB0eUFycmF5LCBjaGFyKiwgKFZNKiwgU3RydWN0dXJlKikpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kSGludCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGludDMyX3QsIEJ1
dHRlcmZseSopKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6
ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQx
NkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMy
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMy
X3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qs
IGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwg
U3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQwNDRmNWY1YzAuLjQ3
ODcwM2FjMTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2ICs5ODYsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQ1MkFueSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNv
ZGVBdDoKICAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAgICAgICAgICAgc2V0
UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2Li41YmQzNzdkYWY4OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNzMsNiAr
MzczLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEdldEJ5VmFsOgogICAg
IGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVu
Z3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUs
NiArMzg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAg
ICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYjRjOGY4NjBiNTE0Li42NDQ5NjAz
ZTU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0zMjQ1LDE2ICszMjQ1LDI4IEBAIEpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0
aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlCiAg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2ppdC5ncmFwaCgpLnRyeUdldEZvbGRhYmxl
VmlldygKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwg
MCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKICAgICBpZiAodmlldykgewotICAgICAg
ICB1aW50MzJfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0
aCA9IHZpZXctPmxlbmd0aCgpOwogICAgICAgICBOb2RlKiBpbmRleE5vZGUgPSBtX2ppdC5ncmFw
aCgpLmNoaWxkKG5vZGUsIDEpLm5vZGUoKTsKLSAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNJbnQz
MkNvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwgbGVuZ3RoKQorICAgICAgICBp
ZiAoaW5kZXhOb2RlLT5pc0FueUludENvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigp
IDwgbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIEpJVENvbXBpbGVyOjpKdW1wKCk7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVy
OjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNy
b0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZWxz
ZQogICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgaW5kZXhHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiBu
b2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKQpAQCAtNzk2MCw3ICs3OTcyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNl
UmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBb
Jl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0
aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9q
aXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRh
dGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAg
ICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MzQyLDEyICs4MzU0LDE4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKICAgICAgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBy
ZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTExMTEsMTAg
KzExMTI5LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0
aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRB
cnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJl
Q29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0
dXJlLmdldCgpKTsKLSAgICAKKwogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXplKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7Ci0gICAg
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8vIFRoZSBvcGVyYXRpb25zIHdlIGNhbGwgb24g
dGhlIHNsb3cgcGF0aCBleHBlY3QgYSBDUFVSZWdpc3Rlciwgc28gaW50NjRfdCBvbiA2NCBiaXQg
cGxhdGZvcm1zCisgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2l6ZUdQUiwgc2l6ZUdQUik7
CisjZW5kaWYKKworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUs
IHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBU
eXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUsIEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CkBAIC0xMTEzMCw2ICsxMTE1OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKIAogICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQ
UiwgVHJ1c3RlZEltbTMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSkpOworICAg
IC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUg
c2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGlu
dDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CiAgICAgCiAgICAgbV9q
aXQubW92ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKICAgICBtX2ppdC5sc2hpZnQzMihUcnVzdGVk
SW1tMzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSwgc2NyYXRjaEdQUik7CkBAIC0x
MTE4NSw5ICsxMTIxNSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRB
cnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVQdHIoCiAgICAgICAgIHN0
b3JhZ2VHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgc2l6ZUdQUiwKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAg
VHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAg
LTE0MTU5LDYgKzE0MTk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY29tcGlsZU5l
d1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhJbnQ1MlNpemUobm9kZSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBV
bnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQu
anNWYWx1ZVJlZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAppbmRleCBiNjUxNWQ4YjcyMTkuLjZhNjI3NzRjZGQ2OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMDAsOSArMTMwMCwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKICAgICB2b2lkIGNvbXBpbGVOZXdTdHJp
bmdPYmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld1N5bWJvbChOb2RlKik7Ci0gICAg
CisKKyAgICB2b2lkIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqLCBU
eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpOwogICAg
IHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKik7Ci0gICAgCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShO
b2RlKik7CisjZW5kaWYKKwogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFj
cm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUy
Q29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogI2lm
IFVTRShCSUdJTlQzMikKQEAgLTEzNzMsNiArMTM3Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bXBpbGVHZXRHbG9iYWxUaGlzKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVu
Z3RoKE5vZGUqKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgY29tcGlsZUdldEFycmF5
TGVuZ3RoQXNJbnQ1MihOb2RlKik7CisjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZUNoZWNrVHlw
ZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudChOb2RlKik7CkBA
IC0xNDM1LDYgKzE0NDIsOSBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZv
clR5cGVkQXJyYXlJc0RldGFjaGVkSWZPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIs
IEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzKTsKICAgICB2b2lkIGVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOwogICAg
IHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqKTsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihO
b2RlKik7CisjZW5kaWYKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShO
b2RlKiwgVHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFs
dWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgp
OwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwg
R1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHZvaWQgY29tcGls
ZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1h
dCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKQEAgLTI0MjcsNyArMjQzNyw3IEBAIHByaXZh
dGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgY2Fu
b25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJv
KS4KKy8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRl
ZCBieSAxMiwgbG93IGJpdHMgemVybykuCiBjbGFzcyBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMjQ3NSw3ICsyNDg1LDcg
QEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5
b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRz
LCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgorLy8gR2l2ZXMgeW91IGEgc3RyaWN0
IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNTIgYml0cywgaGlnaCAxMiBi
aXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFu
ZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2
ZWZiY2VkZGJjMGEuLjRlZDc1OWYxOTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMTM0LDYgKzIxMzQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBjb21waWxlR2V0QnlWYWxPblNjb3Bl
ZEFyZ3VtZW50cyhub2RlLCBwcmVmaXgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OiB7
CisgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5Vmlldygp
KTsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVk
QXJyYXlUeXBlKCk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIGNvbXBp
bGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShub2RlLCB0eXBlLCBwcmVmaXgpOwpAQCAtMzUzOCw2
ICszNTM5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9y
dCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAgICAg
Y2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90
eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IGUxMzVmZDUzNDhlOC4uZjk1NDlhNTMwYzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjk0LDYg
KzI2OTQsODcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqIG5v
ZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBlZEFy
cmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOworICAg
IFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNpemVH
UFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0
ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSogbm9kZSkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5
VmlldygpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKyAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAg
IHN0YXRpY19hc3NlcnQoTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDwgKDF1bGwgPDwgNTIpLCAidGhl
cmUgaXMgYSByaXNrIHRoYXQgdGhlIHNpemUgb2YgYSB0eXBlZCBhcnJheSB3b24ndCBmaXQgaW4g
YW4gSW50NTIiKTsKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQor
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHZlY3Rvcih0aGlzKTsKKyAgICBHUFJU
ZW1wb3JhcnkgZGF0YSh0aGlzKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsK
KyAgICBHUFJSZWcgdmVjdG9yR1BSID0gdmVjdG9yLmdwcigpOworICAgIEdQUlJlZyBkYXRhR1BS
ID0gZGF0YS5ncHIoKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSB2ZWN0b3JHUFIpOworICAgIEFT
U0VSVChiYXNlR1BSICE9IGRhdGFHUFIpOworICAgIEFTU0VSVCh2ZWN0b3JHUFIgIT0gZGF0YUdQ
Uik7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOworCisgICAgSklUQ29t
cGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwKKyAgICAgICAgVHJ1
c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZW
ZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBudWxsVmVjdG9y
ID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmVjdG9yR1BSLCBUcnVzdGVk
SW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKTsKKworICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRl
cmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2FnZVdpdGhvdXRVbnRhZ2dpbmco
R2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdl
KGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwgYXJy
YXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNhZ2luZy4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTE1CisgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1ZmZlckdQUiwgQXJyYXlCdWZm
ZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICBtX2pp
dC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRpZgorCisgICAgbV9qaXQuc3ViUHRy
KGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9q
aXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0
KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIpOworCisgICAgZG9uZS5saW5r
KCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNTRVJUKCFKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNlbmRp
ZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKK30KKwogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5vZGVUeXBlIG9wID0g
bm9kZS0+b3AoKTsKQEAgLTQzNzUsNiArNDQ1NiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAg
ICAgY29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5Myw2ICs0NTc4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgY29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJvdG90eXBl
T2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4Myw3ICs1NjczLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5k
MzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQog
ICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwg
dDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZp
ZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAgICAg
ICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKQEAg
LTU3ODQsNyArNTg3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAgICAg
ICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0
ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA1ZjUxZjIyNTEwNGYu
LjZiM2UyNTNlZjk5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzksNiArMjc5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2Ug
UHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAg
IGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgpAQCAtMzU5LDYg
KzM2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAg
ICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoK
ICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0
OGM5ZmFkNjcuLmM5OTBkNTljYmE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3Jp
dGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0zOTEsNiArMzkyLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbml0aWFsaXpl
RW50cnlwb2ludEFyZ3VtZW50czoKICAgICBjYXNlIENQVUludHJpbnNpYzoKICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdp
dGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDQzZDI2ZTgzZTk2OC4uMDVlODMxNGYwZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDI1LDYgKzEwMjUsOSBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdl
dEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUy
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAg
ICAgICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTUwNTQsOCArNTA1Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJy
YXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUg
bGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwo
bGVuZ3RoLCBtX291dC5jb25zdEludDY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpKSkpOworICAgICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKGxlbmd0
aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtNTA2NCw2ICs1MDY4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoKQorICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsK
KyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBA
IC04MTY5LDk4ICs4MTgwLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsK
ICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50
bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQz
MihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91
Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQot
ICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNp
emUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwK
LSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2Fz
ZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNp
emUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBt
X291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAg
ICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAg
ICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQu
YWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9y
Rm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBz
bG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwo
YWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29y
ZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQz
Mlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRl
U2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2
NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0K
LSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBz
aXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBv
aW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7
Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFn
ZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZh
bHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAg
IGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAg
ICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigp
KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVu
dGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworICAgICAgICAgICAgTFZh
bHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
KTsKIAotICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZ
UEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAg
ICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJh
eT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVE
SU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlf
VFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAg
ICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUs
IGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAg
ICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQotICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFn
ZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2Up
OworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsK
IAotICAgICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBz
bG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0g
KGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0
aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2Fs
bEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVk
QXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0
R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BS
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsK
LSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xv
d1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAg
ICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7
CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwot
ICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3Vs
dCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0
eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0KICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAg
ICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwog
CkBAIC04Mjc3LDcgKzgyMDksMTAyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGVtaXROZXdUeXBlZEFycmF5V2l0aFNp
emUoVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFsdWUgc2l6ZTY0Qml0cykK
KyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3IobV9vdXQuaW50
UHRyWmVybyk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQuYWJv
dmUoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQ2NChKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNp
emVMaW1pdCkpLAorICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShzbWFsbEVu
b3VnaENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOworICAgICAgICAvLyBXZSBhc3N1bWUgdGhy
b3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUgaXMgYSAzMi1iaXQg
bnVtYmVyLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJh
eUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKyAgICAgICAgTFZhbHVlIHNpemUgPSBtX291
dC5jYXN0VG9JbnQzMihzaXplNjRCaXRzKTsKKworICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQor
ICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0
SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7CisgICAgICAgIGlmIChlbGVt
ZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7CisgICAgICAgICAgICBieXRlU2l6ZSA9IG1f
b3V0LmJpdEFuZCgKKyAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNv
bnN0SW50UHRyKDcpKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KDcpKSk7CisgICAgICAgIH0KKworICAgICAgICBMVmFsdWUgYWxsb2Nh
dG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2Nh
dGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKKworICAgICAgICBzcGxhdFdvcmRzKAor
ICAgICAgICAgICAgc3RvcmFnZSwKKyAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKKyAgICAg
ICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0
SW50UHRyKDMpKSksCisgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCisgICAgICAgICAgICBt
X2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKKworI2lmIENQVShBUk02NEUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsK
KyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hw
b2ludChwb2ludGVyVHlwZSgpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29t
ZVJlZ2lzdGVyKHN0b3JhZ2UpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6
ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAg
ICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
ICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAg
ICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigp
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsK
KyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2Ug
PSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisKKyAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1
ZSA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKKyNkZWZpbmUg
VFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKKyAgICAgICAgY2FzZSBUeXBlICMjIG5hbWU6
IFwKKyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1l
IyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElO
R19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQorI3VuZGVmIFRZUEVEX0FSUkFZX1RZ
UEVfQ0FTRQorICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKKyAgICAgICAgICAgIGZhc3RSZXN1
bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0
UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKKyAgICAgICAg
bV9vdXQuc3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfbGVuZ3RoKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKEZh
c3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X21vZGUpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBWYWx1ZUZyb21CbG9j
ayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2Fz
ZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBo
aShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKworICAgICAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOworICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNs
b3dQYXRoKAorICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxv
Y2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAorICAgICAgICAgICAgICAg
ICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBl
KSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2Nh
dGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5k
aXJlY3RHUFIoKSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2l6ZTY0Qml0cywgc3Rv
cmFnZVZhbHVlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFu
Y2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAg
ICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dS
ZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBvYmplY3QgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTU1OTEsNyArMTU2MTgsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAot
ICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25O
ZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAg
ICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRleFRv
Q2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNp
emUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVj
aywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyArMTU3
NjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5k
YXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0
cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5l
Z2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAg
ICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAg
ICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9v
dXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkp
OwpAQCAtMTcyMzYsNyArMTcyNjMsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGRvVW50YWdB
cnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAg
ICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpIHsKLSAgICAgICAgICAgICAg
ICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkNjQo
YmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICAgICAgICAg
IHJldHVybiB1bnRhZ0FycmF5UHRyKHRhZ2dlZFB0ciwgc2l6ZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gcHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPdXRwdXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgK
aW5kZXggYTk0MjAwOTNmNTI5Li5lZDhmZjczZTFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPdXRwdXQuaApAQCAtMzI5LDYgKzMyOSw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbm9u
TmVnYXRpdmUzMihMVmFsdWUgbG9hZEluc3RydWN0aW9uKSB7IHJldHVybiBsb2FkSW5zdHJ1Y3Rp
b247IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoVHlwZWRQb2ludGVyIHBvaW50ZXIp
IHsgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2
ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDMy
KGJhc2UsIGZpZWxkKTsgfQorICAgIExWYWx1ZSBsb2FkNjROb25OZWdhdGl2ZShMVmFsdWUgYmFz
ZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDY0KGJhc2UsIGZpZWxk
KTsgfQogCiAgICAgTFZhbHVlIGVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKICAgICBMVmFsdWUgbm90
RXF1YWwoTFZhbHVlLCBMVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50
cmluc2ljRW1pdHRlci5jcHAKaW5kZXggOTRmN2FmZTExYTkxLi43YTU2MDc1NjVkOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5
LDIzICs3OSwzMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5z
aWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogCiAgICAgc3dpdGNoIChpbnRy
aW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1
ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNj
cmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKICAgICAgICAgaml0LmJveEludDMyKHZhbHVl
R1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5z
aWM6IHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwotCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaWYg
KGVsZW1lbnRTaXplKHR5cGUpID4gMSkKKyAgICAgICAgICAgIGppdC5sc2hpZnQ2NChUcnVzdGVk
SW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJ
bnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hG
UFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVl
R1BSKTsKLQogICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKSB7Ci0gICAgICAgICAg
ICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3ZSBUeXBlZEFycmF5cyBjYW5u
b3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgotICAgICAgICAgICAg
aml0LmxzaGlmdDMyKHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVl
R1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIG9u
IDMyLWJpdCBwbGF0Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0
IG92ZXJmbG93cyBhbiBpbnQzMi4KKyAgICAgICAgICAgIGppdC5sc2hpZnQzMihUcnVzdGVkSW1t
MzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAgICAgICAgIH0KLQogICAgICAg
ICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3Rh
dGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI2LDggKzEzNSwxMiBA
QCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCB2YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJmppdCk7
Ci0gICAgICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaml0LmJveEludDUyKHZh
bHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7Cisj
ZWxzZQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYK
ICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZDdkZjdjYjhlODc1
Li41ZDZiMGE4NWE0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtOTM3LDEwICs5MzcsOCBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdQogICAg
ICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkg
ewotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7
CisgICAgICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVl
LCBhcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkKICAgICAgICAgICAgICAgICBhcnJheVBy
b2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CkBAIC0yMzQxLDE3ICsyMzM5LDE3IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RkOjpvcHRpb25h
bDxpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc0ludDMyKCkpIHsKLSAgICAgICAg
aW50MzJfdCBpID0gKmluZGV4OworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKKyAgICAgICAgdWludDMyX3Qg
aSA9ICppbmRleDsKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgewotICAgICAg
ICAgICAgaWYgKGkgPj0gMCAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkK
KyAgICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKGJhc2VWYWx1
ZSktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaSkpOwogICAgICAgICAgICAgaWYgKGFycmF5UHJv
ZmlsZSkKICAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9i
amVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJy
YXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAg
ICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMjM3MSw4ICsyMzY5
LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChpID49IDApCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkp
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2Jh
bE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFz
ZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5z
ZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAppbmRleCA0MmVmYjcxYzRhNjQuLmEzODg0MjYzYjFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ2LDgg
KzEwNDYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9m
aWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09i
amVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZh
bHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAg
ICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBh
cnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAg
ICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTY5LDE0ICsx
MTY5LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAg
IEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJv
cGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2Rl
LmlzU3RyaWN0KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spOwogICAgIAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1
YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICpp
bmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChv
YmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2Jq
ZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGlmICghb2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAm
bWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNT
dHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5k
ZXggYzM1ZTQ1NDQxMTA2Li5jODAwZWNlOWFhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNSw2ICsyMTUsNyBA
QCBlbmQKIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IE51bWJlck9mU3RydWN0dXJlSURFbnRyb3B5
Qml0cyA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX251bWJlck9mRW50cm9weUJpdHMK
ICAgICBjb25zdCBTdHJ1Y3R1cmVFbnRyb3B5Qml0c1NoaWZ0ID0gY29uc3RleHByIFN0cnVjdHVy
ZUlEVGFibGU6OnNfZW50cm9weUJpdHNTaGlmdEZvclN0cnVjdHVyZVBvaW50ZXIKKyAgICBjb25z
dCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggPSBjb25zdGV4cHIgQXJyYXlQcm9maWxlOjpzX3Nt
YWxsVHlwZWRBcnJheU1heExlbmd0aAogZW5kCiAKIGNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsID0gY29uc3RleHByIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsCkBAIC0x
MzAwLDcgKzEzMDEsNyBAQCBtYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhp
bmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKICAgICBsb2FkYiBKU0NlbGw6Om1faW5kZXhpbmdU
eXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIAotbWFjcm8gZ2V0QnlWYWxUeXBl
ZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlW
YWwsIHNsb3dQYXRoKQorbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5p
c2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwg
c2xvd1BhdGgpCiAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVk
IGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KICAgICBs
b2FkYiBKU0NlbGw6Om1fdHlwZVtiYXNlXSwgdDIKICAgICBzdWJpIEZpcnN0VHlwZWRBcnJheVR5
cGUsIHQyCkBAIC0xMzExLDggKzEzMTIsMTQgQEAgbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJh
c2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHMKICAg
ICBpZiBBUk02NEUKICAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKICAgICAgICAgY29uc3Qgc2Ny
YXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNl
XSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgICAg
IGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3RoCisgICAgICAg
IGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgZWxzaWYgSlNWQUxVRTY0CisgICAg
ICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0
aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4K
KyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwg
c2xvd1BhdGgKKyAgICAgICAgYnFiZXEgaW5kZXgsIHNtYWxsVHlwZWRBcnJheU1heExlbmd0aCwg
c21hbGxUeXBlZEFycmF5CisgICAgICAgIHNldExhcmdlVHlwZWRBcnJheSgpCisuc21hbGxUeXBl
ZEFycmF5OgogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVu
dGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVz
ZWQgb24gb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBmM2Q5
N2NhNGY3Y2IuLjM2MzIzNzE0MWFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE2NjYsNyArMTY2
Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRC
eVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZp
bmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQor
ICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgbWFjcm8gKCkgZW5kLCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5
VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQppbmRleCBmYmRiYTY4ZTBmMzAuLjM2NjUxNjVlNWI1MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAg
LTE3MTMsNiArMTcxMywxMCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmaW5p
c2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZW5kCiAKKyAgICBtYWNybyBzZXRM
YXJnZVR5cGVkQXJyYXkoKQorICAgICAgICBzdG9yZWIgMSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgZW5kCisKICAg
ICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3NjMsNyArMTc2
Nyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRC
eVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZp
bmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQor
ICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5v
cEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlf
dmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCmlu
ZGV4IGM5YjhmMmE3MTkxZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8U2hhcmVk
VGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0
b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAotU2hhcmVk
QXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0
b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRz
KHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYm
IGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1Y3Rv
cihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpAQCAtNjgs
NyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5
QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlzKTsKIH0K
IAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1
bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0
cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYg
ZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAsIG1fc2l6
ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lkIEFycmF5
QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIAotdm9p
ZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCit2
b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7
Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwgc2l6ZS4K
LSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbnVt
RWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUgLyBudW1F
bGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsKKyAgICBz
aXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVzLmhhc092
ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpF
KSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2l6ZV90
IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRpb25TaXpl
ID0gc2l6ZUluQnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRl
cy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRpb25T
aXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRoaW5n
LCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZlciBp
cyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlwZShk
YXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0
ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRy
eUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQogICAg
IGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRhLCAwLCBh
bGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7CisgICAg
bV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1Y3Rv
ciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAgLTE3
OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJheUJ1
ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJbkJ5
dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVyID0g
dHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUob3Ro
ZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJj
ZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUoc291
cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBAQCBS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYm
IGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4gdGhh
dCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9tIHRo
ZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6OmNv
bnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJvbUJ5
dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3Ry
dWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QKIC8v
ICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5cGVk
IGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBkaWZm
ZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20gdGhl
IGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29u
c3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9y
RnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEgJiYg
IUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAgICBH
aWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcgQEAg
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQq
IGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29udGVu
dHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50
cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6ZSk7
CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90aGVy
LmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2
b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29udGVu
dHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJy
YXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcgQEAg
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RGTW92
ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVt
ZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6
ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBw
b2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAK
LVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVy
Q29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlC
dWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRl
TGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1dG8g
YnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkpOwot
ICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBpZiAo
Ynl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5KGJ1
ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50
cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwpAQCAt
MjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRl
bnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVl
KGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBBcnJheUJ1
ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCkKIHsK
ICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAxLDkg
KzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNp
Z25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90IEFycmF5
QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBj
dXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVuZ3RoID0g
Ynl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3VycmVu
dExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50
TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENsYW1w
ZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25zdAog
ewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Cisg
ICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAgYXV0
byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJlc3Vs
dC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLjg5YTBiOWM4YTkxOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzks
NyArMzksMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBDUFUoQUREUkVTUzY0KQorI2Rl
ZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxzZQorLy8gQmVjYXVz
ZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJy
YXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisv
LyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1aXRl
IG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1bGF0
ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9y
eSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVz
LgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBj
bGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNTgsNyBAQCB1c2luZyBQYWNr
ZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNr
PHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAgIHZv
aWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0
ZXMpOyB9CkBAIC02MCwxNCArNjcsMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9
IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBE
YXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24g
bV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90IG1f
c2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250
ZW50cyYmKTsKQEAgLTc5LDcgKzg2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5z
aWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAg
IAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApA
QCAtOTQsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9
OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxv
Y2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlh
bGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQg
dHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExMiwyOCBAQCBw
cml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cisg
ICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1Ymxp
YyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlC
dWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBi
eXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlu
bGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsKICAg
ICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5
QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBk
b3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVu
c2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVm
ZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25z
dDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigp
OwpAQCAtMTYxLDEyICsxNjgsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1
Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwg
dW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25z
dCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJh
eUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJs
ZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRv
dWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIHNpemVf
dCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBzaXpl
X3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7CiAKICAg
ICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMTk5LDcgQEAgY29uc3Qg
dm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRh
dGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6
ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250
ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxMiw3IEBAIGJvb2wgQXJyYXlCdWZm
ZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJ
bkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBzY2Fs
ZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1cm4g
c2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsK
KyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAogdm9p
ZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDczNzIyNzQ1MzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJh
eUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRl
T2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9ieXRl
TGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQog
ewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZz
ZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zm
c2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uZTcxYjA2MWZlNzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkg
Y29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5
dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFj
aGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lz
RGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2
ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlm
eUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisg
ICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNl
dCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRT
aXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVu
IHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAg
ICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNp
emUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFu
IEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJS
YW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90
IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9mZnNl
dCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVuc2ln
bmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNpemU7
CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9m
ZnNldCkgLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5n
RWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZl
clZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAK
IHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5s
aW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsK
KyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zm
c2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBi
b29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3Ro
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7
CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
ZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHpl
cm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7
Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAg
ICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5z
aWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1Jh
bmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAg
ICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJh
eSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJv
bSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNv
bnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNl
dCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1l
bnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9m
ZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2ln
bmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7
CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zm
c2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5n
dGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQg
KiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0
aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVm
ZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVja2Vk
PHNpemVfdD4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9mZnNl
dCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9mZnNl
dDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1c3Rl
ZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpvZmZz
ZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqb2Zm
c2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0Vs
ZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAg
ICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVt
ZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYgQ1BV
KEpTVkFMVUU2NCkKKyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisgICAg
dWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNEZXRhY2hh
YmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgc2l6ZV90IG1fYnl0ZUxl
bmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2Yg
dGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0xNjAs
ODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7
CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFy
cmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwo
QXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5
dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5i
eXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5
LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBv
ZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNldCwg
YXJyYXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXkt
PmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlC
dWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVu
Z3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNl
dCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYg
KCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3Ro
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFzZSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2Ug
KyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlC
dWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0
ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRl
TGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZz
ZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlm
ICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0
aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3Qq
IGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAg
bWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUlt
cGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgcmFu
Z2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAg
ICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAg
ICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAg
ICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFs
bGVyVGhhbihieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChiYXNlICsgYnl0
ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICBpbnQgc3Rh
cnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5zaWdu
ZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCArPSBhcnJh
eVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAgIGlmIChl
bmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAwKQotICAg
ICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFycmF5
U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFydCkKLSAg
ICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVmZmVyVmlldzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKaW5k
ZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAgc3RhdGlj
IHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nlc3NJbmRleFZhbHVl
LnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVCh0eXBlZEFycmF5
Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKKwogICAg
IGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0IG9m
IGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBkY2MyZjUwNjRhZjIu
LmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURhdGFWaWV3
OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkK
ICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVM
ZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZSgKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKIH0KIAog
UmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0dXJu
IGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIxNDQuLjM0MDI2NTQx
MDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcgZmluYWwgOiBwdWJs
aWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUo
UmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBl
KCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZm
ZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNldCwg
Ym9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBnZXQoc2l6
ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAg
ICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6
ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWduZWQmIG9m
ZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBy
ZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVs
bHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0PFQ+KG9m
ZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8fCAqc3Rh
dHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVlLCBib29s
IGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2b2lkIHNldChzaXpl
X3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVs
bHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZz
ZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIERhdGFWaWV3
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVu
Z3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBiZTdlNmMwNTM0
ZmEuLmY0OTM3MGZjYWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTUgKzMzLDE1IEBAIG5hbWVzcGFjZSBK
U0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVyaWNUeXBlZEFycmF5
VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGlj
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiB0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3Rh
dGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3Ro
KTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KGJhc2VBZGRyZXNzKCkpOyB9
CiAgICAgCkBAIC02NSwyNiArNjUsMjYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgemVyb0Zp
bGwoKSB7IHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdAorICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gYnl0
ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAotICAg
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5n
dGgoKSk7CiAgICAgICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAgICB2
b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0
KHNpemVfdCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAg
ICAgIGRhdGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKHNpemVfdCBpbmRleCwg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAg
ICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CkBAIC0xMDAsMTYgKzEwMCw5IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBjb3Vu
dCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgp
OwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNl
dCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAg
ICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAgICAgIHJldHVybiBpc1N1
bVNtYWxsZXJUaGFuKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAgICAg
Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0KSBj
b25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3Rh
cnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBj
b25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsKQEAg
LTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNH
bG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAgIEdl
bmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBhZTVi
ZGQ4YzZhMzEuLjU0Mjk4MGFlNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmll
dygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShi
dWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5
Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4
LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
IGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUo
YXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3
LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBh
dXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0
aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVmPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZShz
aXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZm
ZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwog
ICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUo
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEwMSw3IEBAIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5
Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVz
dWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJU
KHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1H
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2IEBA
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAs
IGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0
LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQg
b2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQs
IHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciogYnVm
ZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBj
bGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVPZmZz
ZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9m
ZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJyYXlC
dWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKaW5kZXggODllYWViZDNjMmNjLi5mMDc0MGNiNmQ0NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8gPSB7
CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0
aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB2
b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZv
aWQqIHZlY3RvcikKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVjdG9y
KHZlY3RvciwgbGVuZ3RoKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQsNyBA
QCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCgKIH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMy
X3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsCiAgICAgSW5pdGlh
bGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0aGFu
IDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpIC8g
ZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZDxzaXplX3Q+IHNpemUgPSBsZW5ndGg7CisgICAgc2l6
ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGgpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92
ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgc2l6ZSksIGxlbmd0aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwog
ICAgIGlmICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJv
RmlsbCkKICAgICAgICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5o
ZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3Ro
KSAqIGVsZW1lbnRTaXplKTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVk
KHNpemUudmFsdWUoKSk7CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAg
bV9tb2RlID0gT3ZlcnNpemVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBK
U0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4
dCgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBtX3N0cnVj
dHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoV2Fz
dGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVy
Vmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCisgICAg
dW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBt
X3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21v
ZGUoRGF0YVZpZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNpemVf
dCBlbGVtZW50U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRhW3R5
cGUgLSBJbnQ4QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5
dGVMZW5ndGgoKSBjb25zdAorc2l6ZV90IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkg
Y29uc3QKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1bHQg
PSBsZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICByZXR1
cm4gcmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93
IGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQgdGhl
IGV4dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0dXJu
IGxlbmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1ZmZl
ciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcg
KzI3NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0
ZU1lbW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0p
OwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxl
bmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IHRoaXMt
PmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0VHlw
ZWRBcnJheTogewpAQCAtMzE2LDcgKzMyMyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpT
QXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+
Ynl0ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAg
IHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewog
I2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApp
bmRleCBkZDAxZjdmODJhNTMuLmRhNmRkMGJkNzUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcgQEAg
cHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNpbmcg
VmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRh
Z0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTExNywx
MCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwogICAg
IH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVpbnQz
Ml90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHNpemVfdCBsZW5ndGgs
IHVpbnQzMl90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkg
LSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAgICAg
ICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAgICAgcmVzdWx0ICo9IGVs
ZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDE7
CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tl
ZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVjdGVk
OgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJvRmls
bCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUq
LCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9kZSA9
IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMgb25seSBmb3IgY29uc3Ry
dWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVzZWQgYnkgdGhlIEpJVCdzIHNsb3cgcGF0
aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5n
dGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJl
Kiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBWTSYsIFN0cnVj
dHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcgeyBE
YXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgU3Ry
dWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CiAgICAgICAgIAog
ICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cnVjdHVyZTsgfQog
ICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Zl
Y3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFycmF5TW9kZSBtb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkgY29u
c3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBAIC0xNjIsNyArMTY0LDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogICAgICAgICB1c2lu
ZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2Fn
ZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwotICAgICAgICB1aW50MzJfdCBt
X2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgICAgICBUeXBlZEFycmF5TW9k
ZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CiAgICAgfTsKQEAgLTE5
Myw4ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKTsK
ICAgICBpbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJlbnRs
eSgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0K
LSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgc2l6ZV90IGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsK
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAgcHJv
dGVjdGVkOgogICAgIEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7CiAK
ICAgICBWZWN0b3JQdHIgbV92ZWN0b3I7Ci0gICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgc2l6
ZV90IG1fbGVuZ3RoOwogICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDM0
ZWEyMTQ2MGEwZC4uOTkyMmZmZGI1N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDEzICs2OSwxNSBAQCBpbmxpbmUg
dWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUs
ICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisg
ICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKwogICAgIGlmIChk
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJbnQz
MigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA2
ZmFiNDY1ZGQzYjkuLmRmZDZhNTExZDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpTRGF0
YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZlciog
YnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVf
dCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwg
SlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZpZXc6OnNldChKU0ds
b2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCkKIHsKICAgICBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
SlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkK
K2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTVmFs
dWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJjNzg1
ZTQ3NjExYS4uZWMyYWY2OTgyMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IEpTQXJyYXlCdWZmZXJWaWV3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgZWxlbWVudFNpemUgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGVs
ZW1lbnRTaXplID0gMTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZWRBcnJheUNvbnRlbnRU
eXBlIGNvbnRlbnRUeXBlID0gVHlwZWRBcnJheUNvbnRlbnRUeXBlOjpOb25lOwogCkBAIC00Niwx
NSArNDYsMTUgQEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LAorICAgICAgICBzaXpl
X3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3Qg
YWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRl
IHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRp
YyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNl
dChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwg
SlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNE
YXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0
aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6
ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwg
c2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRC
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNo
YXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4
NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdl
dERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEg
RGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNp
emVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9i
amVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAg
IHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwor
ICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsK
ICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49
IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlC
dWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25l
ZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3Ro
ID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGgg
fHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFj
Y2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlm
ICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3
Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0
ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJi
eXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRh
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAg
IGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0g
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEg
JiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBsaXR0bGVFbmRp
YW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvQm9vbGVhbihnbG9iYWxPYmpl
Y3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmll
dy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBm
cm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+
bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAg
ICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0
aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgK
aW5kZXggYzIyYzU1YTBkODFkLi42YWJkMmE0MWIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhy
b3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZlRnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01NSwxMCArNTYs
MTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJh
eUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVyZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8v
ICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20gSlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlw
ZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAgICBzaXplX3QgTAogLy8gICAgIFR5cGVkQXJy
YXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9p
bnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKKy8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEg
dG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFr
ZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQg
c29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRo
RmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwg
dm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0
ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7
CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3Rv
cihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rv
cik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsK
ICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBK
U0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBs
KTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1f
bGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRWZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2
ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1
bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09i
amVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAg
IGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5H
ZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaW5C
b3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBi
b29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAor
ICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigp
ICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVk
IGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05h
dGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xl
bmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3RvcigpW2ldOwogICAgIH0KICAgICAKLSAg
ICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIEpTVmFsdWUg
Z2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEFk
YXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkp
KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVu
c2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRl
eFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZh
bHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVk
VmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseShz
aXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNP
YmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRp
dmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJ
bmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpz
VmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBz
aXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0o
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0
b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAg
c3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
dG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9
CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZl
RnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRp
dmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0
aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05h
dGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAK
ICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4gb2Zm
c2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5n
dGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQg
KyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbihvZmZz
ZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNldFF1
aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAg
ICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wg
dmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBl
cnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRocm93
biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBv
ZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgs
IENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNldChK
U0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0Kiwgc2l6ZV90IG9iamVjdE9m
ZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsK
ICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hh
cmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1
bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0
aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAgICAg
Ym9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0gICAg
ICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAgIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVf
dCBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMgdGhh
dCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBv
cmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
dXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBlZFZl
Y3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAgICAg
ICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaAppbmRleCA0NTAyMzg3OTJkMTAuLjFlYjNkMTc4NjFmMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUgIlR5
cGVkQXJyYXlzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtNDcsNyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6SlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3RvcigK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
dW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rv
cikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9u
Q29udGV4dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyArNzks
NyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgotSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTk5LDcgKzEwMCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC0xNDUsNyArMTQ2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0
ZVJhbmdlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1
OSw4ICsxNjAsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxp
ZGF0ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNl
dFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5z
aWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhl
ciwKLSAgICB1bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0
eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIHNpemVfdCBv
dGhlck9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMjE4LDcgKzIxOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVmZmVy
KCkgIT0gb3RoZXItPmV4aXN0aW5nQnVmZmVyKCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXplID09
IG90aGVyRWxlbWVudFNpemUgJiYgdmVjdG9yKCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAgICAg
ICB8fCB0eXBlID09IENvcHlUeXBlOjpMZWZ0VG9SaWdodCkgewotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVW
YWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRl
IGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4
UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIyOSw3
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZp
Y1R5cGUoCiAKICAgICAvLyBOb3cgd2UgZWl0aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBmaXJz
dCB3ZSB0cnkgdG8gY292ZXIgKDJCKS4KICAgICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVt
ZW50U2l6ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0SW5k
ZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhl
ckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAg
ICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkp
OwpAQCAtMjM4LDExICsyMzksMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFu
IGludGVybWVkaWF0ZSB0cmFuc2ZlciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZlY3Rv
cjx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlLCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICBmb3IgKHNpemVfdCBpID0g
bGVuZ3RoOyBpLS07KSB7CiAgICAgICAgIHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFwdG9y
Ojp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0SW5k
ZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7
IGktLTspCiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsgaSwg
dHJhbnNmZXJCdWZmZXJbaV0pOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0ICsy
NTEsMTQgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNw
ZWNpZmljVHlwZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9iamVj
dE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHNpemVf
dCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNzSW5m
byh2bSk7CiAgICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6dHlw
ZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1l
bWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIgZmFz
dCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCiAg
ICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxlbmd0
aCwgb3RoZXItPmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0zMTMsOCArMzE0LDEwIEBAIGJvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCBy
aWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9i
YWxPYmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBnZXQoKSBmb3Igbm93IHByb2JhYmx5
IGRvZXMgbm90IGRvIHRoZSByaWdodCB0aGluZyBmb3IgaW5kaWNlcyBhYm92ZSBVSU5UX01BWC4K
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dW5zaWduZWQ+KGkgKyBvYmpl
Y3RPZmZzZXQpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9i
YWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBi
b29sIHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVlKTsK
ICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNj
ZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRjMGVi
ZDFmNjE2NS4uY2EwMDFkOTU0OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihK
U1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVByb2Zp
bGU7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5h
bEZ1bmN0aW9uOwpAQCAtMjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIHB1dEJ5SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogICAg
IHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKGNh
blNldEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAgc2V0
SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRyeVNl
dEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5wdXRC
eUluZGV4KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBi
b29sIGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OwotICAg
IEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7Cisg
ICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJheVBy
b2ZpbGUqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAgICAg
ICAKLSAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorCisg
ICAgLy8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlC
ZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0
cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhp
cy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAg
ICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2FuR2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNDExLDM1ICs0MTEsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gZ2V0KGdsb2JhbE9iamVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lkIHNl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAgICAK
LSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsK
LSAgICAgICAgc3dpdGNoIChpbmRleGluZ01vZGUoKSkgewotICAgICAgICBjYXNlIEFMTF9CTEFO
S19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGksIHZhbHVlKTsKLSAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVY
SU5HX1RZUEVTOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFMTF9X
UklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVf
RE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdV
T1VTX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFn
ZToKLSAgICAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1
cm4gaSA8IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7Ci0gICAgICAgIGNhc2UgTm9uQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5U3RvcmFn
ZSgpLT52ZWN0b3JMZW5ndGgoKQotICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5LT5hcnJh
eVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBp
ZiAoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAgICAgCisgICAgdm9p
ZCBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mLCB1bnNpZ25l
ZCwgSlNWYWx1ZSk7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgaXQgc3VjY2VlZGVkCisgICAg
Ly8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxh
cmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlj
a2x5KFZNJiwgdW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSogPSBudWxscHRyKTsKKwog
ICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQog
ICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5k
ZXggNmUxYmIxYjU5ZjFlLi4wYmQxZjBmOTI1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxMSBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25l
ZCBpKSBjb25zdAogICAgIH0KIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lu
bGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2ln
bmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAo
dHlwZSgpKSB7Ci0jZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2Fz
ZSBuYW1lICMjIEFycmF5VHlwZSA6XAotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMj
IG5hbWUgIyMgQXJyYXkgKj4odGhpcyktPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0g
ICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNF
X1RZUEVEX0FSUkFZX1RZUEUpCi0jdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KKyAgICBpZiAoaSA+IEFycmF5
UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggJiYgYXJyYXlQcm9maWxlKQorICAg
ICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CiAKLWlubGluZSBK
U1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkp
IGNvbnN0Ci17CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJB
WV9UWVBFKG5hbWUpIFwKICAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKQEAgLTUxMiw3
ICs1MDIsOTEgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IH0KLSAgICAKKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5
U3RvcmFnZUluZGV4aW5nVHlwZShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKK3sKKyAg
ICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9yYWdl
KCk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB4ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07
CisgICAgSlNWYWx1ZSBvbGQgPSB4LmdldCgpOworICAgIHguc2V0KHZtLCB0aGlzLCB2KTsKKyAg
ICBpZiAoIW9sZCkgeworICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7Cisg
ICAgICAgIGlmIChpID49IHN0b3JhZ2UtPmxlbmd0aCgpKQorICAgICAgICAgICAgc3RvcmFnZS0+
c2V0TGVuZ3RoKGkgKyAxKTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIEpTT2JqZWN0Ojp0cnlT
ZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKQoreworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0
dGVyZmx5KCk7CisgICAgc3dpdGNoKGluZGV4aW5nTW9kZSgpKSB7CisgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBB
TExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCF2LmlzSW50MzIoKSkgeworICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVP
ckNvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9Cisg
ICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogeworICAgICAg
ICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKHYpOworICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1Ymxp
Y0xlbmd0aCgpKQorICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEp
OworICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2KTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBF
UzogeworICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXYuaXNOdW1iZXIoKSkgeworICAgICAg
ICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZt
LCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGRv
dWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7
CisgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0
SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1ZTsK
KyAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAg
IGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgorICAgIGNhc2UgQXJy
YXlXaXRoQXJyYXlTdG9yYWdlOgorICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBzZXRJbmRleFF1aWNr
bHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CisgICAgY2Fz
ZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgorICAgICAgICBpZiAoaSA+PSBidXR0ZXJm
bHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVyZmx5LT5hcnJheVN0
b3JhZ2UoKS0+bV92ZWN0b3JbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkg
XAorICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XAorICAgICAgICBhdXRvKiB0eXBlZEFy
cmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyk7XAorICAgICAgICBpZiAo
IXR5cGVkQXJyYXktPmNhblNldEluZGV4UXVpY2tseShpLCB2KSlcCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7XAorICAgICAgICB0eXBlZEFycmF5LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7XAor
ICAgICAgICBpZiAoKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3Ro
KSAmJiBhcnJheVByb2ZpbGUpXAorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxh
cmdlVHlwZWRBcnJheSgpO1wKKyAgICAgICAgcmV0dXJuIHRydWU7XAorICAgIH0KKyAgICBGT1Jf
RUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJB
WV9UWVBFKQorI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnZhbGlk
YXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGNlNzMwZjNiZjk2NS4uMDkxOWU3MjE4NmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC04OTgs
OCArODk4LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdpdGhJbmRl
eChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBpZiAoYmFzZS0+aXNP
YmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7Ci0g
ICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpbmRleCkpCi0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGluZGV4KSk7
CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5
KGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAg
ICB9CiAKICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+Y2FuR2V0
SW5kZXgoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5o
CmluZGV4IGU4ZGMxYTMwYWVkZC4uMmE4NjM2MzFhYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToK
LSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFIC8gcGFnZVNpemUpOwogCiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggZmYxNTY1ZjExZGVkLi45M2YwNmM5
ZDViYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKKysr
IGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCwxNCArMTQ0LDE0
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+
PjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIGlz
VGFyZ2V0QmlnZ2VyID0gc2l6ZW9mKFRhcmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJvb2wgdGFy
Z2V0U2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQsIGJvb2wg
c291cmNlU2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWduZWQ+IHN0
cnVjdCBCb3VuZHNDaGVja2VyOwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgLy8gU2FtZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFs
d2F5cyBpbmNyZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiB2
YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwogICAgIH0KIH07CiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHND
aGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBi
b29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5C
b3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNv
IGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24g
dG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdl
dD46Om1pbigpIDw9IHZhbHVlICYmIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0
Pjo6bWF4KCk7CkBAIC0xNTksNyArMTU5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0
YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gV2hlbiBjb252ZXJ0
aW5nIHZhbHVlIHRvIHVuc2lnbmVkIFNvdXJjZSwgdmFsdWUgd2lsbCBiZWNvbWUgYSBiaWcgdmFs
dWUgaWYgdmFsdWUgaXMgbmVnYXRpdmUuCiAgICAgICAgIC8vIENhc3RlZCB2YWx1ZSB3aWxsIGJl
Y29tZSBiaWdnZXIgdGhhbiBUYXJnZXQ6Om1heCBhcyBTb3VyY2UgaXMgYmlnZ2VyIHRoYW4gVGFy
Z2V0LgpAQCAtMTY4LDcgKzE2OCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHND
aGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMg
Ym9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGlu
Qm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRoZSB1bnNpZ25lZCBTb3Vy
Y2UgdHlwZSBoYXMgZ3JlYXRlciBwcmVjaXNpb24gdGhhbiB0aGUgdGFyZ2V0IHNvIG1heChUYXJn
ZXQpIC0+IFNvdXJjZSB3aWxsIHdpZGVuLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGlj
X2Nhc3Q8U291cmNlPihzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpKTsKQEAgLTE3
Niw3ICsxNzYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAg
ICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCB0cnVlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0
ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTkyLDcgKzE5
Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLCB0cnVlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gVGFyZ2V0IGlzIHNpZ25lZCB3aXRoIGdyZWF0ZXIgb3Igc2Ft
ZSBwcmVjaXNpb24uIElmIHN0cmljdGx5IGdyZWF0ZXIsIGl0IGlzIGFsd2F5cyBzYWZlLgogICAg
ICAgICBpZiAoc2l6ZW9mKFRhcmdldCkgPiBzaXplb2YoU291cmNlKSkKQEAgLTIwMiwxOSArMjAy
LDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLCB0cnVlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gVGFyZ2V0IGlzIHVuc2lnbmVkIHdpdGggZ3JlYXRlciBwcmVj
aXNpb24uCiAgICAgICAgIHJldHVybiB2YWx1ZSA+PSAwOwogICAgIH0KIH07CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGlz
SW5Cb3VuZHMoU291cmNlIHZhbHVlKQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMoU291cmNl
IHZhbHVlKQogewogICAgIHJldHVybiBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlPjo6aW5C
b3VuZHModmFsdWUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFy
Z2V0JiBvdXRwdXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQs
IFRhcmdldCYgb3V0cHV0KQogewogICAgIGlmICghaXNJbkJvdW5kczxUYXJnZXQ+KGlucHV0KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJncy4uLiBh
cmdzKQogICAgIHJldHVybiBjaGVja2VkUHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVyZmxvd2Vk
KCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhhbihUIGEs
IFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVja2VkPFQ+IHN1bSA9IGE7CisgICAgc3VtICs9IGI7
CisgICAgcmV0dXJuICFzdW0uaGFzT3ZlcmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDwgYm91bmQ7
Cit9CisKIH0KIAogdXNpbmcgV1RGOjpBc3NlcnROb092ZXJmbG93OwpAQCAtMTAxNywzICsxMDI0
LDQgQEAgdXNpbmcgV1RGOjpkaWZmZXJlbmNlT3ZlcmZsb3dzOwogdXNpbmcgV1RGOjppc0luQm91
bmRzOwogdXNpbmcgV1RGOjpwcm9kdWN0T3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpzdW1PdmVyZmxv
d3M7Cit1c2luZyBXVEY6OmlzU3VtU21hbGxlclRoYW47Cg==
</data>
<flag name="commit-queue"
          id="463665"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439926</attachid>
            <date>2021-10-01 16:11:52 -0700</date>
            <delta_ts>2021-10-01 16:43:32 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>189901</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5lNjc2N2M2YTlhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0K
KwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZf
NjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRp
ZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIg
aW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRm
b3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29u
ZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQg
ZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0
YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsK
KyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAg
ICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29u
c3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRp
bmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUg
YSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAg
ICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQz
Ml90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50
LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQo
Y29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAg
IH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CmluZGV4IDQyNTA5MDNiYzMyMi4uMTc5NmI2NTFiYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDgg
KzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1Jl
Z2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25h
YmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2
NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMz
MDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2go
Y29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwog
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0
Y2YyMjQwZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIs
MTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQs
IGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRy
TGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRl
QXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhH
UFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNj
cmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0
aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5k
ZXggZGY1MWU5NTJkZGNkLi4zYmVjZjgzNDMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMDE3LDcgKzEw
MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdCwgc3JjMSwgc3Jj
Mik7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2go
dWludDMyX3QgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKQogICAgIHsKICAgICAgICAgQVJNVGh1bWJJbW1l
ZGlhdGUgaW1tZWRpYXRlID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKHZhbHVl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IGNjZTBkMDFmNDAxNy4uZDc3NDY5OTliZTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCkBAIC0xMDgsOSArMTA4LDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzdGFja1BvaW50ZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVy
czo6ZXNwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBmcmFtZVBvaW50ZXJSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwogICAgIAotICAgIHN0YXRpYyBib29sIGNhbkJsaW5k
KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lm
aWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZm
ZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uczoKICAgICAvLwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGQx
YWUzYjU1MzU2NS4uZDdkZjFlOTNmMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0xMTkxLDEyICsxMTkxLDE3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
c3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAKICAgICAgICAgaml0LmxvYWQ4KENDYWxs
SGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
c2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkpOwogCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIHNpemVfdCwgc28gZWl0aGVyIDMyIG9yIDY0IGJp
dHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGpp
dC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0
Y2hHUFIpKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5k
aWYKIAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZv
LnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVn
cygpKTsKQEAgLTE2MzAsOSArMTYzNSwxNiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogICAgICAgICAgICAgcmVhZHkubGluaygmaml0KTsKICAgICAgICAgfQogCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIHNpemVfdCwgc28gZWl0
aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgaml0
LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgLy8gT3V0T2ZCb3VuZHMg
Yml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0aW9uIGZ1bmN0aW9u
LgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxs
SGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UK
ICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgLy8g
T3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0
aW9uIGZ1bmN0aW9uLgogICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJy
YW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQ
UikpOworI2VuZGlmCiAKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8uYmFzZVJlZ3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmgKaW5kZXggNjkxNjc5NDg0M2IwLi45OTMxYjEwZjgwMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRmaWVsZCB3aGVy
ZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRoYXQgd2UgaGF2
ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNlIHRoZSBsb3dl
ciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRz
IDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUg
Yml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9kZXM7CiAKIC8v
IFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAoMCAtIDE2LCAy
MSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUsMTcgQEAgcHVibGljOgogICAgICAgICAsIG1fZGlk
UGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAorCisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBBY2Nlc3NpbmcgdHlwZWQgYXJyYXlzIGxh
cmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCBhcyB3ZSBjYW4ndCBm
b3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50MzJfdC4KKyAgICAvLyBXZSBvbmx5IHN1cHBv
cnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24gNjQtYml0IHBsYXRmb3Jtcy4KKyAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgdm9pZCBzZXRNYXlCZUxhcmdlVHlw
ZWRBcnJheSgpIHsgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7IH0KKyAgICBib29sIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0
dXJuIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KKyNlbHNlCisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorI2VuZGlmCisKICAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1
cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVz
KiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9
CiAgICAgYm9vbCogYWRkcmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9y
ZVRvSG9sZTsgfQpAQCAtMjQ0LDYgKzI1NCw5IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQg
bV9sYXN0U2VlblN0cnVjdHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7
IGZhbHNlIH07IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUg
b3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFj
Y2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkg
aGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFy
cmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0
cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7
IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2Vz
IDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBi
b29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY2LDEzIEBA
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxp
bmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9
IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6
IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgLCBtX21heUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorI2VuZGlm
CisgICAgeworICAgIH0KIAogICAgIHZvaWQgdXBkYXRlKEFycmF5UHJvZmlsZSYgYXJyYXlQcm9m
aWxlKQogICAgIHsKQEAgLTI4MCw2ICsyOTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJyYXlQ
cm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOworCisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAgICAg
ICAgICBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2ZpbGUu
bV9tYXlCZUxhcmdlVHlwZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5
MCw3ICszMTYsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVzIDogMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihVbmxpbmtlZEFycmF5UHJvZmlsZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IGIxZGZjYTI3NDljMS4uMDQyYjA3Yjg4YWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0zNDg2LDYgKzM0ODYsMTcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6
IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5v
ZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0lu
dDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkp
OwogICAgICAgICBicmVhazsKQEAgLTM4MjEsNiArMzgzMiwxOSBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1f
Z3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUp
OworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAg
ICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5
cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHAKaW5kZXggNmUyNzUzMTA0YmQzLi4wNTliYTNmNmRjZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcApAQCAtMzI1LDYgKzMyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJh
eXMsIHNvIHNob3VsZCBub3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgor
ICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRo
U3ByZWFkOiB7CiAgICAgICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9k
ZS0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmlu
Z0FCYWRUaW1lV2F0Y2hwb2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0
Y2hwb2ludChub2RlKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAKaW5kZXggNmU0ZmU5YWZhM2ViLi4wNDFhZGI3ODYzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUg
QXJyYXlNb2RlOjpyZWZpbmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNl
RXhpdCwgYWN0aW9uKCkpOwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlv
bihpbmRleCkpCisgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmlj
LCBhY3Rpb24oKSk7CiAgICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFu
IGV4b3RpYyBvYmplY3QgYmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBA
IC0yOTQsNiArMjk0LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2Ug
QXJyYXk6OkZsb2F0NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAg
IGNhc2UgQXJyYXk6OkJpZ1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3
aHkgd2Ugb25seSBwcmVzZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1
dEJ5VmFsIGFuZCBub3QgR2V0QnlWYWwgYXMgd2VsbC4KICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gUHV0QnlWYWwpIHsKICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5v
cmlnaW4uc2VtYW50aWMsIE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0
T2ZCb3VuZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4
IGEwMjZhYWQxODkzYi4uZGY3NWM3ODkwZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNv
bnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5
OjpXcml0ZTsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBB
cnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5
dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9
IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xh
c3MgYXJyYXlDbGFzcywgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBA
QCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5k
czsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAg
dS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VU
eXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlw
ZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1
bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlv
bikKKyAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xh
c3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkg
PSBmYWxzZSkKICAgICB7CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAg
dS5hc0J5dGVzLmFycmF5Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3Bl
Y3VsYXRpb24gPSBzcGVjdWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBj
b252ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1
LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAg
ICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBh
cnJheUNsYXNzLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFj
dGlvbikKQEAgLTE2Myw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVj
dWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24g
PSBjb252ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAg
ICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAg
ICAgQXJyYXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpU
eXBlPih1LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAg
QXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QXJyYXk6OlNwZWN1bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJy
YXk6OkNvbnZlcnNpb24gY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFy
cmF5OjpDb252ZXJzaW9uPih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0
aW9uIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUu
YXNCeXRlcy5hY3Rpb24pOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0
IHsgcmV0dXJuIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVu
c2lnbmVkIGFzV29yZCgpIGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzks
MzUgKzE4NSw1MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUg
ZnJvbU9ic2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFy
cmF5OjpBY3Rpb24sIGJvb2wgbWFrZVNhZmUpOwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhU
eXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rp
b24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdp
dGhTcGVjdWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUo
dHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigp
LCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdp
dGhBcnJheUNsYXNzKEFycmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlN
b2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1v
ZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2Rl
IHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9j
a2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBB
cnJheU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpD
b252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9u
KCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRo
QXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlC
ZUxhcmdlVHlwZWRBcnJheSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlv
biBteVNwZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcywgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBl
ZEFycmF5KTsKKyAgICB9CiAKKyAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2Fm
ZSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAg
ICAgICAgICByZXR1cm4gQXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9m
aWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIpKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9
IEFycmF5OjpUb0hvbGU7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAg
ICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7Cisg
ICAgICAgICAgICByZXR1cm4gQXJyYXk6OkluQm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFy
cmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUg
d2l0aFByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmls
ZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpD
bGFzcyBteUFycmF5Q2xhc3M7Ci0KICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAg
ICAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYg
YmVuZWZpdHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2Rl
cyBhcnJheU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0y
MjEsMjMgKzI0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0g
QXJyYXk6OkFycmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9
IGFycmF5Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyht
eUFycmF5Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9
Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNv
bnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwg
YXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAg
fQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uLCBhY3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uID0gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsK
KworICAgICAgICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBl
ZEFycmF5KGxvY2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3Vs
YXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBs
YXJnZVR5cGVkQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAt
NTI2LDcgKzUzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50
eXBlKCkKICAgICAgICAgICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkK
ICAgICAgICAgICAgICYmIHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAg
ICAgICAgICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAg
ICAgICYmIGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYm
IG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgPT0gb3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsK
ICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIp
IGNvbnN0CkBAIC01NzksNyArNTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3Qg
YXJyYXlDbGFzczsKICAgICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAg
ICB1aW50OF90IGNvbnZlcnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0
OworICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOworICAgICAgICAgICAgdWludDhfdCBt
YXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5z
aWduZWQgYXNXb3JkOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggODgxMWI4OWYyNGE3Li4zZDc5ZjI0ZTdlODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC0zODA2LDggKzM4MDYsMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5
cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5z
aWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IEdldEJ5VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHN0
YXRpY19hc3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFu
dC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6
IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKCFpc0ludDMyU3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
ICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9
ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJy
YXlTdG9yYWdlVHlwZTsKQEAgLTM4MjEsMjYgKzM4MjksMzIgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9kZSogbGVuZ3RoTm9kZTsKKyAgICAgICAgaWYg
KGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIGxlbmd0aE5vZGUg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aEFzSW50NTIsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVy
ZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAgICAg
aWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVz
ZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBh
IGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5v
ZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5v
ZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2Ug
dHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4K
KyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6
ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2Rl
LCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNhc2Ug
VHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogeworI2lmICFVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2lu
KCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg1MiwxMyArMzg2
NiwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFu
ZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5
VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1
bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBl
LCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpS
ZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNl
dChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlN
b2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZz
ZXRJbnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYg
KCFpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJh
eVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZv
KCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NzAsNyArMzg5MSwxMCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6
R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgo
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJh
eTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJbnQzMlNwZWN1
bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5
OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uNTQ4YmQwZWVlOWVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsx
NTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVudW1lcmF0b3JI
YXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5C
eVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKQEAgLTEzMzMsNiArMTMzNCw3IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hp
bGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0NDQsNiArMTQ0
NiwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB9CiAgICAgfQogCisgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBu
b2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBl
ZEFycmF5VmlldygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihBcnJheUxlbmd0aExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDogewogICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgp
OwogICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaAppbmRleCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBib29sIHZh
bGlkYXRpb25FbmFibGVkKCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBlbmFibGVJbnQ1Migp
CitpbmxpbmUgYm9vbCBjb25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKaW5kZXggMDcwYTQ4NTQ3YTk3Li42MDlmZjA4NTc3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE5NywxMCArMTk3LDEyIEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEdldHRlcjoKICAgICBjYXNlIEdl
dFNldHRlcjoKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nQ2hh
ckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICBj
YXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggOGUxYjkzZWVlNmNhLi4xOTY1ZDQzODk3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNDMsNiArMTA0Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGlu
ZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgp
LmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5p
c0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFz
RXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBA
IC0xMDczLDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBjYXNlIEFycmF5OjpG
b3JjZUV4aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3
ZSBoYXZlIG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2RlLgotICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXRSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgorICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4u
LgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEVudW1lcmF0b3JHZXRCeVZhbCkK
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgp
LndpdGhUeXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MTMzLDYgKzExMzQsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3du
U3RyaW5nVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpJbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToKKyAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5OgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6VWludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToK
KyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICAgICAgLy9pZiAo
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSB8fCAh
bm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Cisg
ICAgICAgICAgICAgICAgLy9lbHNlCisgICAgICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1
MlJlcFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKQEAgLTEx
ODQsNiArMTIwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51
bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYm
IG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBu
b2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5v
ZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAg
ICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxv
dykpIHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCkBAIC0xMjY2LDcgKzEyODMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6VWlu
dDMyQXJyYXk6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAg
ICAgICAvL2lmIChjaGlsZDItPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5
TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9lbHNlCisgICAgICAgICAg
ICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgICAg
ICBmaXhJbnRPckJvb2xlYW5FZGdlKGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
Y2hpbGQzLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKQpAQCAtMTI3Nyw3ICsxMjk3LDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93
bkNlbGxVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hp
bGQyKTsKKyAgICAgICAgICAgICAgICAvL2lmIChjaGlsZDItPnNob3VsZFNwZWN1bGF0ZUludDMy
KCkgfHwgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAg
Ly9lbHNlCisgICAgICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQy
KTsKICAgICAgICAgICAgICAgICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKGNoaWxkMyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgpA
QCAtMTcxNywxMiArMTc0MCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2Rl
KTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RH
ZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTIxNDksNiArMjE3NiwyNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJheU1vZGUg
YXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUt
PmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVk
VHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAg
ICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNo
aWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdlPEtub3du
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAg
ICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisjZWxzZQorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7
CisjZW5kaWYKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAgICAg
ICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjczMiw3ICsyNzgwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGF0
YVZpZXdHZXRJbnQ6CiAgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogewogICAgICAgICAg
ICAgZml4RWRnZTxEYXRhVmlld09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy9pZiAo
bm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9k
ZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy9lbHNlIC8vIEZJWE1FOiBub3Qg
Y2xlYXIgd2hhdCB3ZSBzaG91bGQgZG8gaGVyZSBpZiB0aGUgaW5kZXggaXMgc29tZXRoaW5nIGNy
YXp5CisgICAgICAgICAgICAvLyAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCiAgICAgICAgICAgICAgICAgZml4
RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDMoKSk7CiAKQEAgLTI3NTgsNyArMjgwOSwxMCBA
QCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgRGF0YVZpZXdTZXQ6IHsKICAgICAgICAgICAgIGZp
eEVkZ2U8RGF0YVZpZXdPYmplY3RVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwot
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KSk7CisgICAgICAgICAgICAvL2lmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5zaG91
bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRB
cnJheSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgLy9lbHNlCisgICAgICAgICAgICAvLyAgICBm
aXhFZGdlPEludDUyUmVwVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKQogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8Qm9vbGVhblVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CiAgICAg
ICAgICAgICAKQEAgLTQwOTYsMTQgKzQxNTAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgIG5vZGUtPmNoaWxkMigpID0gRWRnZShzdG9yYWdlKTsKICAgICB9Ci0gICAgCi0gICAg
Tm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2luLCBOb2RlKiBjaGls
ZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKLSAgICB7Ci0gICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBj
aGVja0FycmF5KGFycmF5TW9kZSwgb3JpZ2luLCBjaGlsZCwgbnVsbHB0ciwgbGVuZ3RoTmVlZHNT
dG9yYWdlKTsKLSAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG9y
aWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGNoaWxk
LCBLbm93bkNlbGxVc2UpLCBFZGdlKHN0b3JhZ2UpKTsKLSAgICB9CiAKICAgICB2b2lkIGNvbnZl
cnRUb0hhc0luZGV4ZWRQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAppbmRleCA0ZmFmOTQ5YTc4NjAuLjJk
ODZlYjc1NzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5l
cmF0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlv
bkluZm8uaApAQCAtMzksOCArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGxp
dmUgdmFsdWVzIGR1cmluZyBjb2RlIGdlbmVyYXRpb24uCiAvLyBDYW4gcHJvdmlkZSBpbmZvcm1h
dGlvbiBhcyB0byB3aGV0aGVyIGEgdmFsdWUgaXMgaW4gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBp
ZiBzbyB3aGljaCwKIC8vIHdoZXRoZXIgYSB2YWx1ZSBoYXMgYmVlbiBzcGlsbGVkIHRvIHRoZSBS
ZWdpc3RlckZpbGUsIGFuZCBpZiBzbyBtYXkgYmUgYWJsZSB0byBwcm92aWRlCi0vLyBkZXRhaWxz
IG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5IChhbGwgdmFsdWVzIGFyZSBzcGlsbGVkIGluIGEgYm94
ZWQgZm9ybSwgYnV0IHdlIG1heSBiZQotLy8gYWJsZSB0byB0cmFjayB0aGUgdHlwZSBvZiBib3gp
LCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4s
CisvLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5LCBhbmQgdHJhY2tzIGhvdyBtYW55
IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCiAvLyBzbyB0aGF0IHdlIGtub3cg
d2hlbiB0aGUgdmFsdWUgaXMgZGVhZCBhbmQgdGhlIG1hY2hpbmUgcmVnaXN0ZXJzIGFzc29jaWF0
ZWQgd2l0aCBpdAogLy8gbWF5IGJlIHJlbGVhc2VkLgogY2xhc3MgR2VuZXJhdGlvbkluZm8gewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjQzYjVkMTAxMmUw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTE0OTksNiArMTQ5OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBH
ZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hpcChSZWxhdGlvbnNo
aXAobm9kZSwgbV96ZXJvLCBSZWxhdGlvbnNoaXA6OkdyZWF0ZXJUaGFuLCAtMSkpOwogICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5NzA2
OGE5Yy4uZDEzZDM3ZjAyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAg
ICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9w
ZXJ0eToKICAgICAgICAgY2FzZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZToKICAg
ICAgICAgY2FzZSBBcnJheUluZGV4T2Y6CkBAIC0yMDA0LDYgKzIwMDUsNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1cm4gMjsK
IAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li43
MjY0ZGMyZjU2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTI2MSw4ICsyNjEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0
aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRoaXMgaXMg
b25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMg
dGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRzLiAqLyBc
CisgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAg
ICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRJbnQ1MikgXAogICAgIG1hY3Jv
KEdldFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggNjlhY2Y1MTljMGJhLi5kNWRhMzRhNTE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtOTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIEpTVmFsdWUKICAgICB9CiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAo
b2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaW5kZXgsIHZhbHVlKSkgewotICAgICAgICAgICAg
b2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChv
YmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTE3NSw3ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
YwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5
V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLCBjaGFyKiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFy
cmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgc2l6ZSwgY2hhciogdmVjdG9yKQogewogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTgzLDExICsxODEsMTMg
QEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHIKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQg
bGVuZ3RoIGlzIG5lZ2F0aXZlIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICAKKworICAgIHNpemVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNp
emUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVu
c2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9j
YXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6
ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4o
Vmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSkp
KTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA4LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAo
Vk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTQw
LDcgKzE5NDAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE5ODgsNyArMTk4OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OENsYW1wZWRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJy
YXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9w
dCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMjAyMCw3ICsyMDIwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMy
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAzNiw3ICsyMDM2LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hh
ciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0MzJBcnJheT4oZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAK
LUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIs
NyArMjA1Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0
QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggODQ0YzE5YjMxMTQxLi44MGRm
ODFmZGYwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBA
IC0xMTksMjcgKzExOSwyNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0FycmF5LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKgogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdFbXB0eUFycmF5LCBjaGFyKiwgKFZNKiwgU3RydWN0
dXJlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgQnV0dGVy
Zmx5KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplQW5kSGludCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGludDMyX3QsIEJ1dHRlcmZseSopKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBz
aXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciop
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
VWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjQ3ODcwM2FjMTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJ
bnQ1MkFueSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ug
U3RyaW5nQ2hhckNvZGVBdDoKICAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAg
ICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2Li41YmQzNzdk
YWY4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CkBAIC0zNzMsNiArMzczLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEdl
dEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFy
QXQ6CkBAIC0zODUsNiArMzg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNh
c2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShz
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5Vmll
dykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYjRjOGY4NjBi
NTE0Li44ODJkNzdkMGZmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjQ1LDE2ICszMjQ1LDI4IEBAIEpJVENvbXBpbGVyOjpK
dW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5v
ZGUsIEdQUlJlCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2ppdC5ncmFwaCgpLnRy
eUdldEZvbGRhYmxlVmlldygKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG1faml0LmdyYXBoKCku
Y2hpbGQobm9kZSwgMCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKICAgICBpZiAodmll
dykgewotICAgICAgICB1aW50MzJfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKKyAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IHZpZXctPmxlbmd0aCgpOwogICAgICAgICBOb2RlKiBpbmRleE5vZGUg
PSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDEpLm5vZGUoKTsKLSAgICAgICAgaWYgKGluZGV4
Tm9kZS0+aXNJbnQzMkNvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwgbGVuZ3Ro
KQorICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0FueUludENvbnN0YW50KCkgJiYgaW5kZXhOb2Rl
LT5hc1VJbnQzMigpIDwgbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIEpJVENvbXBpbGVyOjpK
dW1wKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0
KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2pp
dC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGlu
ZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSk7CisjZWxzZQogICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisjZW5kaWYKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKQpAQCAtNzk2
MCw3ICs3OTcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdl
KEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVudGFn
QXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50YWdB
cnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsK
KyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFn
ZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxpZGF0
ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MzQyLDEyICs4MzU0
LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBu
b2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0Lmxv
YWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3ZlcmZsb3csIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoNjQoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMTExMTEsMTAgKzExMTI5LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0g
bm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFy
cmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKwogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUu
Z3ByKCk7Ci0gICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8vIFRoZSBvcGVyYXRpb25z
IHdlIGNhbGwgb24gdGhlIHNsb3cgcGF0aCBleHBlY3QgYSBDUFVSZWdpc3Rlciwgc28gaW50NjRf
dCBvbiA2NCBiaXQgcGxhdGZvcm1zCisgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2l6ZUdQ
Uiwgc2l6ZUdQUik7CisjZW5kaWYKKworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJl
Z2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworfQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihO
b2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEzMCw2ICsxMTE1OCw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKIAogICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxp
bWl0KSkpOworICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBh
dGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgc3RhdGljX2Fzc2VydChp
c0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CiAg
ICAgCiAgICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKICAgICBtX2ppdC5sc2hp
ZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSwgc2NyYXRj
aEdQUik7CkBAIC0xMTE4NSw5ICsxMTIxNSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVQdHIo
CiAgICAgICAgIHN0b3JhZ2VHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpKTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgc2l6
ZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3RvcmUz
MigKICAgICAgICAgVHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZN
b2RlKCkpKTsKQEAgLTE0MTU5LDYgKzE0MTk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAg
ICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAg
ICBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUobm9kZSk7CisgICAgICAgIGJyZWFr
OworI2VuZGlmCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYXJn
dW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiNjUxNWQ4YjcyMTkuLmFkYzgwNmFh
MjI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEzMDAsOSArMTMwMCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTnVtYmVy
VG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5l
d1N5bWJvbChOb2RlKik7Ci0gICAgCisKKyAgICB2b2lkIGVtaXROZXdUeXBlZEFycmF5V2l0aFNp
emVJblJlZ2lzdGVyKE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSwg
R1BSUmVnIHNpemVHUFIpOwogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShO
b2RlKik7Ci0gICAgCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBp
bGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShOb2RlKik7CisjZW5kaWYKKwogICAgIHZvaWQg
Y29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJs
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogI2lmIFVTRShCSUdJTlQzMikKQEAgLTEzNzMsNiAr
MTM3Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxUaGlzKE5vZGUqKTsK
IAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MihOb2Rl
Kik7CisjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudChOb2RlKik7CkBAIC0xNDM1LDYgKzE0NDIsOSBA
QCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFj
aGVkSWZPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1w
IG91dE9mQm91bmRzKTsKICAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSos
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOwogICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKik7Cisj
ZW5kaWYKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiwgVHlw
ZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBE
YXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwogICAgIHZv
aWQgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHBy
b3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFs
T25GbG9hdFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1i
ZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJy
ZWRGb3JtYXQpPiYgcHJlZml4KTsKQEAgLTI0MjcsNyArMjQzNyw3IEBAIHByaXZhdGU6CiAgICAg
R1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIElu
dDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KKy8vIEdp
dmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxMiwg
bG93IGJpdHMgemVybykuCiBjbGFzcyBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMjQ3NSw3ICsyNDg1LDcgQEAgcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBzdHJp
Y3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2
IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgorLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChp
LmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNTIgYml0cywgaGlnaCAxMiBiaXRzIGFyZSBz
aWduLWV4dGVuZGVkKS4KIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2ZWZiY2VkZGJj
MGEuLjRlZDc1OWYxOTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMTM0LDYgKzIxMzQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFt
YmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50
cyhub2RlLCBwcmVmaXgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OiB7CisgICAgICAg
IEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKICAgICAg
ICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBl
KCk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZh
bE9uSW50VHlwZWRBcnJheShub2RlLCB0eXBlLCBwcmVmaXgpOwpAQCAtMzUzOCw2ICszNTM5LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBh
cnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxl
dGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsK
ICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IGUxMzVmZDUzNDhlOC4uY2U0MDJjYzIwYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjk0LDYgKzI2OTQsODkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0
IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAorI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5
cGVkQXJyYXlUeXBlKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKwor
ICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRB
cnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBz
aXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3Ro
QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9k
ZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUg
PCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVk
IGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVj
dG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7
CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworICAgIEFTU0VSVChiYXNlR1BSICE9
IHZlY3RvckdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7CisgICAgQVNTRVJU
KHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKKworICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRh
dGFHUFI7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBlbXB0eUJ5dGVPZmZzZXQgPSBtX2ppdC5i
cmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZN
b2RlKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxUeXBlZEFycmF5KSk7CisKKyAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wIG51bGxWZWN0b3IgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW1QdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQ
dHIoKSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBkYXRhR1BSKTsKKyAgICBtX2ppdC5j
YWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6SlNWYWx1ZSwgZGF0YUdQUik7CisKKyAgICBj
YWdlVHlwZWRBcnJheVN0b3JhZ2UoYmFzZUdQUiwgdmVjdG9yR1BSKTsKKworICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRP
ZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQUik7CisgICAgLy8gRklYTUU6IFRoaXMgbmVl
ZHMgY2FnaW5nLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU1MTUKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFycmF5
QnVmZmVyR1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkpLCBkYXRhR1BSKTsKKyNpZiBD
UFUoQVJNNjRFKQorICAgIG1faml0LnJlbW92ZUFycmF5UHRyVGFnKGRhdGFHUFIpOworI2VuZGlm
CisKKyAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwgdmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgIG51
bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisgICAgZW1wdHlCeXRlT2Zmc2V0Lmxpbmso
Jm1faml0KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZlY3RvckdQ
Uik7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyNpZiAhQ1BVKEFSTTY0RSkKKyAgICBBU1NF
UlQoIUpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpOworICAgIG51bGxWZWN0b3Iu
bGluaygmbV9qaXQpOworI2VuZGlmCisKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdCh2ZWN0b3JHUFIs
IG5vZGUpOworfQorI2VuZGlmCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC00Mzc1LDYgKzQ0NTgs
MTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aEFzSW50NTI6CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAg
ICAgY29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtNDQ5Myw2ICs0NTg0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUp
OworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAg
ICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTgz
LDcgKzU2ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBp
ZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1t
MzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0
MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCks
IG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNTc4NCw3ICs1ODg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dv
cmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAg
ICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOwot
ICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAgICAgICBtX2pp
dC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9qaXQuYnJh
bmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uMWUxNDAwNTA0Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAg
LTI3OSwxMCArMjc5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZh
bDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgICAgICAg
ICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFBy
b3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1v
dkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgpAQCAtMzU5LDYg
KzM2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAg
ICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoK
ICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0
OGM5ZmFkNjcuLmM5OTBkNTljYmE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3Jp
dGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0zOTEsNiArMzkyLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbml0aWFsaXpl
RW50cnlwb2ludEFyZ3VtZW50czoKICAgICBjYXNlIENQVUludHJpbnNpYzoKICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdp
dGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDQzZDI2ZTgzZTk2OC4uMTBlZDk2ZTk3YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDI1LDYgKzEwMjUsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRBcnJheUxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKKyNl
bmRpZgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRWZWN0b3JMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgwLDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAg
ICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MigpOworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdl
dFByb3RvdHlwZU9mOgogICAgICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTQ4MjgsOSArNDg0MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBtX291dC5pc051bGwobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X3ZlY3RvcikpKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCgpCisgICAgTFZhbHVlIGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdENh
c3RpbmdSZXN1bHQoKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOyAgICAKKyAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIHdhc3RlZnVsQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGwgPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtNDg0Niw3ICs0ODU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh3YXN0ZWZ1bENhc2UsIG5vdE51bGwpOwogCiAg
ICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBtX291dC5sb2FkUHRyKGJhc2VQdHIsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFs
KHZlY3RvciwgbV9vdXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQ
dHIoKSkpLCAKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3RvciwgbV9vdXQu
Y29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLAogICAgICAg
ICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3ROdWxsKSk7CiAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm90TnVsbCwgY29udGludWF0aW9uKTsKQEAgLTQ4NjYsOSArNDg3OCwy
MiBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgIHNldElu
dDMyKG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxsVmVjdG9y
T3V0LCB3YXN0ZWZ1bE91dCkpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShwb2ludGVyVHlw
ZSgpLCBudWxsVmVjdG9yT3V0LCB3YXN0ZWZ1bE91dCk7CiAgICAgfQogCisgICAgdm9pZCBjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdENhc3RpbmdSZXN1bHQoKTsKKyAg
ICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIocmVzdWx0KSk7CisgICAgfQorI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldFN0cmlj
dEludDUyKHJlc3VsdCk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVHZXRQcm90
b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1
MDc5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSkgewot
ICAgICAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2Fk
MzJOb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJm
bG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChsZW5ndGgsIG1fb3V0
LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAg
ICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYg
KzUwOTAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGls
ZUdldEFycmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBzZXRT
dHJpY3RJbnQ1MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTgxNjksOTggKzgy
MDIsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5
VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291
dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9T
dG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0gICAgICAgICAgICBt
X291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQuY29u
c3RJbnQzMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAgICAg
ICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hD
YXNlLCBzbG93Q2FzZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAgICAg
ICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50
MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAoZWxl
bWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVTaXpl
ID0gbV9vdXQuYml0QW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUs
IG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCku
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKLSAg
ICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNs
b3dDYXNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAgICAg
ICAgICAgICBzdG9yYWdlLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAgICAg
ICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5j
b25zdEludFB0cigzKSkpLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAgICAg
ICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShBUk02
NEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291
dC56ZXJvRXh0UHRyKHNpemUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0
aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAgICAg
ICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6OlZh
bHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFy
YW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQu
dGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0gICAg
ICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQuc2lnbkV4
dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7CiAKLSAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAgICAg
ICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRj
aCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUp
IFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAgZmFz
dFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVX
KFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAg
ICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRW
YWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291dC5z
dG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZh
bHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBtX291
dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFs
dWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJl
c3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2Fz
ZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291
dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgICAg
ICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAg
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5
cGVkQXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAg
ICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAg
ICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCi0gICAgICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9j
YXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRp
b25zWzFdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJd
LmRpcmVjdEdQUigpKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHNpemUs
IHN0b3JhZ2VWYWx1ZSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd1N0cmljdEludDUyKG1f
bm9kZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBl
ZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBz
aXplKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogCkBAIC04Mjc3LDcgKzgyMzMsMTAyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2b2lk
IGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUoVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlLCBMVmFsdWUgc2l6ZTY0Qml0cykKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxs
RW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2Ug
PSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNo
KAorICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQ2NChK
U0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAorICAgICAgICAgICAgcmFyZWx5KHNs
b3dDYXNlKSwgdXN1YWxseShzbWFsbEVub3VnaENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwor
ICAgICAgICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRo
YXQgdGhlIHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KGlz
SW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKyAg
ICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5jYXN0VG9JbnQzMihzaXplNjRCaXRzKTsKKworICAg
ICAgICBMVmFsdWUgYnl0ZVNpemUgPQorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9F
eHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5
cGUpKSk7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7Cisg
ICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKKyAgICAgICAgICAgICAgICBtX291
dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKKyAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7CisgICAgICAgIH0K
KworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7CisgICAgICAg
IExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsK
KworICAgICAgICBzcGxhdFdvcmRzKAorICAgICAgICAgICAgc3RvcmFnZSwKKyAgICAgICAgICAg
IG1fb3V0LmludDMyWmVybywKKyAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxT
aHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMpKSksCisgICAgICAgICAgICBtX291dC5p
bnQ2NFplcm8sCisgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKKwor
I2lmIENQVShBUk02NEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0g
bV9vdXQuemVyb0V4dFB0cihzaXplKTsKKyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0
aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKKyAgICAgICAgICAg
IGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3JhZ2UpOworICAgICAgICAgICAg
YXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6
U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0
b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBh
cmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1sy
XS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
c3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisKKyAgICAg
ICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAodHlw
ZWRBcnJheVR5cGUpIHsKKyNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKKyAg
ICAgICAgY2FzZSBUeXBlICMjIG5hbWU6IFwKKyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9
IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJa
ZXJvLCBzbG93Q2FzZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBGT1JfRUFDSF9U
WVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNF
KQorI3VuZGVmIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRQorICAgICAgICBjYXNlIFR5cGVEYXRhVmll
dzoKKyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZp
ZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX291
dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfdmVjdG9yKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFs
dWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgbV9vdXQuc3Rv
cmUzMihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgp
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RS
ZXN1bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVl
IHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVT
dG9yYWdlKTsKKworICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgICAgICBMVmFsdWUg
c2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgWz0sICZ2bV0gKGNv
bnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6
R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJh
dG9yKHZtLAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNp
emVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9i
YWxPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgc2l6ZTY0Qml0cywgc3RvcmFnZVZhbHVlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CiAgICAg
ICAgIExWYWx1ZSBvYmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTU1OTEs
NyArMTU2NDIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9u
b2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVy
b0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2
NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsK
ICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNr
ID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXpl
IC0gMSkpOwpAQCAtMTU3MzQsNyArMTU3ODUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFW
aWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUg
bGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmll
dywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGxl
bmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56
ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAg
ICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJ
bnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTcyMzYsNyArMTcyODcsNyBAQCBwcml2YXRl
OgogICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7
CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmlt
aXRpdmUpIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQzMihiYXNl
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgTFZh
bHVlIHNpemUgPSBtX291dC5sb2FkNjQoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB1bnRhZ0FycmF5UHRyKHRhZ2dlZFB0ciwg
c2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKaW5kZXggYTk0MjAwOTNmNTI5Li5lZDhmZjczZTFhM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMzI5LDYgKzMyOSw3IEBA
IHB1YmxpYzoKICAgICBMVmFsdWUgbm9uTmVnYXRpdmUzMihMVmFsdWUgbG9hZEluc3RydWN0aW9u
KSB7IHJldHVybiBsb2FkSW5zdHJ1Y3Rpb247IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRp
dmUoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsgfQogICAg
IExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFw
JiBmaWVsZCkgeyByZXR1cm4gbG9hZDMyKGJhc2UsIGZpZWxkKTsgfQorICAgIExWYWx1ZSBsb2Fk
NjROb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyBy
ZXR1cm4gbG9hZDY0KGJhc2UsIGZpZWxkKTsgfQogCiAgICAgTFZhbHVlIGVxdWFsKExWYWx1ZSwg
TFZhbHVlKTsKICAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVlLCBMVmFsdWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKaW5kZXggOTRmN2FmZTEx
YTkxLi43YTU2MDc1NjVkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SW50cmluc2ljRW1pdHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRy
aW5zaWNFbWl0dGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDIzICs3OSwzMiBAQCB2b2lkIEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZQogCiAgICAgc3dpdGNoIChpbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUxl
bmd0aEludHJpbnNpYzogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5sb2FkNjQo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1
ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vs
c2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKICAg
ICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAg
IHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgVHlw
ZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlw
ZSA9IHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwotCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHZhbHVlR1BSKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkKKyAgICAgICAg
ICAgIGppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1
ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNj
cmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAgICAgICBpZiAoZWxlbWVudFNpemUo
dHlwZSkgPiAxKSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBz
aW5jZSB3ZSBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dz
IGFuIGludDMyLgotICAgICAgICAgICAgaml0LmxzaGlmdDMyKHZhbHVlR1BSLCBJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2Ug
YSBiaXRzaGlmdCBoZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0Zm9ybXMgVHlwZWRBcnJheXMgY2Fu
bm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KKyAgICAgICAgICAg
IGppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQ
Uik7CiAgICAgICAgIH0KLQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVn
cyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTI2LDggKzEzNSwxMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6
OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAgICAg
ICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUik7CiAgICAgICAgIAog
ICAgICAgICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQ
Uiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVH
UFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggZDdkZjdjYjhlODc1Li41ZDZiMGE4NWE0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtOTM3LDEwICs5MzcsOCBAQCBzdGF0
aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgSlNWYWx1ZSBzdQogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAg
ICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0
SW5kZXhRdWlja2x5KGksIHZhbHVlKSkgewotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5k
ZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJ
bmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCBhcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkK
ICAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CkBAIC0yMzQx
LDE3ICsyMzM5LDE3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlH
ZXRBc0ludDMyKCkpIHsKLSAgICAgICAgaW50MzJfdCBpID0gKmluZGV4OworICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4
KCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGlzSlNTdHJp
bmcoYmFzZVZhbHVlKSkgewotICAgICAgICAgICAgaWYgKGkgPj0gMCAmJiBhc1N0cmluZyhiYXNl
VmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFs
dWUpLT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaSkpOwog
ICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkKICAgICAgICAgICAgICAgICBhcnJheVByb2Zp
bGUtPnNldE91dE9mQm91bmRzKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFs
dWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KHN0YXRpY19j
YXN0PHVpbnQzMl90PihpKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5k
ZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50
cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBm
YWxzZTsKIApAQCAtMjM3MSw4ICsyMzY5LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1
ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpID49IDApCi0gICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAoc3Vi
c2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkK
ICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNDFj
NzFiNjAwNDRlLi5lNzZkYWRhMGQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsxNDksMTIgQEAKICNk
ZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDAKKyNlbmRpZgorCiAj
aWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCA0MmVmYjcxYzRhNjQuLmEzODg0MjYzYjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ2LDggKzEwNDYsOCBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAg
IGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtp
bmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTY5LDE0ICsxMTY5LDEzIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIAogICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1Vp
bnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYg
KGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4
UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNr
bHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghb2Jq
ZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUlu
ZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAg
ICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzM1ZTQ1NDQxMTA2Li5l
Y2MxYzZjYzIzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNWQUxVRTY0CiAg
ICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJ
RFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQKIAoraWYg
TEFSR0VfVFlQRURfQVJSQVlTCisgICAgY29uc3QgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0g
Y29uc3RleHByIEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgKK2VuZAor
CiBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IGNvbnN0ZXhwciBtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbAogCiBpZiBYODZfNjQgb3IgWDg2XzY0X1dJTiBvciBBUk02
NCBvciBBUk02NEUgb3IgUklTQ1Y2NApAQCAtMTMwMCw3ICsxMzA0LDcgQEAgbWFjcm8gYXJyYXlQ
cm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCiAg
ICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlw
ZQogZW5kCiAKLW1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50
R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzbG93UGF0aCkKK21hY3JvIGdldEJ5VmFs
VHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdl
dEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBj
aGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUg
Ym9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQy
CiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMxMSw4ICsxMzE1LDE2IEBA
IG1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWws
IGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzCiAgICAgaWYgQVJNNjRFCiAgICAgICAgIGNvbnN0IGxl
bmd0aCA9IHQ2CiAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSB0NwotICAgICAgICBsb2FkaSBKU0Fy
cmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAotICAgICAgICBiaWFlcSBpbmRl
eCwgbGVuZ3RoLCBzbG93UGF0aAorICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9s
ZW5ndGhbYmFzZV0sIGxlbmd0aAorICAgICAgICBicWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0
aAorICAgIGVsc2lmIEpTVkFMVUU2NAorICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUg
aW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBu
b3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5
QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGlmIExBUkdFX1RZ
UEVEX0FSUkFZUworICAgICAgICAgICAgYnFiZXEgaW5kZXgsIHNtYWxsVHlwZWRBcnJheU1heExl
bmd0aCwgc21hbGxUeXBlZEFycmF5CisgICAgICAgICAgICBzZXRMYXJnZVR5cGVkQXJyYXkoKQor
LnNtYWxsVHlwZWRBcnJheToKKyAgICAgICAgZW5kCiAgICAgZWxzZQogICAgICAgICAjIGxlbmd0
aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFuY2gg
YmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIGJp
YWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCmluZGV4IGYzZDk3Y2E0ZjdjYi4uMzYzMjM3MTQxYWM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQpAQCAtMTY2Niw3ICsxNjY2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAg
ICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmlu
aXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBtYWNybyAoKSBlbmQsIC5vcEdl
dEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGZiZGJhNjhlMGYzMC4uODIzNTdm
YWMzMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEzLDE2IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKICAg
ICBlbmQKIAorICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICBtYWNybyBzZXRMYXJn
ZVR5cGVkQXJyYXkoKQorICAgICAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlWYWw6Ok1ldGFkYXRh
OjptX2FycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQorICAgICAgICBlbmQK
KyAgICBlbHNlCisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAg
ICBjcmFzaCgpCisgICAgICAgIGVuZAorICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQyKQog
CiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBAIC0xNzYzLDcgKzE3NzMsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFn
ZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmlu
aXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExh
cmdlVHlwZWRBcnJheSwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5
N2Y0OWU4YTFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBB
cnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVz
dHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6
OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZm
ZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qg
c2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDog
bV9kYXRhKGRhdGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9y
KSkKICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZm
ZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3Ro
ZXIpCiAgICAgb3RoZXIudHJhbnNmZXJUbygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVu
dHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVy
Q29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5
dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBt
X2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVz
KQogewpAQCAtMTA5LDIzICsxMDksMjEgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNl
dCgpCiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50
czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjp0cnlBbGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxv
dyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRz
KSB7Ci0gICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5
dGVTaXplOwotICAgICAgICBpZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5
dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAg
ICAgcmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRT
aXplIHNpemVJbkJ5dGVzID0gbnVtRWxlbWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVu
dEJ5dGVTaXplOworICAgIGlmIChzaXplSW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUlu
Qnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgp
OworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRp
Y19jYXN0PHNpemVfdD4obnVtRWxlbWVudHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50
Qnl0ZVNpemUpOwotICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisg
ICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAo
IWFsbG9jYXRpb25TaXplKQogICAgICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3Vy
ZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4g
V2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2
b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxv
Y2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOwor
ICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlm
ICghZGF0YSkgewogICAgICAgICByZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyAr
MTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9J
bml0aWFsaXplKQogICAgICAgICBtZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0g
ICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXpl
SW5CeXRlcy52YWx1ZSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFY
X0FSUkFZX0JVRkZFUl9TSVpFKTsKICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJp
bWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIp
CiAgICAgUkVMRUFTRV9BU1NFUlQob3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVG
RkVSX1NJWkUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50
cywgZWxlbWVudEJ5dGVTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBA
QCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVy
KQogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0
ZUxlbmd0aCgpKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNv
bnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3Ro
KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAg
ICAgaWYgKCFidWZmZXIpCkBAIC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJl
bnQgdGhpcyBpcyBvbmx5IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
Pjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBz
aG91bGQgaGF2ZSBhbHJlYWR5IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0
ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFH
aWdhY2FnZTo6aXNFbmFibGVkKCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdh
Y2FnZTo6Y29udGFpbnMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxl
bmd0aCAtIDEpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3Ro
LCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcg
KzIxOCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29u
c3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Ig
d2UgY291bGQgaW50cm9kdWNlIGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFy
ZSB1bmNhZ2VkIGFuZCBnZXQgYWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFz
c2VtYmx5LiBXYXNtIHNob3VsZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3Rv
cikKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJiBkZXN0cnVjdG9yKQogewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChH
aWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmlt
aXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRl
TGVuCiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3
IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZl
ciYgb3RoZXIpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVM
ZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3Qg
Ynl0ZUxlbmd0aCkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNv
bnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRv
bnRJbml0aWFsaXplKTsKQEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVM
ZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2Us
IGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNp
emVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVy
biBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1
ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAg
cmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMs
IGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250
ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NF
UlQoIWJ5dGVMZW5ndGggfHwgc291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpu
ZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5k
YXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAg
ICAgQVNTRVJUKHNvdXJjZSk7CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNl
LCBieXRlTGVuZ3RoKTsKKyAgICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0
aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5
QnVmZmVyQ29udGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxl
bWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJh
eUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewog
fQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQg
bGVmdCwgdW5zaWduZWQgcmlnaHQpCitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91
YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0g
cmlnaHQpOwogICAgIGlmICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBB
cnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQg
cmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChk
b3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVM
ZW5ndGgoKTsKKyAgICBzaXplX3QgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBp
ZiAoaW5kZXggPCAwKQogICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAg
ICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSAr
MzE5LDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJl
Z2luKSBjb25zdAogICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChi
ZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZElu
ZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXpl
ID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVn
aW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBz
aXplKTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNo
YXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmgKaW5kZXggNjhmZjkwZTEzZWJhLi44OWEwYjljOGE5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDE0IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisjaWYgQ1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFICgxdWxsIDw8IDMyKQorI2Vsc2UKKy8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2l6
ZV90IHRvIHN0b3JlIHRoZSBzaXplIGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5v
dCBzdXBwb3J0IDRHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorLy8gTm90ZSB0aGF0IHN0b3Jpbmcg
dGhlIHNpemUgaW4gYSB1aW50NjRfdCB3b3VsZCBiZSBxdWl0ZSBtZXNzeSBvbiAzMi1iaXRzIGFz
IHRoZSBKSVQgaGF2ZSB0byBiZSBhYmxlIHRvIG1hbmlwdWxhdGUgaXQuCisvLyBTbyB3ZSBhcmUg
c3RpY2tpbmcgd2l0aCAyR0IuIEl0IHNob3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3Vw
cG9ydCB1cCB0byAoNEdCIC0gMUIpIGlmIGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFIDB4N2ZmZmZmZmZ1CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJh
eUJ1ZmZlcjsKQEAgLTUxLDcgKzU4LDcgQEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xh
c3MgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmKTsKKyAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRh
dGEsIHNpemVfdCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHMoKTsKICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY3
LDE0IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6
UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAg
IFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1
bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAog
Y2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJy
YXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlC
dWZmZXJDb250ZW50cygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVu
dHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRz
KEFycmF5QnVmZmVyQ29udGVudHMmJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZm
ZXJDb250ZW50cyYgb3BlcmF0b3I9KEFycmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gISFt
X2RhdGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dE1heUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQorICAgIHNpemVfdCBzaXplSW5CeXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAgICAKICAgICBib29sIGlzU2hhcmVk
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEwMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIERvbnRJbml0aWFsaXplCiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxs
b2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5p
dGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHZvaWQgdHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAg
ICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZm
ZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4ICsxMTIsMjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlw
ZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0
cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3No
YXJlZDsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5
dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50
ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUo
QXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qg
dm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRl
ZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9p
ZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFk
b3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAv
LyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUp
OwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0
YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAg
aW5saW5lIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hh
cmVkKCk7CiAgICAgdm9pZCBzZXRTaGFyaW5nTW9kZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsK
QEAgLTEzNyw3ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVn
aW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xp
Y2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Owor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBl
ZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90IGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5l
IHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTY4LDEy
IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8
dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6
YXRpb25Qb2xpY3kpOwotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFs
KEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRp
b25Qb2xpY3kpOworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7Cisg
ICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsK
LSAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAg
IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVm
dCwgdW5zaWduZWQgcmlnaHQpOworICAgIGlubGluZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUg
aW5kZXgpIGNvbnN0OworICAgIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91Ymxl
IHgsIHNpemVfdCBsZWZ0LCBzaXplX3QgcmlnaHQpOwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hp
bmcoVk0mKTsKIApAQCAtMTkyLDcgKzE5OSw3IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpk
YXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVk
IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0
ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsK
IH0KQEAgLTIwNSw3ICsyMTIsNyBAQCBib29sIEFycmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0
CiBzaXplX3QgQXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVk
IHJlZiBjb3VudCBvciBzb21ldGhpbmcuCi0gICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikg
KyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihB
cnJheUJ1ZmZlcikgKyBieXRlTGVuZ3RoKCk7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNw
cAppbmRleCA3NjhmZWE5MDliYWIuLjQ3MzcyMjc0NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5j
bHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJh
eUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0
ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBt
X2lzRGV0YWNoYWJsZSh0cnVlKQogICAgICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQog
ICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2ln
bmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNp
emVfdCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9
IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihsZW5ndGggPD0gbV9idWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRl
eCA3ZTM5NjA3Nzc4YTkuLmU3MWIwNjFmZTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiVHlwZWRBcnJheVR5cGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGlt
aXRzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwx
NCBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJl
c3MoKTsgfQogCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5
dGVPZmZzZXQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAot
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0K
KyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJv
b2wgaXNEZXRhY2hhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTky
LDE5ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJy
YXlCdWZmZXJWaWV3KCk7CiAKICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlz
IHNpemUgYWxpZ25lZC4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50
KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlm
eUJ5dGVPZmZzZXRBbGlnbm1lbnQoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAg
ICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAK
LSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJy
YXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0
byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRo
aW4gcmFuZ2UuCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJy
YXlCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywg
c2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVy
LmJ5dGVMZW5ndGgoKTsKICAgICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50
cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9mZnNldCkgLyBzaXplOworICAgICAgICBzaXplX3QgcmVt
YWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gZWxlbWVudFNpemU7
CiAgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0MyArMTEzLDQ4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFs
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIGlubGluZSBib29sIHNldEltcGwoQXJy
YXlCdWZmZXJWaWV3KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0
SW1wbChBcnJheUJ1ZmZlclZpZXcqLCBzaXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUg
Ym9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3Ro
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKLSAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNl
dCk7CisgICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIGdl
dFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXpl
X3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGlu
ZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0LCBpbnQg
ZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsCi0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2ln
bmVkKiBsZW5ndGgpOworICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zmc2V0IGlz
IGluIG51bWJlciBvZiBlbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAgIC8vIG91
dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlpbmcgYnVm
ZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBj
bGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYgYnVm
ZmVyLAotICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVk
ICpvZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpudW1FbGVtZW50cykKKyAgICAgICAgc2l6ZV90
IGFycmF5Qnl0ZU9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpvZmZzZXQsCisgICAgICAgIHNpemVf
dCAqbnVtRWxlbWVudHMpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlO
VF9NQVggLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBzaXplX3QgbWF4
T2Zmc2V0ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBhcnJheUJ5dGVP
ZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewog
ICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAq
bnVtRWxlbWVudHMgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
ICpvZmZzZXQgPSBhcnJheUJ5dGVPZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAg
ICAqb2Zmc2V0ID0gc3RkOjptaW4oYnVmZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAg
ICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAq
b2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgQ2hlY2tlZDxzaXplX3Q+IGFkanVzdGVkT2Zm
c2V0ID0gKm9mZnNldDsKKyAgICAgICAgYWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAg
ICAgICBhZGp1c3RlZE9mZnNldCArPSBhcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1
c3RlZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1
ZmZlci5ieXRlTGVuZ3RoKCkpCisgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5n
dGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0
LnZhbHVlKCk7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0
ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9
IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAg
IHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6IDMxOworI2lmIENQVShKU1ZBTFVFNjQpCisgICAgdWlu
dDY0X3QgbV9ieXRlT2Zmc2V0IDogNjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNl
dCA6IDMxOworI2VuZGlmCiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWdu
ZWQgbV9ieXRlTGVuZ3RoOworICAgIHNpemVfdCBtX2J5dGVMZW5ndGg7CiAKICAgICB1c2luZyBC
YXNlQWRkcmVzcyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2Vk
UHRyPjsKICAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0
b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1
ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9m
ZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJy
YXksIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0
ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93Cisg
ICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCks
IGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAg
ICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwog
ICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJh
eS0+Ynl0ZUxlbmd0aCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZl
clZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5n
dGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJ
bXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVP
ZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0
IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbihi
eXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KIAogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgZGF0YSwg
ZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVy
Vmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5n
dGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJ
bXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRl
T2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8
IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91
dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4o
Ynl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGluYXRpb24s
IGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1Jh
bmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKIHsKLSAg
ICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsg
cmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBy
YW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBv
ZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNldCwg
cmFuZ2VCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihi
YXNlQWRkcmVzcygpKTsKICAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0
ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3Ojpj
YWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25l
ZCBhcnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0gICAg
aWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChzdGFy
dCA8IDApCi0gICAgICAgIHN0YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5k
ICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAgICBp
ZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVuZCA9
IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0Owot
ICAgICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5ndGgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogdXNpbmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCmluZGV4IDY4ODNhMTdjNDcyZC4uZDM2
MjQ1MGEyZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNz
T2JqZWN0LmNwcApAQCAtMTIwLDggKzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0
b21pY0FjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAg
ICAgICAgIGFjY2Vzc0luZGV4ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVj
dCwgImFjY2Vzc0luZGV4Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDAp
OwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXggPj0g
dHlwZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBh
Y2Nlc3MuIl9zKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5jcHAKaW5kZXggZGNjMmY1MDY0YWYyLi5mYmM5ODQ3ZDJkNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMy
LDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKK0RhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBz
aXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZp
ZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8
RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVM
ZW5ndGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZm
ZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZp
ZXc6OmNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0
aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZm
ZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGFWaWV3LmgKaW5kZXggZGEwNmI0YmIyMTQ0Li4zNDAyNjU0MTAzMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7
CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3Jl
YXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0
aCk7CiAgICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
Jik7CiAgICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2Jh
bE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBi
b29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgZ2V0KHNpemVfdCBvZmZzZXQsIGJvb2wgbGl0
dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0
YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgo
KSkgewpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVuc2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5k
aWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgcmVhZChzaXplX3QmIG9mZnNldCwg
Ym9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBUIHJlc3VsdCA9IHRoaXMtPnRlbXBsYXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlhbiwg
c3RhdHVzKTsKICAgICAgICAgaWYgKCFzdGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4LDcg
QEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZv
aWQgc2V0KHVuc2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wq
IHN0YXR1cyA9IG51bGxwdHIpCisgICAgdm9pZCBzZXQoc2l6ZV90IG9mZnNldCwgVCB2YWx1ZSwg
Ym9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0
ZUxlbmd0aCgpKSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYmU3ZTZjMDUzNGZhLi5mNDkzNzBmY2FiNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMg
QXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJh
eSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
dHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJh
eSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gY3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVf
dCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUo
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNp
emVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0
cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5n
dGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUo
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApAQCAtNjUsMjYgKzY1
LDI2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2UoMCwg
bGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICByZXR1
cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChzaXplX3QgaW5kZXgsIGRvdWJs
ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhdID0g
QWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIHNl
dE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29u
c3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9
IHZhbHVlOwpAQCAtMTAwLDE2ICsxMDAsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNoZWNrSW5i
b3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CiAgICAgewotICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIChv
ZmZzZXQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA8PSBsZW5ndGgK
LSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBj
b3VudCA+PSBvZmZzZXQpOworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbihvZmZzZXQs
IGNvdW50LCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsK
LSAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAg
ICAgICAgIHJldHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVi
bGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXco
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYWU1YmRkOGM2YTMxLi41NDI5ODBhZTY0
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgo
bGVuZ3RoIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
UmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00Nyw3ICs0OCw3IEBAIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKHVuc2lnCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVu
Z3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGFycmF5LCBsZW5ndGgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01Niw3ICs1Nyw3IEBAIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVh
dGUoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CkBAIC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBA
QCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAg
LTg1LDcgKzg2LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTEwMCw3ICsxMDEsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcg
KzExMCw3IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3Qg
bGVuZ3RoKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSkpOwpAQCAtMTE4LDI1ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAg
IHJldHVybiB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0
YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAg
IGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9m
ZnNldCwgJmxlbmd0aCk7Ci0gICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVk
QnVmZmVyKCk7Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVt
ZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5n
dGgpOwotICAgIHJldHVybiB0cnlDcmVhdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0K
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp3cmFwKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFl
YmQzYzJjYy4uZjA3NDBjYjZkNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENs
YXNzSW5mbyBKU0FycmF5QnVmZmVyVmlldzo6c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZl
clZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBt
X3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAg
ICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6
OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAg
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3Qg
ZWxlbWVudFNpemUsCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxl
bmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQog
ICAgIDogbV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgx
LDE4ICs4MSwxOCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0
IGFsbG93IGEgdHlwZWQgYXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0
aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENo
ZWNrZWQ8c2l6ZV90PiBzaXplID0gbGVuZ3RoOworICAgIHNpemUgKj0gZWxlbWVudFNpemU7Cisg
ICAgaWYgKHNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRp
Y19jYXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShH
aWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOwor
CisgICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgc2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNl
dCh2ZWN0b3IoKSwgMCwgc2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9y
eUFsbG9jYXRlZChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7Cisg
ICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAg
IAogICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlw
ZWRBcnJheTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0
aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkKQEAg
LTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHNpemVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJl
KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKQEAg
LTIzOCw5ICsyMzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNUeXBl
IHR5cGUpCiAgICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlwZV07
CiB9CiAKLXVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKK3Np
emVfdCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoKCk7CisgICAgcmVz
dWx0ICo9IGVsZW1lbnRTaXplKHR5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwor
I2Vsc2UKKyAgICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVyZmxvdyBpcyBhbHJlYWR5IGNoZWNrZWQg
aW4gdGhlIGNvbnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRkIHRoZSBleHRyYSBzYW5pdHkgY2hlY2sg
d2hlbiBhc3NlcnRzIGFyZSBlbmFibGVkLgogICAgIHJldHVybiBsZW5ndGgoKSAqIGVsZW1lbnRT
aXplKHR5cGUoKSk7CisjZW5kaWYKIH0KIAogQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3
OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2Nyw3ICsyNzQsNyBAQCBBcnJheUJ1ZmZl
ciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQogICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKIAogICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVu
Z3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CiAKICAg
ICBzd2l0Y2ggKG1fbW9kZSkgewogICAgIGNhc2UgRmFzdFR5cGVkQXJyYXk6IHsKQEAgLTMxNiw3
ICszMjMsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9z
c2libHlTaGFyZWRJbXBsKCkKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKLSAgICB1
bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhp
cy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBl
KSBcCiAgICAgY2FzZSB0eXBlICMjIEFycmF5VHlwZTogXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggZGQwMWY3ZjgyYTUzLi5k
YTZkZDBiZDc1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIGZhc3RTaXplTGltaXQgPSAxMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGZhc3RTaXplTGltaXQgPSAxMDAwOwogICAgIHVzaW5nIFZlY3RvclB0ciA9IENhZ2VkQmFy
cmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAKICAgICBz
dGF0aWMgdm9pZCogbnVsbFZlY3RvclB0cigpCkBAIC0xMTcsMTAgKzExNywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBudWxsLnJhd0JpdHMoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IHNpemVfdCBzaXplT2YodWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkKKyAg
ICBzdGF0aWMgc2l6ZV90IHNpemVPZihzaXplX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICog
ZWxlbWVudFNpemUgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSkKLSAgICAgICAgICAgICYg
fihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiBy
ZXN1bHQgPSBsZW5ndGg7CisgICAgICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAg
cmVzdWx0ICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVz
dWx0LnZhbHVlKCkgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBh
Y2l0eSkKQEAgLTEzNiwyNSArMTM4LDI1IEBAIHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAg
ICAgIGVudW0gSW5pdGlhbGl6YXRpb25Nb2RlIHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07
CiAgICAgICAgIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0
KFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwg
SW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgc2l6
ZV90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAg
IAogICAgICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFy
cmF5cy4gSXQncyB1c2VkIGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVj
dGlvbkNvbnRleHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwor
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZv
aWQqIHZlY3Rvcik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAg
ICAgICAgIAogICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0YVZpZXcgfTsKICAgICAgICAg
Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgRGF0YVZpZXdUYWcpOworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6
ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAg
ICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1f
bGVuZ3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xl
bmd0aDsgfQorICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7
IH0KICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsg
fQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVy
Zmx5OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
U3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENhZ2Vk
UHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAgICAgVmVj
dG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgICAgIHNp
emVfdCBtX2xlbmd0aDsKICAgICAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBC
dXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAgIH07CkBAIC0xOTMsOCArMTk1LDggQEAgcHVibGlj
OgogICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7CiAgICAgaW5saW5lIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0ZUxl
bmd0aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0
aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJheUJ1
ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1fdmVj
dG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICBU
eXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCAzNGVhMjE0NjBhMGQuLjk5MjJmZmRi
NTdiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCkBAIC02OSwxMyArNjksMTUgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRv
SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2
ZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKworICAgIGlmIChpc0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBhc0ludDMyKCk7CisKICAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJv
ck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
aWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggNmZhYjQ2NWRkM2I5Li5kZmQ2YTUx
MWQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDIsNyArNDIsNyBAQCBKU0RhdGFWaWV3OjpKU0RhdGFWaWV3KFZNJiB2bSwgQ29uc3Ry
dWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcgogCiBKU0RhdGFWaWV3
KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcw
LDI1ICs3MCwyNSBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNE
YXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgSlNEYXRh
Vmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQs
IHVuc2lnbmVkKQorYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qs
IEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldEluZGV4
KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpCitib29sIEpTRGF0YVZpZXc6OnNl
dEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKQogewogICAgIFVOUkVBQ0hB
QkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCAyYzc4NWU0NzYxMWEuLmVjMmFmNjk4MjM5
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1
LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0FycmF5QnVmZmVyVmlldzsK
ICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXpl
ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBlbGVtZW50U2l6ZSA9IDE7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIFR5cGVkQXJyYXlDb250ZW50VHlwZSBjb250ZW50VHlwZSA9IFR5
cGVkQXJyYXlDb250ZW50VHlwZTo6Tm9uZTsKIApAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
KAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCBzaXplX3QgYnl0ZU9mZnNldCwKKyAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAg
IAogICAgIC8vIER1bW15IG1ldGhvZHMsIHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNl
IGFyZSBqdXN0IGluIHBsYWNlIHRvCiAgICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9uIHdlIGRvIGVsc2V3aGVyZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRp
YyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpT
R2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90IGxlbmd0aCk7
CisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSk7CiAg
ICAgCiAgICAgQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KICAgICBBcnJheUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAppbmRleCA5NDkwNjI0N2VhNjUuLmUwZmJjNTJmODc1OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMzYsMTEgKzEzNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAK
LSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4
KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
CiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6
ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNp
emUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXpl
ID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGxpdHRs
ZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRh
dGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFW
aWV3LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgo
KTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRl
TGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIs
NyArMTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIg
b2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5z
aWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxP
YmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3Qg
dW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0x
OTUsNyArMTk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9
IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpID49IDMpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgyKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVy
bHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAK
LSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVf
dCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+
IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQg
b2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4u
NmFiZDJhNDFiMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRl
ICJUb05hdGl2ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAg
ICBTdHJ1Y3R1cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAg
ICAvLyBmcm9tIEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJf
dCBMCisvLyAgICAgc2l6ZV90IEwKIC8vICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhl
c2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJ
WE1FOiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRl
ci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAv
LyBCIGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3Zl
cmZsb3ciIGRhdGEgZm9yCkBAIC0xMDMsMTQgKzEwNCwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQ
dHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQogICAgIHNpemVf
dCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKTsgfQogICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUqIHR5cGVkVmVjdG9yKCkgY29uc3QKQEAgLTEyMiw0NiArMTIzLDQ2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4odmVj
dG9yKCkpOwogICAgIH0KIAotICAgIGJvb2wgaW5Cb3VuZHModW5zaWduZWQgaSkgY29uc3QKKyAg
ICBib29sIGluQm91bmRzKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkg
PCBtX2xlbmd0aDsKICAgICB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBtZWFudCB0byBt
YXRjaCBpbmRleGVkIGFjY2VzcyBtZXRob2RzIHRoYXQgSlNPYmplY3QKICAgICAvLyBzdXBwb3J0
cyAtIGhlbmNlIHRoZSBzbGlnaHQgcmVkdW5kYW5jeS4KLSAgICBib29sIGNhbkdldEluZGV4UXVp
Y2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHNpemVf
dCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGluQm91bmRzKGkpICYmIEFkYXB0b3I6
OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9Ci0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKKyAgICBib29sIGNhblNldEluZGV4
UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBpIDwgbV9sZW5ndGggJiYgdmFsdWUuaXNOdW1iZXIoKSAmJiBBZGFwdG9yOjpjYW5Db252
ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQogICAgIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZSh1bnNpZ25lZCBpKSBjb25zdAorICAgIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShzaXplX3QgaSkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICByZXR1
cm4gdHlwZWRWZWN0b3IoKVtpXTsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZSBnZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseShzaXpl
X3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b0pTVmFsdWUobnVs
bHB0ciwgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpKSk7CiAgICAgfQogICAgIAotICAg
IHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSh1bnNpZ25lZCBpLCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1
ZShzaXplX3QgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICB0eXBlZFZlY3RvcigpW2ldID0gdmFsdWU7
CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFs
dWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFs
dWUpCiAgICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICBz
ZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKGksIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+
KHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIGJvb2wgc2V0
SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IGksIEpTVmFsdWUganNW
YWx1ZSkKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE3Niw5ICsxNzcs
MTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMg
RWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRh
cHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0
b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFk
YXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7CisgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2Vy
Y2lvbihKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENv
ZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxl
bWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVl
IGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0
Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7CisgICAgfQogCiAgICAgdm9pZCBzb3J0KCkKICAg
ICB7CkBAIC0xOTgsMjEgKzIwNSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseShzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBtX2xlbmd0aAotICAg
ICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBj
aGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoID49IG9mZnNldDsK
KyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW4ob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3Ro
KTsKICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0
IHJldHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhj
ZXB0aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9i
YWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMg
ZmFsc2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAg
IGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVu
c2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29w
eVR5cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXpl
X3Qgb2Zmc2V0LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgs
IENvcHlUeXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5
cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAg
IFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsK
QEAgLTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNj
ZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmlj
VHlwZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVj
dCosIHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4q
LAorICAgICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7
CiAKICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlw
ZWQgQXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAg
LTM0OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsK
ICAgICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5
TmFOKGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXgg
NDUwMjM4NzkyZDEwLi4xZWIzZDE3ODYxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIK
ICNpbmNsdWRlICJUeXBlRXJyb3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUs
NyArNjYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9p
ZCogdmVjdG9yKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChzdHJ1
Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKQEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGVXaXRoRmEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
aXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05OSw3ICsxMDAsNyBAQCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTQ1LDcgKzE0Niw3IEBAIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQgb3Ro
ZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxPdGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVfdCBs
ZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3ICsy
MTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlzdGlu
Z0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplICYm
IHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5VHlw
ZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAg
ICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4o
CiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVl
KGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8gTm93
IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVyICgy
QikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFs
dWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBj
b252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1
aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5LDEx
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZp
Y1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJhbnNm
ZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
bGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAg
ICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRv
PEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFs
dWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0
aDsgaS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ldKTsK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zm
c2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBz
aXplX3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBj
b25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChjaS0+
dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAgICAv
LyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUgdGhl
IHNhbWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3Qg
bWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmpl
Y3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgoKSk7
CiAgICAgICAgIApAQCAtMzEzLDggKzMxNCwxMCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
Ly8gV2UgY291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0
T2Zmc2V0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgLy8gZ2V0KCkgZm9yIG5vdyBwcm9iYWJseSBkb2VzIG5vdCBkbyB0aGUgcmln
aHQgdGhpbmcgZm9yIGluZGljZXMgYWJvdmUgVUlOVF9NQVguCisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc0luQm91bmRzPHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CisgICAgICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJ
T05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA0YzBlYmQxZjYxNjUuLmE5NzQ3MzczYzRm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC02MCw2ICs2
MCw3IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQcm9maWxlOwogY2xhc3MgRXhjZXB0aW9u
OwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKQEAgLTIxMSwx
MCArMjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9
IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJv
cGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldEluZGV4UXVpY2tseSh2bSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJbmRleFF1aWNrbHkodm0sIHBy
b3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKQEAgLTI4
OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0SW5kZXhR
dWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJyYXlQcm9maWxlKiA9IG51bGxwdHIpIGNv
bnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0
CiAgICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCi0gICAgSlNWYWx1ZSB0cnlH
ZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKworICAgIC8vIFVzZXMgdGhlIChvcHRp
b25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0
IHdoZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpIGNvbnN0CiAgICAgewogICAg
ICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAg
ICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQx
MSwzNSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxPYmplY3Qs
IGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1
bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0gICAgYm9vbCBjYW5TZXRJbmRl
eFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVp
Y2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVuc2lnbmVkLCBKU1ZhbHVlKTsK
KworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nlc3MKKyAgICAvLyBVc2UgdGhl
IChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJy
YXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSopOworICAgIGJvb2wgdHJ5U2V0
SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUq
IGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nTW9kZSgp
KSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgotICAgICAgICAgICAg
cmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdmFsdWUpOworICAgICAg
ICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdiwgYXJyYXlQ
cm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9J
TkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5H
X1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZ
UEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzogewor
ICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7Cisg
ICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNXaGlsZVBlcmZv
cm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAg
ICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRo
aXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAgICAgICAgICBpZiAoaSA+PSBi
dXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0
UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRo
aXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAo
aSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAg
Y29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAh
PSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGls
ZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3Vi
bGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5
LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xl
bmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhB
cnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+dmVjdG9yTGVu
Z3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2ts
eUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgog
ICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpCi0gICAg
ICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXTsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0NvcHlPbldyaXRlKGluZGV4aW5n
TW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCkt
PnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3Rvcltp
XSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlT
dG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDb3B5T25Xcml0
ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5z
aWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkg
PSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNmUxYmIxYjU5ZjFlLi4xMzVmZDA0NTQ3MDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC00
NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuR2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAogICAgIH0KIH0KIAotaW5saW5lIGJvb2wg
SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNW
YWx1ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKSBj
b25zdAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0jZGVmaW5lIENBU0VfVFlQRURfQVJSQVlf
VFlQRShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6XAotICAgICAgICByZXR1
cm4ganNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyktPmNhblNldEluZGV4
UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhD
TFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCi0jdW5kZWYgQ0FTRV9UWVBF
RF9BUlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGlmIChpID4gQXJyYXlQcm9maWxl
OjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUpCisgICAgICAgIGFy
cmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKKyNlbHNlCisgICAgKHZvaWQp
YXJyYXlQcm9maWxlOworI2VuZGlmCiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0Ci17CiAgICAgc3dpdGNoICh0
eXBlKCkpIHsKICNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKICAgICBjYXNl
IG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKQEAgLTUxMiw3ICs1MDYsNTAgQEAgaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KLSAgICAKKworaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYg
dm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKK3sKKyAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2Ug
PSB0aGlzLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9yYWdlKCk7CisgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+JiB4ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgSlNWYWx1ZSBvbGQgPSB4Lmdl
dCgpOworICAgIHguc2V0KHZtLCB0aGlzLCB2KTsKKyAgICBpZiAoIW9sZCkgeworICAgICAgICAr
K3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CisgICAgICAgIGlmIChpID49IHN0b3JhZ2Ut
Pmxlbmd0aCgpKQorICAgICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAxKTsKKyAgICB9
Cit9CisKK2lubGluZSBib29sIEpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFy
cmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCit7
CisgICAgc3dpdGNoICh0eXBlKCkpIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorI2Rl
ZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHtcCisgICAgaWYg
KChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCkgJiYgYXJyYXlQ
cm9maWxlKVwKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgp
O1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbHNlCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9G
SUxFKGksIGFycmF5UHJvZmlsZSkgZG97XAorICAgICh2b2lkKWFycmF5UHJvZmlsZTtcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5h
bWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKKyAgICAgICAgYXV0byogdHlw
ZWRBcnJheSA9IGpzQ2FzdDxKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpO1wKKyAgICAgICAg
aWYgKCF0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdikpXAorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlO1wKKyAgICAgICAgdHlwZWRBcnJheS0+c2V0SW5kZXhRdWlja2x5KGksIHYp
O1wKKyAgICAgICAgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKTtcCisgICAg
ICAgIHJldHVybiB0cnVlO1wKKyAgICB9CisgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9F
WENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKKyN1bmRlZiBDQVNFX1RZ
UEVEX0FSUkFZX1RZUEUKKyN1bmRlZiBVUERBVEVfQVJSQVlfUFJPRklMRQorICAgIGRlZmF1bHQ6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCiBpbmxp
bmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9FTkFC
TEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3
MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlj
a2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2Jq
ZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYm
IGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi4yYTg2MzYzMWFhMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTk2LDcg
Kzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYWdlU2l6
ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWF4
UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8IDMyKSAvIHBhZ2VTaXpl
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJWkUgLyBwYWdlU2l6ZSk7CiAKICAgICB1
aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRl
eCBmZjE1NjVmMTFkZWQuLjkzZjA2YzlkNWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBS
ZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBz
aXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRh
cmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdl
dCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQg
dHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3Qg
dHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0
Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3
YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2Us
IGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
ICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewog
ICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1
ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAg
Ly8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNv
dXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxU
YXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFu
IHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAg
IHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRl
ciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Up
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAg
ICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2ln
bmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwg
aXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihT
b3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5z
aWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7
CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRT
YWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252
ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0lu
Qm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiAr
OTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJv
ZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+
KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBpc1N1bVNtYWxsZXJUaGFuKFQgYSwgVCBiLCBUIGJvdW5kKQoreworICAgIENoZWNrZWQ8VD4g
c3VtID0gYTsKKyAgICBzdW0gKz0gYjsKKyAgICByZXR1cm4gIXN1bS5oYXNPdmVyZmxvd2VkKCkg
JiYgc3VtLnZhbHVlKCkgPCBib3VuZDsKK30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3Zl
cmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxv
d3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7
CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDUxNzM3MjE3YTU1MS4uZGNiMDhlZGVjMzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtVXNlLmgKQEAgLTE0Nyw2ICsxNDcsMTEgQEAKICNkZWZpbmUgVVNFX0JJR0lOVDMyIDAK
ICNlbmRpZgogCisjaWYgVVNFKEpTVkFMVUU2NCkKKy8vIFdoZXRoZXIgdG8gc3VwcG9ydCB0eXBl
ZCBhcnJheXMgPiAyR0IKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUyAxCisjZW5kaWYK
KwogLyogRklYTUU6IFRoaXMgbmFtZSBzaG91bGQgYmUgbW9yZSBzcGVjaWZpYyBpZiBpdCBpcyBv
bmx5IGZvciB1c2Ugd2l0aCBDYWxsRnJhbWUqICovCiAvKiBVc2UgX19idWlsdGluX2ZyYW1lX2Fk
ZHJlc3MoMSkgdG8gZ2V0IENhbGxGcmFtZSogKi8KICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJM
RSkgJiYgKENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpCg==
</data>
<flag name="commit-queue"
          id="463708"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439932</attachid>
            <date>2021-10-01 16:43:32 -0700</date>
            <delta_ts>2021-10-01 18:25:58 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>189998</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5lNjc2N2M2YTlhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0K
KwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZf
NjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRp
ZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIg
aW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRm
b3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29u
ZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQg
ZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0
YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsK
KyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAg
ICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29u
c3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRp
bmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUg
YSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAg
ICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQz
Ml90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50
LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQo
Y29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAg
IH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CmluZGV4IDQyNTA5MDNiYzMyMi4uMTc5NmI2NTFiYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDgg
KzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1Jl
Z2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25h
YmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2
NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMz
MDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2go
Y29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwog
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0
Y2YyMjQwZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIs
MTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQs
IGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRy
TGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRl
QXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhH
UFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNj
cmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0
aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5k
ZXggZGY1MWU5NTJkZGNkLi4zYmVjZjgzNDMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMDE3LDcgKzEw
MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdCwgc3JjMSwgc3Jj
Mik7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2go
dWludDMyX3QgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKQogICAgIHsKICAgICAgICAgQVJNVGh1bWJJbW1l
ZGlhdGUgaW1tZWRpYXRlID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKHZhbHVl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IGNjZTBkMDFmNDAxNy4uZDc3NDY5OTliZTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCkBAIC0xMDgsOSArMTA4LDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzdGFja1BvaW50ZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVy
czo6ZXNwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBmcmFtZVBvaW50ZXJSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwogICAgIAotICAgIHN0YXRpYyBib29sIGNhbkJsaW5k
KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lm
aWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZm
ZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uczoKICAgICAvLwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGQx
YWUzYjU1MzU2NS4uZDdkZjFlOTNmMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0xMTkxLDEyICsxMTkxLDE3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
c3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAKICAgICAgICAgaml0LmxvYWQ4KENDYWxs
SGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
c2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkpOwogCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIHNpemVfdCwgc28gZWl0aGVyIDMyIG9yIDY0IGJp
dHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGpp
dC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0
Y2hHUFIpKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5k
aWYKIAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZv
LnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVn
cygpKTsKQEAgLTE2MzAsOSArMTYzNSwxNiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogICAgICAgICAgICAgcmVhZHkubGluaygmaml0KTsKICAgICAgICAgfQogCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIHNpemVfdCwgc28gZWl0
aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgaml0
LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgLy8gT3V0T2ZCb3VuZHMg
Yml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0aW9uIGZ1bmN0aW9u
LgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxs
SGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UK
ICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgLy8g
T3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0
aW9uIGZ1bmN0aW9uLgogICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJy
YW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQ
UikpOworI2VuZGlmCiAKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8uYmFzZVJlZ3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmgKaW5kZXggNjkxNjc5NDg0M2IwLi45OTMxYjEwZjgwMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRmaWVsZCB3aGVy
ZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRoYXQgd2UgaGF2
ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNlIHRoZSBsb3dl
ciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRz
IDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUg
Yml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9kZXM7CiAKIC8v
IFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAoMCAtIDE2LCAy
MSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUsMTcgQEAgcHVibGljOgogICAgICAgICAsIG1fZGlk
UGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAorCisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBBY2Nlc3NpbmcgdHlwZWQgYXJyYXlzIGxh
cmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCBhcyB3ZSBjYW4ndCBm
b3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50MzJfdC4KKyAgICAvLyBXZSBvbmx5IHN1cHBv
cnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24gNjQtYml0IHBsYXRmb3Jtcy4KKyAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgdm9pZCBzZXRNYXlCZUxhcmdlVHlw
ZWRBcnJheSgpIHsgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7IH0KKyAgICBib29sIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0
dXJuIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KKyNlbHNlCisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorI2VuZGlmCisKICAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1
cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVz
KiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9
CiAgICAgYm9vbCogYWRkcmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9y
ZVRvSG9sZTsgfQpAQCAtMjQ0LDYgKzI1NCw5IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQg
bV9sYXN0U2VlblN0cnVjdHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7
IGZhbHNlIH07IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUg
b3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFj
Y2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkg
aGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFy
cmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0
cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7
IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2Vz
IDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBi
b29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY2LDEzIEBA
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxp
bmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9
IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6
IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgLCBtX21heUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorI2VuZGlm
CisgICAgeworICAgIH0KIAogICAgIHZvaWQgdXBkYXRlKEFycmF5UHJvZmlsZSYgYXJyYXlQcm9m
aWxlKQogICAgIHsKQEAgLTI4MCw2ICsyOTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJyYXlQ
cm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOworCisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAgICAg
ICAgICBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2ZpbGUu
bV9tYXlCZUxhcmdlVHlwZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5
MCw3ICszMTYsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVzIDogMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihVbmxpbmtlZEFycmF5UHJvZmlsZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IGIxZGZjYTI3NDljMS4uMDQyYjA3Yjg4YWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0zNDg2LDYgKzM0ODYsMTcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6
IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5v
ZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0lu
dDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkp
OwogICAgICAgICBicmVhazsKQEAgLTM4MjEsNiArMzgzMiwxOSBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1f
Z3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUp
OworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAg
ICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5
cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHAKaW5kZXggNmUyNzUzMTA0YmQzLi4wNTliYTNmNmRjZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcApAQCAtMzI1LDYgKzMyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJh
eXMsIHNvIHNob3VsZCBub3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgor
ICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRo
U3ByZWFkOiB7CiAgICAgICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9k
ZS0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmlu
Z0FCYWRUaW1lV2F0Y2hwb2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0
Y2hwb2ludChub2RlKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAKaW5kZXggNmU0ZmU5YWZhM2ViLi4wNDFhZGI3ODYzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUg
QXJyYXlNb2RlOjpyZWZpbmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNl
RXhpdCwgYWN0aW9uKCkpOwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlv
bihpbmRleCkpCisgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmlj
LCBhY3Rpb24oKSk7CiAgICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFu
IGV4b3RpYyBvYmplY3QgYmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBA
IC0yOTQsNiArMjk0LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2Ug
QXJyYXk6OkZsb2F0NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAg
IGNhc2UgQXJyYXk6OkJpZ1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3
aHkgd2Ugb25seSBwcmVzZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1
dEJ5VmFsIGFuZCBub3QgR2V0QnlWYWwgYXMgd2VsbC4KICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gUHV0QnlWYWwpIHsKICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5v
cmlnaW4uc2VtYW50aWMsIE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0
T2ZCb3VuZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4
IGEwMjZhYWQxODkzYi4uZGY3NWM3ODkwZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNv
bnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5
OjpXcml0ZTsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBB
cnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5
dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9
IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xh
c3MgYXJyYXlDbGFzcywgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBA
QCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5k
czsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAg
dS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VU
eXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlw
ZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1
bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlv
bikKKyAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xh
c3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkg
PSBmYWxzZSkKICAgICB7CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAg
dS5hc0J5dGVzLmFycmF5Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3Bl
Y3VsYXRpb24gPSBzcGVjdWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBj
b252ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1
LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAg
ICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBh
cnJheUNsYXNzLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFj
dGlvbikKQEAgLTE2Myw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVj
dWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24g
PSBjb252ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAg
ICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAg
ICAgQXJyYXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpU
eXBlPih1LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAg
QXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QXJyYXk6OlNwZWN1bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJy
YXk6OkNvbnZlcnNpb24gY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFy
cmF5OjpDb252ZXJzaW9uPih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0
aW9uIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUu
YXNCeXRlcy5hY3Rpb24pOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0
IHsgcmV0dXJuIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVu
c2lnbmVkIGFzV29yZCgpIGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzks
MzUgKzE4NSw1MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUg
ZnJvbU9ic2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFy
cmF5OjpBY3Rpb24sIGJvb2wgbWFrZVNhZmUpOwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhU
eXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rp
b24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdp
dGhTcGVjdWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUo
dHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigp
LCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdp
dGhBcnJheUNsYXNzKEFycmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlN
b2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1v
ZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2Rl
IHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9j
a2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBB
cnJheU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpD
b252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9u
KCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRo
QXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlC
ZUxhcmdlVHlwZWRBcnJheSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlv
biBteVNwZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcywgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBl
ZEFycmF5KTsKKyAgICB9CiAKKyAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2Fm
ZSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAg
ICAgICAgICByZXR1cm4gQXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9m
aWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIpKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9
IEFycmF5OjpUb0hvbGU7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAg
ICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7Cisg
ICAgICAgICAgICByZXR1cm4gQXJyYXk6OkluQm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFy
cmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUg
d2l0aFByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmls
ZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpD
bGFzcyBteUFycmF5Q2xhc3M7Ci0KICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAg
ICAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYg
YmVuZWZpdHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2Rl
cyBhcnJheU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0y
MjEsMjMgKzI0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0g
QXJyYXk6OkFycmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9
IGFycmF5Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyht
eUFycmF5Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9
Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNv
bnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwg
YXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAg
fQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uLCBhY3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uID0gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsK
KworICAgICAgICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBl
ZEFycmF5KGxvY2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3Vs
YXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBs
YXJnZVR5cGVkQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAt
NTI2LDcgKzUzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50
eXBlKCkKICAgICAgICAgICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkK
ICAgICAgICAgICAgICYmIHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAg
ICAgICAgICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAg
ICAgICYmIGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYm
IG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgPT0gb3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsK
ICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIp
IGNvbnN0CkBAIC01NzksNyArNTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3Qg
YXJyYXlDbGFzczsKICAgICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAg
ICB1aW50OF90IGNvbnZlcnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0
OworICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOworICAgICAgICAgICAgdWludDhfdCBt
YXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5z
aWduZWQgYXNXb3JkOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggODgxMWI4OWYyNGE3Li4zZDc5ZjI0ZTdlODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC0zODA2LDggKzM4MDYsMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5
cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5z
aWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IEdldEJ5VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHN0
YXRpY19hc3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFu
dC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6
IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKCFpc0ludDMyU3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
ICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9
ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJy
YXlTdG9yYWdlVHlwZTsKQEAgLTM4MjEsMjYgKzM4MjksMzIgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9kZSogbGVuZ3RoTm9kZTsKKyAgICAgICAgaWYg
KGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIGxlbmd0aE5vZGUg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aEFzSW50NTIsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVy
ZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAgICAg
aWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVz
ZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBh
IGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5v
ZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5v
ZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2Ug
dHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4K
KyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6
ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2Rl
LCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNhc2Ug
VHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogeworI2lmICFVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2lu
KCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg1MiwxMyArMzg2
NiwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFu
ZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5
VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1
bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBl
LCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpS
ZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNl
dChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlN
b2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZz
ZXRJbnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYg
KCFpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJh
eVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZv
KCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NzAsNyArMzg5MSwxMCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6
R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgo
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJh
eTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBpZiAoaXNJbnQzMlNwZWN1
bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5
OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uNTQ4YmQwZWVlOWVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsx
NTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVudW1lcmF0b3JI
YXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5C
eVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKQEAgLTEzMzMsNiArMTMzNCw3IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hp
bGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0NDQsNiArMTQ0
NiwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB9CiAgICAgfQogCisgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBu
b2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBl
ZEFycmF5VmlldygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihBcnJheUxlbmd0aExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDogewogICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgp
OwogICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaAppbmRleCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBib29sIHZh
bGlkYXRpb25FbmFibGVkKCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBlbmFibGVJbnQ1Migp
CitpbmxpbmUgYm9vbCBjb25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKaW5kZXggMDcwYTQ4NTQ3YTk3Li42MDlmZjA4NTc3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE5NywxMCArMTk3LDEyIEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEdldHRlcjoKICAgICBjYXNlIEdl
dFNldHRlcjoKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nQ2hh
ckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICBj
YXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggOGUxYjkzZWVlNmNhLi4xOTY1ZDQzODk3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNDMsNiArMTA0Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGlu
ZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgp
LmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5p
c0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFz
RXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBA
IC0xMDczLDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBjYXNlIEFycmF5OjpG
b3JjZUV4aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3
ZSBoYXZlIG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2RlLgotICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXRSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgorICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4u
LgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEVudW1lcmF0b3JHZXRCeVZhbCkK
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgp
LndpdGhUeXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MTMzLDYgKzExMzQsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3du
U3RyaW5nVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpJbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToKKyAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5OgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6VWludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToK
KyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICAgICAgLy9pZiAo
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSB8fCAh
bm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Cisg
ICAgICAgICAgICAgICAgLy9lbHNlCisgICAgICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1
MlJlcFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKQEAgLTEx
ODQsNiArMTIwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51
bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYm
IG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBu
b2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5v
ZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAg
ICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxv
dykpIHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCkBAIC0xMjY2LDcgKzEyODMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6VWlu
dDMyQXJyYXk6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAg
ICAgICAvL2lmIChjaGlsZDItPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5
TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9lbHNlCisgICAgICAgICAg
ICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgICAg
ICBmaXhJbnRPckJvb2xlYW5FZGdlKGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
Y2hpbGQzLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKQpAQCAtMTI3Nyw3ICsxMjk3LDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93
bkNlbGxVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hp
bGQyKTsKKyAgICAgICAgICAgICAgICAvL2lmIChjaGlsZDItPnNob3VsZFNwZWN1bGF0ZUludDMy
KCkgfHwgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAg
Ly9lbHNlCisgICAgICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQy
KTsKICAgICAgICAgICAgICAgICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKGNoaWxkMyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgpA
QCAtMTcxNywxMiArMTc0MCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2Rl
KTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RH
ZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTIxNDksNiArMjE3NiwyNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJheU1vZGUg
YXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUt
PmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVk
VHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAg
ICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNo
aWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdlPEtub3du
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAg
ICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisjZWxzZQorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7
CisjZW5kaWYKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAgICAg
ICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjczMiw3ICsyNzgwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGF0
YVZpZXdHZXRJbnQ6CiAgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogewogICAgICAgICAg
ICAgZml4RWRnZTxEYXRhVmlld09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy9pZiAo
bm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9k
ZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy9lbHNlIC8vIEZJWE1FOiBub3Qg
Y2xlYXIgd2hhdCB3ZSBzaG91bGQgZG8gaGVyZSBpZiB0aGUgaW5kZXggaXMgc29tZXRoaW5nIGNy
YXp5CisgICAgICAgICAgICAvLyAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCiAgICAgICAgICAgICAgICAgZml4
RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDMoKSk7CiAKQEAgLTI3NTgsNyArMjgwOSwxMCBA
QCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgRGF0YVZpZXdTZXQ6IHsKICAgICAgICAgICAgIGZp
eEVkZ2U8RGF0YVZpZXdPYmplY3RVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwot
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KSk7CisgICAgICAgICAgICAvL2lmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5zaG91
bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRB
cnJheSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgLy9lbHNlCisgICAgICAgICAgICAvLyAgICBm
aXhFZGdlPEludDUyUmVwVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKQogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8Qm9vbGVhblVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CiAgICAg
ICAgICAgICAKQEAgLTQwOTYsMTQgKzQxNTAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgIG5vZGUtPmNoaWxkMigpID0gRWRnZShzdG9yYWdlKTsKICAgICB9Ci0gICAgCi0gICAg
Tm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2luLCBOb2RlKiBjaGls
ZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKLSAgICB7Ci0gICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBj
aGVja0FycmF5KGFycmF5TW9kZSwgb3JpZ2luLCBjaGlsZCwgbnVsbHB0ciwgbGVuZ3RoTmVlZHNT
dG9yYWdlKTsKLSAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG9y
aWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGNoaWxk
LCBLbm93bkNlbGxVc2UpLCBFZGdlKHN0b3JhZ2UpKTsKLSAgICB9CiAKICAgICB2b2lkIGNvbnZl
cnRUb0hhc0luZGV4ZWRQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAppbmRleCA0ZmFmOTQ5YTc4NjAuLjJk
ODZlYjc1NzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5l
cmF0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlv
bkluZm8uaApAQCAtMzksOCArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGxp
dmUgdmFsdWVzIGR1cmluZyBjb2RlIGdlbmVyYXRpb24uCiAvLyBDYW4gcHJvdmlkZSBpbmZvcm1h
dGlvbiBhcyB0byB3aGV0aGVyIGEgdmFsdWUgaXMgaW4gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBp
ZiBzbyB3aGljaCwKIC8vIHdoZXRoZXIgYSB2YWx1ZSBoYXMgYmVlbiBzcGlsbGVkIHRvIHRoZSBS
ZWdpc3RlckZpbGUsIGFuZCBpZiBzbyBtYXkgYmUgYWJsZSB0byBwcm92aWRlCi0vLyBkZXRhaWxz
IG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5IChhbGwgdmFsdWVzIGFyZSBzcGlsbGVkIGluIGEgYm94
ZWQgZm9ybSwgYnV0IHdlIG1heSBiZQotLy8gYWJsZSB0byB0cmFjayB0aGUgdHlwZSBvZiBib3gp
LCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4s
CisvLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5LCBhbmQgdHJhY2tzIGhvdyBtYW55
IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCiAvLyBzbyB0aGF0IHdlIGtub3cg
d2hlbiB0aGUgdmFsdWUgaXMgZGVhZCBhbmQgdGhlIG1hY2hpbmUgcmVnaXN0ZXJzIGFzc29jaWF0
ZWQgd2l0aCBpdAogLy8gbWF5IGJlIHJlbGVhc2VkLgogY2xhc3MgR2VuZXJhdGlvbkluZm8gewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjQzYjVkMTAxMmUw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTE0OTksNiArMTQ5OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBH
ZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hpcChSZWxhdGlvbnNo
aXAobm9kZSwgbV96ZXJvLCBSZWxhdGlvbnNoaXA6OkdyZWF0ZXJUaGFuLCAtMSkpOwogICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5NzA2
OGE5Yy4uZDEzZDM3ZjAyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAg
ICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9w
ZXJ0eToKICAgICAgICAgY2FzZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZToKICAg
ICAgICAgY2FzZSBBcnJheUluZGV4T2Y6CkBAIC0yMDA0LDYgKzIwMDUsNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1cm4gMjsK
IAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li43
MjY0ZGMyZjU2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTI2MSw4ICsyNjEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0
aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRoaXMgaXMg
b25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMg
dGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRzLiAqLyBc
CisgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAg
ICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRJbnQ1MikgXAogICAgIG1hY3Jv
KEdldFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggNjlhY2Y1MTljMGJhLi5kNWRhMzRhNTE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtOTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIEpTVmFsdWUKICAgICB9CiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAo
b2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaW5kZXgsIHZhbHVlKSkgewotICAgICAgICAgICAg
b2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChv
YmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTE3NSw3ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
YwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5
V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLCBjaGFyKiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFy
cmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgc2l6ZSwgY2hhciogdmVjdG9yKQogewogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTgzLDExICsxODEsMTMg
QEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHIKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQg
bGVuZ3RoIGlzIG5lZ2F0aXZlIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICAKKworICAgIHNpemVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNp
emUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVu
c2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9j
YXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6
ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4o
Vmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSkp
KTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA4LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAo
Vk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTQw
LDcgKzE5NDAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE5ODgsNyArMTk4OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OENsYW1wZWRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJy
YXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9w
dCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMjAyMCw3ICsyMDIwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMy
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAzNiw3ICsyMDM2LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hh
ciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0MzJBcnJheT4oZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAK
LUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIs
NyArMjA1Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0
QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggODQ0YzE5YjMxMTQxLi44MGRm
ODFmZGYwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBA
IC0xMTksMjcgKzExOSwyNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0FycmF5LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKgogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdFbXB0eUFycmF5LCBjaGFyKiwgKFZNKiwgU3RydWN0
dXJlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgQnV0dGVy
Zmx5KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplQW5kSGludCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGludDMyX3QsIEJ1dHRlcmZseSopKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBz
aXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciop
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
VWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjQ3ODcwM2FjMTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJ
bnQ1MkFueSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ug
U3RyaW5nQ2hhckNvZGVBdDoKICAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAg
ICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2Li41YmQzNzdk
YWY4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CkBAIC0zNzMsNiArMzczLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEdl
dEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFy
QXQ6CkBAIC0zODUsNiArMzg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNh
c2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShz
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5Vmll
dykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYjRjOGY4NjBi
NTE0Li44ODJkNzdkMGZmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjQ1LDE2ICszMjQ1LDI4IEBAIEpJVENvbXBpbGVyOjpK
dW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5v
ZGUsIEdQUlJlCiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2ppdC5ncmFwaCgpLnRy
eUdldEZvbGRhYmxlVmlldygKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG1faml0LmdyYXBoKCku
Y2hpbGQobm9kZSwgMCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKICAgICBpZiAodmll
dykgewotICAgICAgICB1aW50MzJfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKKyAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IHZpZXctPmxlbmd0aCgpOwogICAgICAgICBOb2RlKiBpbmRleE5vZGUg
PSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDEpLm5vZGUoKTsKLSAgICAgICAgaWYgKGluZGV4
Tm9kZS0+aXNJbnQzMkNvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwgbGVuZ3Ro
KQorICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0FueUludENvbnN0YW50KCkgJiYgaW5kZXhOb2Rl
LT5hc1VJbnQzMigpIDwgbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIEpJVENvbXBpbGVyOjpK
dW1wKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0
KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2pp
dC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGlu
ZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSk7CisjZWxzZQogICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisjZW5kaWYKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKQpAQCAtNzk2
MCw3ICs3OTcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdl
KEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVudGFn
QXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50YWdB
cnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsK
KyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFn
ZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxpZGF0
ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MzQyLDEyICs4MzU0
LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBu
b2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0Lmxv
YWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3ZlcmZsb3csIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoNjQoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMTExMTEsMTAgKzExMTI5LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0g
bm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFy
cmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKwogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUu
Z3ByKCk7Ci0gICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8vIFRoZSBvcGVyYXRpb25z
IHdlIGNhbGwgb24gdGhlIHNsb3cgcGF0aCBleHBlY3QgYSBDUFVSZWdpc3Rlciwgc28gaW50NjRf
dCBvbiA2NCBiaXQgcGxhdGZvcm1zCisgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2l6ZUdQ
Uiwgc2l6ZUdQUik7CisjZW5kaWYKKworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJl
Z2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworfQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihO
b2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEzMCw2ICsxMTE1OCw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKIAogICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxp
bWl0KSkpOworICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBh
dGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgc3RhdGljX2Fzc2VydChp
c0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CiAg
ICAgCiAgICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKICAgICBtX2ppdC5sc2hp
ZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSwgc2NyYXRj
aEdQUik7CkBAIC0xMTE4NSw5ICsxMTIxNSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVQdHIo
CiAgICAgICAgIHN0b3JhZ2VHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpKTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgc2l6
ZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3RvcmUz
MigKICAgICAgICAgVHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZN
b2RlKCkpKTsKQEAgLTE0MTU5LDYgKzE0MTk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAg
ICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAg
ICBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUobm9kZSk7CisgICAgICAgIGJyZWFr
OworI2VuZGlmCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYXJn
dW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiNjUxNWQ4YjcyMTkuLmFkYzgwNmFh
MjI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEzMDAsOSArMTMwMCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTnVtYmVy
VG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5l
d1N5bWJvbChOb2RlKik7Ci0gICAgCisKKyAgICB2b2lkIGVtaXROZXdUeXBlZEFycmF5V2l0aFNp
emVJblJlZ2lzdGVyKE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSwg
R1BSUmVnIHNpemVHUFIpOwogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShO
b2RlKik7Ci0gICAgCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBp
bGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShOb2RlKik7CisjZW5kaWYKKwogICAgIHZvaWQg
Y29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJs
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogI2lmIFVTRShCSUdJTlQzMikKQEAgLTEzNzMsNiAr
MTM3Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxUaGlzKE5vZGUqKTsK
IAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MihOb2Rl
Kik7CisjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudChOb2RlKik7CkBAIC0xNDM1LDYgKzE0NDIsOSBA
QCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFj
aGVkSWZPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1w
IG91dE9mQm91bmRzKTsKICAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSos
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOwogICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKik7Cisj
ZW5kaWYKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiwgVHlw
ZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBE
YXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwogICAgIHZv
aWQgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHBy
b3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFs
T25GbG9hdFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1i
ZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJy
ZWRGb3JtYXQpPiYgcHJlZml4KTsKQEAgLTI0MjcsNyArMjQzNyw3IEBAIHByaXZhdGU6CiAgICAg
R1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIElu
dDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KKy8vIEdp
dmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxMiwg
bG93IGJpdHMgemVybykuCiBjbGFzcyBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMjQ3NSw3ICsyNDg1LDcgQEAgcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBzdHJp
Y3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2
IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgorLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChp
LmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNTIgYml0cywgaGlnaCAxMiBiaXRzIGFyZSBz
aWduLWV4dGVuZGVkKS4KIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2ZWZiY2VkZGJj
MGEuLjRlZDc1OWYxOTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMTM0LDYgKzIxMzQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFt
YmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50
cyhub2RlLCBwcmVmaXgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OiB7CisgICAgICAg
IEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKICAgICAg
ICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBl
KCk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZh
bE9uSW50VHlwZWRBcnJheShub2RlLCB0eXBlLCBwcmVmaXgpOwpAQCAtMzUzOCw2ICszNTM5LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBh
cnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxl
dGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsK
ICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IGUxMzVmZDUzNDhlOC4uY2U0MDJjYzIwYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjk0LDYgKzI2OTQsODkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0
IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAorI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5
cGVkQXJyYXlUeXBlKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKwor
ICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRB
cnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBz
aXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3Ro
QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9k
ZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUg
PCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVk
IGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVj
dG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7
CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworICAgIEFTU0VSVChiYXNlR1BSICE9
IHZlY3RvckdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7CisgICAgQVNTRVJU
KHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKKworICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRh
dGFHUFI7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBlbXB0eUJ5dGVPZmZzZXQgPSBtX2ppdC5i
cmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZN
b2RlKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxUeXBlZEFycmF5KSk7CisKKyAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wIG51bGxWZWN0b3IgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW1QdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQ
dHIoKSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBkYXRhR1BSKTsKKyAgICBtX2ppdC5j
YWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6SlNWYWx1ZSwgZGF0YUdQUik7CisKKyAgICBj
YWdlVHlwZWRBcnJheVN0b3JhZ2UoYmFzZUdQUiwgdmVjdG9yR1BSKTsKKworICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRP
ZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQUik7CisgICAgLy8gRklYTUU6IFRoaXMgbmVl
ZHMgY2FnaW5nLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU1MTUKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFycmF5
QnVmZmVyR1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkpLCBkYXRhR1BSKTsKKyNpZiBD
UFUoQVJNNjRFKQorICAgIG1faml0LnJlbW92ZUFycmF5UHRyVGFnKGRhdGFHUFIpOworI2VuZGlm
CisKKyAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwgdmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgIG51
bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisgICAgZW1wdHlCeXRlT2Zmc2V0Lmxpbmso
Jm1faml0KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZlY3RvckdQ
Uik7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyNpZiAhQ1BVKEFSTTY0RSkKKyAgICBBU1NF
UlQoIUpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpOworICAgIG51bGxWZWN0b3Iu
bGluaygmbV9qaXQpOworI2VuZGlmCisKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdCh2ZWN0b3JHUFIs
IG5vZGUpOworfQorI2VuZGlmCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC00Mzc1LDYgKzQ0NTgs
MTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aEFzSW50NTI6CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAg
ICAgY29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtNDQ5Myw2ICs0NTg0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUp
OworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAg
ICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTgz
LDcgKzU2ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBp
ZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1t
MzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0
MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCks
IG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNTc4NCw3ICs1ODg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dv
cmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAg
ICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOwot
ICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAgICAgICBtX2pp
dC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9qaXQuYnJh
bmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uMWUxNDAwNTA0Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAg
LTI3OSwxMCArMjc5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZh
bDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgICAgICAg
ICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFBy
b3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1v
dkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgpAQCAtMzU5LDYg
KzM2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAg
ICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoK
ICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0
OGM5ZmFkNjcuLmM5OTBkNTljYmE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3Jp
dGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0zOTEsNiArMzkyLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbml0aWFsaXpl
RW50cnlwb2ludEFyZ3VtZW50czoKICAgICBjYXNlIENQVUludHJpbnNpYzoKICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdp
dGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDQzZDI2ZTgzZTk2OC4uMTBlZDk2ZTk3YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDI1LDYgKzEwMjUsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRBcnJheUxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKKyNl
bmRpZgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRWZWN0b3JMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgwLDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAg
ICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MigpOworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdl
dFByb3RvdHlwZU9mOgogICAgICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTQ4MjgsOSArNDg0MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBtX291dC5pc051bGwobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X3ZlY3RvcikpKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCgpCisgICAgTFZhbHVlIGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdENh
c3RpbmdSZXN1bHQoKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOyAgICAKKyAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIHdhc3RlZnVsQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGwgPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtNDg0Niw3ICs0ODU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh3YXN0ZWZ1bENhc2UsIG5vdE51bGwpOwogCiAg
ICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBtX291dC5sb2FkUHRyKGJhc2VQdHIsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFs
KHZlY3RvciwgbV9vdXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQ
dHIoKSkpLCAKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3RvciwgbV9vdXQu
Y29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLAogICAgICAg
ICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3ROdWxsKSk7CiAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm90TnVsbCwgY29udGludWF0aW9uKTsKQEAgLTQ4NjYsOSArNDg3OCwy
MiBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgIHNldElu
dDMyKG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxsVmVjdG9y
T3V0LCB3YXN0ZWZ1bE91dCkpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShwb2ludGVyVHlw
ZSgpLCBudWxsVmVjdG9yT3V0LCB3YXN0ZWZ1bE91dCk7CiAgICAgfQogCisgICAgdm9pZCBjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdENhc3RpbmdSZXN1bHQoKTsKKyAg
ICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIocmVzdWx0KSk7CisgICAgfQorI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldFN0cmlj
dEludDUyKHJlc3VsdCk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVHZXRQcm90
b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1
MDc5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSkgewot
ICAgICAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2Fk
MzJOb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJm
bG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChsZW5ndGgsIG1fb3V0
LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAg
ICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYg
KzUwOTAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGls
ZUdldEFycmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBzZXRT
dHJpY3RJbnQ1MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTgxNjksOTggKzgy
MDIsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5
VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291
dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9T
dG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0gICAgICAgICAgICBt
X291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQuY29u
c3RJbnQzMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAgICAg
ICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hD
YXNlLCBzbG93Q2FzZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAgICAg
ICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50
MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAoZWxl
bWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVTaXpl
ID0gbV9vdXQuYml0QW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUs
IG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCku
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKLSAg
ICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNs
b3dDYXNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAgICAg
ICAgICAgICBzdG9yYWdlLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAgICAg
ICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5j
b25zdEludFB0cigzKSkpLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAgICAg
ICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShBUk02
NEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291
dC56ZXJvRXh0UHRyKHNpemUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0
aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAgICAg
ICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6OlZh
bHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFy
YW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQu
dGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0gICAg
ICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQuc2lnbkV4
dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7CiAKLSAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAgICAg
ICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRj
aCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUp
IFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAgZmFz
dFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVX
KFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAg
ICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRW
YWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291dC5z
dG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZh
bHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBtX291
dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFs
dWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJl
c3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2Fz
ZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291
dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgICAg
ICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAg
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5
cGVkQXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAg
ICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAg
ICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCi0gICAgICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9j
YXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRp
b25zWzFdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJd
LmRpcmVjdEdQUigpKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHNpemUs
IHN0b3JhZ2VWYWx1ZSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd1N0cmljdEludDUyKG1f
bm9kZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBl
ZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBz
aXplKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogCkBAIC04Mjc3LDcgKzgyMzMsMTAyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2b2lk
IGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUoVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlLCBMVmFsdWUgc2l6ZTY0Qml0cykKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxs
RW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2Ug
PSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNo
KAorICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQ2NChK
U0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAorICAgICAgICAgICAgcmFyZWx5KHNs
b3dDYXNlKSwgdXN1YWxseShzbWFsbEVub3VnaENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwor
ICAgICAgICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRo
YXQgdGhlIHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KGlz
SW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKyAg
ICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5jYXN0VG9JbnQzMihzaXplNjRCaXRzKTsKKworICAg
ICAgICBMVmFsdWUgYnl0ZVNpemUgPQorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9F
eHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5
cGUpKSk7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7Cisg
ICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKKyAgICAgICAgICAgICAgICBtX291
dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKKyAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7CisgICAgICAgIH0K
KworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7CisgICAgICAg
IExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsK
KworICAgICAgICBzcGxhdFdvcmRzKAorICAgICAgICAgICAgc3RvcmFnZSwKKyAgICAgICAgICAg
IG1fb3V0LmludDMyWmVybywKKyAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxT
aHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMpKSksCisgICAgICAgICAgICBtX291dC5p
bnQ2NFplcm8sCisgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKKwor
I2lmIENQVShBUk02NEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0g
bV9vdXQuemVyb0V4dFB0cihzaXplKTsKKyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0
aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKKyAgICAgICAgICAg
IGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3JhZ2UpOworICAgICAgICAgICAg
YXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6
U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0
b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBh
cmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1sy
XS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
c3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisKKyAgICAg
ICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAodHlw
ZWRBcnJheVR5cGUpIHsKKyNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKKyAg
ICAgICAgY2FzZSBUeXBlICMjIG5hbWU6IFwKKyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9
IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJa
ZXJvLCBzbG93Q2FzZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBGT1JfRUFDSF9U
WVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNF
KQorI3VuZGVmIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRQorICAgICAgICBjYXNlIFR5cGVEYXRhVmll
dzoKKyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZp
ZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX291
dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfdmVjdG9yKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFs
dWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgbV9vdXQuc3Rv
cmUzMihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgp
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RS
ZXN1bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVl
IHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVT
dG9yYWdlKTsKKworICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgICAgICBMVmFsdWUg
c2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgWz0sICZ2bV0gKGNv
bnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6
R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJh
dG9yKHZtLAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNp
emVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9i
YWxPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgc2l6ZTY0Qml0cywgc3RvcmFnZVZhbHVlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CiAgICAg
ICAgIExWYWx1ZSBvYmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTU1OTEs
NyArMTU2NDIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9u
b2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVy
b0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2
NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsK
ICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNr
ID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXpl
IC0gMSkpOwpAQCAtMTU3MzQsNyArMTU3ODUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFW
aWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUg
bGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmll
dywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGxl
bmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56
ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAg
ICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJ
bnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTcyMzYsNyArMTcyODcsNyBAQCBwcml2YXRl
OgogICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7
CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmlt
aXRpdmUpIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQzMihiYXNl
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgTFZh
bHVlIHNpemUgPSBtX291dC5sb2FkNjQoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB1bnRhZ0FycmF5UHRyKHRhZ2dlZFB0ciwg
c2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKaW5kZXggYTk0MjAwOTNmNTI5Li5lZDhmZjczZTFhM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMzI5LDYgKzMyOSw3IEBA
IHB1YmxpYzoKICAgICBMVmFsdWUgbm9uTmVnYXRpdmUzMihMVmFsdWUgbG9hZEluc3RydWN0aW9u
KSB7IHJldHVybiBsb2FkSW5zdHJ1Y3Rpb247IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRp
dmUoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsgfQogICAg
IExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFw
JiBmaWVsZCkgeyByZXR1cm4gbG9hZDMyKGJhc2UsIGZpZWxkKTsgfQorICAgIExWYWx1ZSBsb2Fk
NjROb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyBy
ZXR1cm4gbG9hZDY0KGJhc2UsIGZpZWxkKTsgfQogCiAgICAgTFZhbHVlIGVxdWFsKExWYWx1ZSwg
TFZhbHVlKTsKICAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVlLCBMVmFsdWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKaW5kZXggOTRmN2FmZTEx
YTkxLi43YTU2MDc1NjVkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SW50cmluc2ljRW1pdHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRy
aW5zaWNFbWl0dGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDIzICs3OSwzMiBAQCB2b2lkIEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZQogCiAgICAgc3dpdGNoIChpbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUxl
bmd0aEludHJpbnNpYzogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5sb2FkNjQo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1
ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vs
c2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKICAg
ICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAg
IHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgVHlw
ZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlw
ZSA9IHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwotCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHZhbHVlR1BSKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkKKyAgICAgICAg
ICAgIGppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1
ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNj
cmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAgICAgICBpZiAoZWxlbWVudFNpemUo
dHlwZSkgPiAxKSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBz
aW5jZSB3ZSBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dz
IGFuIGludDMyLgotICAgICAgICAgICAgaml0LmxzaGlmdDMyKHZhbHVlR1BSLCBJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2Ug
YSBiaXRzaGlmdCBoZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0Zm9ybXMgVHlwZWRBcnJheXMgY2Fu
bm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KKyAgICAgICAgICAg
IGppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQ
Uik7CiAgICAgICAgIH0KLQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVn
cyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTI2LDggKzEzNSwxMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6
OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAgICAg
ICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUik7CiAgICAgICAgIAog
ICAgICAgICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQ
Uiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVH
UFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggZDdkZjdjYjhlODc1Li41ZDZiMGE4NWE0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtOTM3LDEwICs5MzcsOCBAQCBzdGF0
aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgSlNWYWx1ZSBzdQogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAg
ICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0
SW5kZXhRdWlja2x5KGksIHZhbHVlKSkgewotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5k
ZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJ
bmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCBhcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkK
ICAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CkBAIC0yMzQx
LDE3ICsyMzM5LDE3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlH
ZXRBc0ludDMyKCkpIHsKLSAgICAgICAgaW50MzJfdCBpID0gKmluZGV4OworICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4
KCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGlzSlNTdHJp
bmcoYmFzZVZhbHVlKSkgewotICAgICAgICAgICAgaWYgKGkgPj0gMCAmJiBhc1N0cmluZyhiYXNl
VmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFs
dWUpLT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaSkpOwog
ICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkKICAgICAgICAgICAgICAgICBhcnJheVByb2Zp
bGUtPnNldE91dE9mQm91bmRzKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFs
dWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KHN0YXRpY19j
YXN0PHVpbnQzMl90PihpKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5k
ZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50
cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBm
YWxzZTsKIApAQCAtMjM3MSw4ICsyMzY5LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1
ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpID49IDApCi0gICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAoc3Vi
c2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkK
ICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNDFj
NzFiNjAwNDRlLi5lNzZkYWRhMGQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsxNDksMTIgQEAKICNk
ZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDAKKyNlbmRpZgorCiAj
aWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCA0MmVmYjcxYzRhNjQuLmEzODg0MjYzYjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ2LDggKzEwNDYsOCBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAg
IGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtp
bmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTY5LDE0ICsxMTY5LDEzIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIAogICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1Vp
bnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYg
KGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4
UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNr
bHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghb2Jq
ZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUlu
ZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAg
ICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYzM1ZTQ1NDQxMTA2Li41
ZWRlYTgzYjA2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNWQUxVRTY0CiAg
ICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJ
RFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQKIAoraWYg
TEFSR0VfVFlQRURfQVJSQVlTCisgICAgY29uc3QgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0g
Y29uc3RleHByIEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgKK2VuZAor
CiBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IGNvbnN0ZXhwciBtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbAogCiBpZiBYODZfNjQgb3IgWDg2XzY0X1dJTiBvciBBUk02
NCBvciBBUk02NEUgb3IgUklTQ1Y2NApAQCAtMTMwMCw3ICsxMzA0LDcgQEAgbWFjcm8gYXJyYXlQ
cm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCiAg
ICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlw
ZQogZW5kCiAKLW1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50
R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzbG93UGF0aCkKK21hY3JvIGdldEJ5VmFs
VHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdl
dEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBj
aGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUg
Ym9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQy
CiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMxMSwxMyArMTMxNSwyMiBA
QCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFs
LCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBjb25zdCBs
ZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9hZGkgSlNB
cnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlhZXEgaW5k
ZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNBcnJheUJ1ZmZlclZpZXc6Om1f
bGVuZ3RoW2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1Bh
dGgKKyAgICBlbHNpZiBKU1ZBTFVFNjQKKyAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJl
IGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUg
bm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICBicWFlcSBpbmRleCwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAogICAgIGVsc2UKICAgICAgICAg
IyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMg
YnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgogICAg
ICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93
UGF0aAogICAgIGVuZAogCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIGJxYmVx
IGluZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFsbFR5cGVkQXJyYXkKKyAgICAg
ICAgc2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6CisgICAgZW5kCisKICAg
ICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFzZV0sIHQzCiAgICAgY2FnZWRQ
cmltaXRpdmUodDMsIGxlbmd0aCwgYmFzZSwgc2NyYXRjaCkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRl
eCBmM2Q5N2NhNGY3Y2IuLjM2MzIzNzE0MWFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE2NjYs
NyArMTY2Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAu
b3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwg
dDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgbWFjcm8gKCkgZW5kLCAub3BHZXRCeVZhbFNsb3cpCiAKIC5v
cEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlf
dmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQppbmRleCBmYmRiYTY4ZTBmMzAuLjgyMzU3ZmFjMzMzNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTE3MTMsNiArMTcxMywxNiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92
YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAg
ICBmaW5pc2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZW5kCiAKKyAgICBpZiBM
QVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAg
ICAgICAgICAgIHN0b3JlYiAxLCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUu
bV9tYXlCZUxhcmdlVHlwZWRBcnJheVt0NV0KKyAgICAgICAgZW5kCisgICAgZWxzZQorICAgICAg
ICBtYWNybyBzZXRMYXJnZVR5cGVkQXJyYXkoKQorICAgICAgICAgICAgY3Jhc2goKQorICAgICAg
ICBlbmQKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKIAogICAgIGdldChtX2Jhc2Us
IHQyKQpAQCAtMTc2Myw3ICsxNzczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBk
aXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxU
eXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFs
LCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNo
SW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIC5v
cEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFlLi40OTdmNDllOGExZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3
ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnByaW1p
dGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCkuY29w
eVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZl
ckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIEFycmF5QnVmZmVy
RGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXpl
KQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAgLCBtX3NpemVJ
bkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5
QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQogICAgIG90aGVyLnRy
YW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNv
bnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemVJ
bkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKIHsKQEAgLTEwOSwyMyAr
MTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQogICAgIG1fc2l6ZUlu
Qnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0
aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUo
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0
aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3QgYWxsb3cgMzEtYml0IG92ZXJmbG93
IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1bnNp
Z25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAg
aWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSB8fCB0b3RhbFNp
emUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVja2VkU2l6ZSBzaXplSW5CeXRlcyA9
IG51bUVsZW1lbnRzOworICAgIHNpemVJbkJ5dGVzICo9IGVsZW1lbnRCeXRlU2l6ZTsKKyAgICBp
ZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJbkJ5dGVzLnZhbHVlKCkgPiBN
QVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG51
bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudEJ5dGVTaXplKTsKLSAgICBz
aXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlczsKKworICAgIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZSA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgaWYgKCFhbGxvY2F0aW9uU2l6ZSkK
ICAgICAgICAgYWxsb2NhdGlvblNpemUgPSAxOyAvLyBNYWtlIHN1cmUgbWFsbG9jIGFjdHVhbGx5
IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11Y2guIFdlIHVzZSBudWxsIHRvIG1l
YW4gdGhhdCB0aGUgYnVmZmVyIGlzIGRldGFjaGVkLgogCiAgICAgdm9pZCogZGF0YSA9IEdpZ2Fj
YWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYWxsb2NhdGlvblNpemUpOwotICAg
IG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzKTsKKyAgICBtX2RhdGEgPSBEYXRh
VHlwZShkYXRhLCBzaXplSW5CeXRlcy52YWx1ZSgpKTsKICAgICBpZiAoIWRhdGEpIHsKICAgICAg
ICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHZvaWQgQXJy
YXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlCiAgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKICAgICAg
ICAgbWVtc2V0KGRhdGEsIDAsIGFsbG9jYXRpb25TaXplKTsKIAotICAgIG1fc2l6ZUluQnl0ZXMg
PSBzaXplSW5CeXRlczsKKyAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0la
RSk7CiAgICAgbV9kZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVz
dHJ1Y3RvcigpOwogfQpAQCAtMTc4LDcgKzE3Niw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50
czo6c2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQogICAgIFJFTEVBU0VfQVNT
RVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0KIAot
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7
CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0xOTEsNyArMTg5LDcgQEAgUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gQXJy
YXlCdWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAK
LVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBhdXRvIGJ1
ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgpOwogICAgIGlmICghYnVmZmVyKQpA
QCAtMjA4LDcgKzIwNiw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShB
cnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyBDdXJyZW50IHRoaXMgaXMgb25seSB1
c2VkIGZyb206CiAvLyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PD46OnNsb3dEb3duQW5kV2Fz
dGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1vcnkgc2hvdWxkIGhhdmUgYWxyZWFk
eSBjb21lCiAvLyAgIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRW5hYmxl
ZCgpIHx8IChHaWdhY2FnZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNhZ2U6OmNvbnRhaW5zKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5ndGggLSAxKSkpOwogICAg
IHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXI6OnBy
aW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIyMCw3ICsyMTgsNyBAQCBSZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVu
c2lnbmVkIGJ5dGVMZW5ndAogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdlIGNvdWxkIGludHJvZHVj
ZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUgdW5jYWdlZCBhbmQgZ2V0
IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3NlbWJseS4gV2FzbSBzaG91
bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikK
IHsKICAgICBpZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKTsK
QEAgLTIyOSw3ICsyMjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVG
cm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbgogICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4g
dHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVu
dHM6Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzOSw3ICsyMzcsNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJl
dHVybiB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1S
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAg
ICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0
ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CkBA
IC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZwogICAgIHJldHVybiBj
cmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRlbnRzKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKIH0K
IAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1l
bnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXpl
KTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQor
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChz
aXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1
cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Q
b2xpY3kgcG9saWN5KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRz
LCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yNjYsMTUg
KzI2NCwxNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlUwogICAgIHJldHVybiBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
SW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3Vy
Y2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpj
cmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQq
IHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFieXRlTGVuZ3RoIHx8
IHNvdXJjZSk7CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdFJlZigqbmV3IEFycmF5QnVmZmVyKFdU
Rk1vdmUoY29udGVudHMpKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5
dGVMZW5ndGgpOworICAgIGlmIChieXRlTGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChzb3VyY2Up
OworICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7Cisg
ICAgfQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNv
bnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQXJyYXlCdWZmZXI6OkFycmF5QnVm
ZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIHsKIH0KIAotdW5zaWduZWQgQXJy
YXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJp
Z2h0KQorc2l6ZV90IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVm
dCwgc2l6ZV90IHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0KTsKICAgICBpZiAo
eCA8IGxlZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1w
VmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQogICAgIHJldHVy
biB4OwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgp
IGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25z
dAogewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CisgICAgc2l6
ZV90IGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CiAgICAgaWYgKGluZGV4IDwgMCkKICAg
ICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7CiAgICAgcmV0dXJuIGNsYW1wVmFs
dWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3QKICAgICBy
ZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFt
cGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVnaW4s
IHNpemVfdCBlbmQpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/
IGVuZCAtIGJlZ2luIDogMDsKKyAgICBzaXplX3Qgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAt
IGJlZ2luIDogMDsKICAgICBhdXRvIHJlc3VsdCA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7CiAgICAgaWYgKHJl
c3VsdCkKICAgICAgICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9kZShzaGFyaW5nTW9kZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IDY4ZmY5MGUx
M2ViYS4uODlhMGI5YzhhOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lm
IENQVShBRERSRVNTNjQpCisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAz
MikKKyNlbHNlCisvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNpemVfdCB0byBzdG9yZSB0aGUg
c2l6ZSBpbiBieXRlcyBvZiBhcnJheSBidWZmZXJzLCB3ZSBjYW5ub3Qgc3VwcG9ydCA0R0Igb24g
MzItYml0IHBsYXRmb3Jtcy4KKy8vIE5vdGUgdGhhdCBzdG9yaW5nIHRoZSBzaXplIGluIGEgdWlu
dDY0X3Qgd291bGQgYmUgcXVpdGUgbWVzc3kgb24gMzItYml0cyBhcyB0aGUgSklUIGhhdmUgdG8g
YmUgYWJsZSB0byBtYW5pcHVsYXRlIGl0LgorLy8gU28gd2UgYXJlIHN0aWNraW5nIHdpdGggMkdC
LiBJdCBzaG91bGQgaW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRvIHN1cHBvcnQgdXAgdG8gKDRHQiAt
IDFCKSBpZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAweDdm
ZmZmZmZmdQorI2VuZGlmCiAKIGNsYXNzIFZNOwogY2xhc3MgQXJyYXlCdWZmZXI7CkBAIC01MSw3
ICs1OCw3IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uID0gUGFj
a2VkUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+CiAKIGNsYXNzIFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZm
ZXJDb250ZW50cz4gewogcHVibGljOgotICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9p
ZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7
CisgICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3QsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIH5TaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKCk7CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRN
YXlCZU51bGwobV9zaXplSW5CeXRlcyk7IH0KQEAgLTYwLDE0ICs2NywxNCBAQCBwcml2YXRlOgog
ICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwg
dGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5C
eXRlczsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVy
Q29udGVudHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMp
OwogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVu
c2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVf
dCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRl
bnRzJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMmIG9wZXJh
dG9yPShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpAQCAtNzksNyArODYsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAg
ICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUlu
Qnl0ZXMoKSk7IH0KLSAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZUluQnl0ZXM7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBt
X3NpemVJbkJ5dGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkOyB9CiAgICAgCkBAIC05NCw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICBE
b250SW5pdGlhbGl6ZQogICAgIH07CiAKLSAgICB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5
KTsKKyAgICB2b2lkIHRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgCiAgICAgdm9pZCBtYWtl
U2hhcmVkKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsKQEAg
LTEwNSwyOCArMTEyLDI4IEBAIHByaXZhdGU6CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBh
Y2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICBQYWNr
ZWRSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7Ci0gICAgdW5zaWdu
ZWQgbV9zaXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNz
IEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7
CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyJik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6
ZV90IGJ5dGVMZW5ndGgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0
YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3Qg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCiAgICAgLy8gT25seSBmb3IgdXNlIGJ5
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIAogICAgIGlubGluZSB2
b2lkKiBkYXRhKCk7CiAgICAgaW5saW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBp
bmxpbmUgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIGlubGluZSBzaXplX3QgYnl0
ZUxlbmd0aCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQg
c2V0U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CkBAIC0xMzcsNyArMTQ0LDcg
QEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBz
bGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRl
eCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVn
aW4sIHNpemVfdCBlbmQpIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAg
IGlubGluZSB2b2lkIHVucGluKCk7CkBAIC0xNjEsMTIgKzE2OCwxMiBAQCBwdWJsaWM6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJp
bWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKLSAg
ICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRl
bnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1
ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwog
ICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgaW5saW5lIHVuc2ln
bmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKLSAgICBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0
KTsKKyAgICBpbmxpbmUgc2l6ZV90IGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKKyAg
ICBzdGF0aWMgaW5saW5lIHNpemVfdCBjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwg
c2l6ZV90IHJpZ2h0KTsKIAogICAgIHZvaWQgbm90aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTE5
Miw3ICsxOTksNyBAQCBjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0
ZUxlbmd0aCgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2NvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CiB9CkBAIC0yMDUsNyArMjEy
LDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVm
ZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBw
cm9iYWJseSB3YW50IHRvIHNjYWxlIHRoaXMgYnkgdGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29t
ZXRoaW5nLgotICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6
ZV90PihieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0
ZUxlbmd0aCgpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNzY4ZmVhOTA5
YmFiLi40NzM3MjI3NDUzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxOCArMjUsMTcgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQXJyYXlCdWZmZXJWaWV3OjpBcnJh
eUJ1ZmZlclZpZXcoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgICAg
IDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9pc0RldGFjaGFibGUodHJ1
ZSkKICAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkKICAgICAgICAgLCBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgQ3Jhc2hPbk92ZXJm
bG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CisgICAgQ2hlY2tlZDxzaXplX3QsIENyYXNoT25PdmVy
Zmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAgIGxlbmd0aCArPSBieXRlTGVuZ3RoOwogICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obGVuZ3RoIDw9IG1fYnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChtX2J1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggN2UzOTYwNzc3OGE5Li5l
NzFiMDYxZmU3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBl
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NywxNCArNzgsMTQgQEAgcHVibGljOgogCiAg
ICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VBZGRyZXNzKCk7IH0KIAotICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHNpemVfdCBieXRlT2Zmc2V0KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBieXRl
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc2V0RGV0YWNoYWJsZShib29sKTsKICAgICBib29sIGlzRGV0YWNoYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxlOyB9CkBAIC05MiwxOSArOTMsMTggQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOwog
CiAgICAgLy8gSGVscGVyIHRvIHZlcmlmeSBieXRlIG9mZnNldCBpcyBzaXplIGFsaWduZWQuCi0g
ICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudCh1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25t
ZW50KHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKHNpemUgLSAxKSk7CisgICAgICAgIHJldHVybiAhKGJ5
dGVPZmZzZXQgJiAoZWxlbWVudFNpemUgLSAxKSk7CiAgICAgfQogCi0gICAgLy8gSGVscGVyIHRv
IHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCi0gICAg
Ly8gd2l0aGluIHJhbmdlLgotICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNv
bnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51
bUVsZW1lbnRzLCBzaXplX3Qgc2l6ZSkKKyAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBn
aXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMgd2l0aGluIHJhbmdlLgorICAgIHN0
YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6
ZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0
aCgpOworICAgICAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAg
ICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAt
IGJ5dGVPZmZzZXQpIC8gc2l6ZTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0VsZW1lbnRzID0g
KGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIGVsZW1lbnRTaXplOwogICAgICAgICBpZiAobnVt
RWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMgKzExMyw0OCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFs
T2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFy
cmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVy
VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0
ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVu
c2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJW
aWV3Kiwgc2l6ZV90IGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBs
KGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9m
ZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBi
b29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgs
IHNpemVfdCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpOwog
Ci0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXpl
X3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVP
ZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJy
YXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsKKyAg
ICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgcmFu
Z2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxl
bWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGlu
IG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwKLSAgICAgICAgdW5z
aWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAgICAg
ICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIHNpemVfdCBhcnJheUJ5dGVPZmZzZXQs
CisgICAgICAgIHNpemVfdCAqb2Zmc2V0LAorICAgICAgICBzaXplX3QgKm51bUVsZW1lbnRzKQog
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRl
T2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgc2l6ZV90IG1heE9mZnNldCA9IChzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihU
KTsKICAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZz
ZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlC
eXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6
bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1h
aW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2Yo
VCk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiBhZGp1c3RlZE9mZnNldCA9ICpvZmZzZXQ7Cisg
ICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAgICAgICAgYWRqdXN0ZWRPZmZz
ZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRqdXN0ZWRPZmZzZXQuaGFzT3Zl
cmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBidWZmZXIuYnl0ZUxlbmd0aCgp
KQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNldC52YWx1ZSgpOworICAgICAg
ICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZz
ZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihyZW1haW5p
bmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBtX2J5dGVP
ZmZzZXQgOiAzMTsKKyNpZiBDUFUoSlNWQUxVRTY0KQorICAgIHVpbnQ2NF90IG1fYnl0ZU9mZnNl
dCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNlbmRpZgog
ICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVkIG1fYnl0ZUxlbmd0aDsK
KyAgICBzaXplX3QgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNpbmcgQmFzZUFkZHJlc3MgPSBDYWdl
ZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgLy8gVGhp
cyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIncyBzdG9yYWdlLCBwbHVzIHRoZSBi
eXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBs
KEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5
QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCBzaXplX3QgYnl0ZU9m
ZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKLSAgICAg
ICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFs
bGVyVGhhbihieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRlTGVuZ3RoKCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2Ug
KyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUlt
cGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRl
T2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlm
IChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRh
Qnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5
dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQg
b3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNldCwgZGF0YUJ5
dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAK
ICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkp
OwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1w
bCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRl
T2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0
YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFC
eXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0
IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGRhdGFC
eXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQog
CiAgICAgY29uc3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
YXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNl
dCwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVm
ZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VC
eXRlTGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQg
PiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwg
Ynl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93
CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIHJhbmdlQnl0ZUxlbmd0aCwg
Ynl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwogICAg
IHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAg
ICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5k
TGVuZ3RoKAotICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1bnNp
Z25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQotewotICAgIGlmIChzdGFydCA8IDApCi0g
ICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBz
dGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCArPSBhcnJheVNpemU7Ci0g
ICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAgICBlbmQgPSBhcnJheVNpemU7Ci0gICAg
aWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBzdGFydDsKLSAgICAqb2Zmc2V0ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIHVzaW5nIEpT
Qzo6QXJyYXlCdWZmZXJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
dG9taWNzT2JqZWN0LmNwcAppbmRleCA2ODgzYTE3YzQ3MmQuLmQzNjI0NTBhMmY4YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKQEAgLTEy
MCw4ICsxMjAsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmFsaWRhdGVBdG9taWNBY2Nlc3MoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU0FycgogICAgICAgICBhY2Nlc3NJbmRl
eCA9IGFjY2Vzc0luZGV4VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJhY2Nlc3NJbmRleCIp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKICAgICB9Ci0gICAgCi0g
ICAgQVNTRVJUKHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSU5UX01BWCkpOworCiAgICAgaWYgKGFjY2Vzc0luZGV4ID49IHR5cGVkQXJyYXlWaWV3LT5s
ZW5ndGgoKSkgewogICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkFjY2VzcyBpbmRleCBvdXQgb2YgYm91bmRzIGZvciBhdG9taWMgYWNjZXNzLiJfcyk7CiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3Bw
CmluZGV4IGRjYzJmNTA2NGFmMi4uZmJjOTg0N2QyZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIwICszMiwyMCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6
RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBieXRlTGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVy
KSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmll
dzo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwg
Ynl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVm
ZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVM
ZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgYnl0ZUxlbmd0
aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCmluZGV4IGRh
MDZiNGJiMjE0NC4uMzQwMjY1NDEwMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBE
YXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0YXRpYyBS
ZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogICAgIAogICAgIFR5
cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBn
ZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVs
bHB0cikKKyAgICBUIGdldChzaXplX3Qgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAg
ICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVz
ID0gbnVsbHB0cikKKyAgICBUIHJlYWQoc2l6ZV90JiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFu
LCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgVCByZXN1bHQgPSB0aGlz
LT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7CiAgICAgICAg
IGlmICghc3RhdHVzIHx8ICpzdGF0dXMpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBv
ZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRy
KQorICAgIHZvaWQgc2V0KHNpemVfdCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFu
LCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewog
ICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAt
ODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERhdGFWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uZjQ5MzcwZmNhYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywxNSAr
MzMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xh
c3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBj
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShzaXplX3Qg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgCi0gICAgc3Rh
dGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOwor
ICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHNpemVfdCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
Kj4oYmFzZUFkZHJlc3MoKSk7IH0KICAgICAKQEAgLTY1LDI2ICs2NSwyNiBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsgemVyb1JhbmdlKDAsIGxlbmd0aCgpKTsgfQogICAg
IAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIHJldHVybiBieXRlTGVuZ3RoKCkgLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbShzaXplX3QgaW5k
ZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuIGRhdGEoKVtpbmRleF07
CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUp
IGNvbnN0CisgICAgdm9pZCBzZXQoc2l6ZV90IGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRo
aXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZl
RnJvbURvdWJsZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXROYXRpdmUodW5zaWduZWQg
aW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXRO
YXRpdmUoc2l6ZV90IGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAog
ICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0
aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1ZTsKQEAgLTEwMCwx
NiArMTAwLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHVuc2lnbmVk
IG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25zdAogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0IDw9IGxlbmd0aAot
ICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAvLyBj
aGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0KTsK
KyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW4ob2Zmc2V0LCBjb3VudCwgdGhpcy0+bGVu
Z3RoKCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBz
dWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0gICAgCiAgICAgVHlwZWRB
cnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gQWRh
cHRvcjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5
QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7
CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBHZW5lcmlj
VHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uNTQyOTgwYWU2NGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IEFycmF5
QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAg
ICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgY29uc3QgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRv
IHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVy
KSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAt
NjQsNyArNjUsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0LDcgKzc1LDcgQEAgUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0
cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5
Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0g
dHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04NSw3ICs4Niw3IEBAIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcg
QEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsK
QEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRl
KFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwot
ICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFT
U0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlw
ZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4g
dHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLmYwNzQwY2I2
ZDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLAorICAg
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBlbGVt
ZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1vZGUgbW9kZSkKICAgICA6IG1fc3RydWN0dXJl
KG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC04MSwxOCArODEsMTggQEAgSlNB
cnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQo
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBEb24ndCBhbGxvdyBhIHR5cGVkIGFy
cmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6ZSkKKyAgICBDaGVja2VkPHNpemVfdD4gc2l6
ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9IGVsZW1lbnRTaXplOworICAgIGlmIChzaXplID4gTUFY
X0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHNp
emUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVs
ZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxv
YyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3RoKTsKKworICAgIG1fdmVjdG9yID0g
VmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUu
dmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3RvcikKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBtZW1zZXQodmVjdG9yKCksIDAsIHNp
emUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUpOworICAgIHZtLmhlYXAucmVwb3J0
RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsKICAgICAKICAgICBtX3N0cnVjdHVy
ZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6ZVR5cGVkQXJyYXk7CkBAIC0xMDAs
NyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0
OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxl
bmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQsNyArMTE0LDcgQEAg
SlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRl
eHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rp
b25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
LCBEYXRhVmlld1RhZykKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBE
YXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUpCkBAIC0yMzgsOSArMjM4LDE2IEBA
IHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpTVHlwZSB0eXBlKQogICAgIHJldHVy
biBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5cGVdOwogfQogCi11bnNpZ25lZCBK
U0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitzaXplX3QgSlNBcnJheUJ1ZmZl
clZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgQ2hl
Y2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6
ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKKyNlbHNlCisgICAgLy8gVGhl
IGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVja2VkIGluIHRoZSBjb25zdHJ1Y3Rv
ciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNoZWNrIHdoZW4gYXNzZXJ0cyBhcmUg
ZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVtZW50U2l6ZSh0eXBlKCkpOworI2Vu
ZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0
ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJW
aWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsK
LSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOworICAgIHNpemVf
dCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAgICAgc3dpdGNoIChtX21vZGUp
IHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0zMTYsNyArMzIzLDcgQEAgUmVmUHRy
PEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgp
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHVuc2lnbmVk
IGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAg
IHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlw
ZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uZGE2ZGQwYmQ3NTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6
ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmYXN0U2l6ZUxpbWl0
ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxW
ZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVp
bnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIHNpemVfdCBz
aXplT2Yoc2l6ZV90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOwor
ICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihz
aXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYsMjUg
KzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIEluaXRpYWxp
emF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAgICAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSos
IHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9k
ZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHNpemVfdCBlbGVtZW50U2l6ZSwg
SW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAgICAgLy8gVGhp
cyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0J3MgdXNlZCBi
eSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVj
dHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAgQ29uc3RydWN0
aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwogICAg
ICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dCgKICAg
ICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAg
ICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgICAgICAKICAgICAgICAg
ZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFn
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIERhdGFW
aWV3VGFnKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1
cm4gIW1fc3RydWN0dXJlOyB9CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9CiAgICAgICAgIHZvaWQqIHZlY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChtX2xlbmd0aCk7IH0KLSAgICAg
ICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAg
c2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgIFR5cGVk
QXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICAgICAgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVybiBtX2J1dHRlcmZseTsgfQogICAgICAgICAK
QEAgLTE2Miw3ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1
Y3R1cmU7CiAgICAgICAgIHVzaW5nIFZlY3RvclR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJp
bWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7
Ci0gICAgICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgICAgICBzaXplX3QgbV9sZW5ndGg7CiAg
ICAgICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKICAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRl
cmZseTsKICAgICB9OwpAQCAtMTkzLDggKzE5NSw4IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgdW5z
aWduZWQgYnl0ZU9mZnNldCgpOwogICAgIGlubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBi
eXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAg
ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBzaXplX3Qg
Ynl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAg
LTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVm
ZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3RvclB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJf
dCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9sZW5ndGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9t
b2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi45OTIyZmZkYjU3YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjks
MTMgKzY5LDE1IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJ
bnQzMigpOworCiAgICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJn
ZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChpc0ludDMyKCkpCi0g
ICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U0M6OnRvSW50MzIoZCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcg
QEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNv
bnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3Jl
YXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBi
eXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNE
YXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wg
SlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVf
dCwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9i
amVjdCosIHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5lYzJhZjY5ODIzOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNBcnJheUJ1ZmZlclZpZXc7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IDE7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgZWxlbWVudFNpemUgPSAxOwogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBUeXBlZEFycmF5Q29udGVudFR5cGUgY29udGVudFR5cGUgPSBUeXBlZEFycmF5Q29udGVudFR5
cGU6Ok5vbmU7CiAKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgICAgICBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVP
ZmZzZXQsCisgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoKTsKICAgICAKICAgICAvLyBEdW1teSBt
ZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3b3JrOyB0aGVzZSBhcmUganVzdCBpbiBwbGFj
ZSB0bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3ZSBkbyBl
bHNld2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBK
U0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0
KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXRJbmRleChKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3Jl
YXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5n
dGgpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHNp
emVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0SW5k
ZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUpOwogICAgIAogICAgIEFycmF5QnVm
ZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAg
ICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKaW5kZXggOTQ5
MDYyNDdlYTY1Li5lMGZiYzUyZjg3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDExICsxMzYsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZp
ZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0
ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJi
eXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxl
RW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hl
ZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3
Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7Cisg
ICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1l
bnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRT
aXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhv
ZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNl
dCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0lu
ZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXpl
ID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNp
Z25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBz
aXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAg
aWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7
CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMiku
dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVy
IGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRh
dGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5
dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3Mi
X3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4MWQuLjZhYmQyYTQxYjE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZp
ZXcuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVGcm9tVmFs
dWUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBDbGFzc0lu
Zm8qIGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZvKCk7CiAvLyAgICAgU3RydWN0dXJlKiBTICAg
ICAvLyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRlcmZseSogQiAgICAgLy8gZnJvbSBKU09iamVj
dAogLy8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAgICAgdWludDMyX3QgTAorLy8gICAgIHNpemVf
dCBMCiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8vIFRoZXNlIGZpZWxkcyB0YWtlIHVw
IGEgdG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQorLy8gVGhl
c2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBvaW50ZXItd2lkdGggd29yZHMuIEZJ
WE1FOiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAvLwogLy8gQiBpcyB1c3VhbGx5IHVu
dXNlZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwgIm92ZXJmbG93IiBkYXRhIGZvcgpA
QCAtMTAzLDE0ICsxMDQsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKIAotICAg
IHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90
IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0
b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsg
fQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KICAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25z
dCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiB0eXBlZFZlY3Rv
cigpIGNvbnN0CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsKICAgICB9CiAK
LSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBpbkJvdW5kcyhz
aXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAg
fQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nl
c3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xp
Z2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkg
Y29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShzaXplX3QgaSkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1
aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpT
VmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkoc2l6ZV90IGks
IEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
ICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5Owog
ICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAg
ICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClb
aV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkp
IGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVp
Y2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1
ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoc2l6ZV90IGksIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVu
Z3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZv
aWQgc2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9O
YXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPih2YWx1ZSkpOwogICAgIH0K
ICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVu
c2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAg
ICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRh
cHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVj
dCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJv
bVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmpl
Y3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRU
eXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1Zh
bHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihq
c1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0
b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+
KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsy
MDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NS
YW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBj
YW5BY2Nlc3NSYW5nZVF1aWNrbHkoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNl
dCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAg
ICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBp
c1N1bVNtYWxsZXJUaGFuKG9mZnNldCwgbGVuZ3RoLCBtX2xlbmd0aCk7CiAgICAgfQogICAgIAog
ICAgIC8vIExpa2UgY2FuU2V0UXVpY2tseSwgZXhjZXB0OiBpZiBpdCByZXR1cm5zIGZhbHNlLCBp
dCB3aWxsIHRocm93IHRoZQogICAgIC8vIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KLSAgICBib29s
IHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vz
c2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCByZXR1cm5zIGZhbHNlCiAgICAgLy8gdGhl
biBpdCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4KLSAgICBib29sIHNldChKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBvYmplY3RPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFi
bGUpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNPYmpl
Y3QqLCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSA9IENvcHlU
eXBlOjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpW
aWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKICAgICBSZWZQdHI8dHlwZW5hbWUg
QWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJbXBsKCk7CkBAIC0zMTgsOCArMzIyLDgg
QEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNl
IG9uIGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9yLgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxP
dGhlckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0
LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKKyAgICAgICAgc2l6ZV90
IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUpOwogCiAgICAgLy8gVGhlIEVD
TUEgNiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5nIHBvaW50IFR5cGVkIEFycmF5cyBzaG91bGQg
aGF2ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgogICAgIC8vCkBAIC0zNDksNyArMzUzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHB1cmlmeUFycmF5KCkKICAgICB7CiAgICAgICAgIEVsZW1lbnRU
eXBlKiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGVu
Z3RoOyBpKyspCiAgICAgICAgICAgICBhcnJheVtpXSA9IHB1cmlmeU5hTihhcnJheVtpXSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIzODc5MmQxMC4uMWVi
M2QxNzg2MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5jbHVkZSAiVHlwZUVy
cm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2LDcgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJlLCBsZW5ndGgsIHZl
Y3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
PiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2ln
bmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksNyArMTAwLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVV
bmluaXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiog
b3RoZXIsCisgICAgc2l6ZV90IG90aGVyT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0
eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyArMjE5LDcgQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAg
ICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3RpbmdCdWZmZXIoKQogICAgICAg
ICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBvdGhl
ci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0KSB7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90
aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAg
ICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQp
KSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAo
MkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAoMkIpLgogICAgIGlmIChlbGVt
ZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KSB7
CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAg
ICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+
KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1
ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAg
IC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBj
YXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2Zl
ckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgewor
ICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJhbnNmZXJCdWZm
ZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAg
ICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNl
dCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9y
IChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRp
dmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0dXJu
IHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqIG9i
amVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5
cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNP
YmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5
cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBj
aSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9yYWdl
VHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3Qg
Y2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAg
ICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ugd2Un
cmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90aGVy
ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAgbGVu
Z3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAgLTMx
Myw4ICszMTQsMTAgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
KAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIFdlIGNvdWxkIG9wdGlt
aXplIHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9iamVjdE9mZnNldCk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIC8vIGdl
dCgpIGZvciBub3cgcHJvYmFibHkgZG9lcyBub3QgZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBpbmRp
Y2VzIGFib3ZlIFVJTlRfTUFYLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbkJvdW5k
czx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBv
YmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2JhbE9iamVjdCwg
b2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKaW5kZXggNGMwZWJkMWY2MTY1Li5hOTc0NzM3M2M0ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNjAsNiArNjAsNyBAQCBpbmxpbmUgSlND
ZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKK2NsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNl
dHRlcjsKIGNsYXNzIEludGVybmFsRnVuY3Rpb247CkBAIC0yMTEsMTAgKzIxMiw4IEBAIHB1Ymxp
YzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOwotICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFtZSwgdmFsdWUp
KSB7Ci0gICAgICAgICAgICBzZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUp
OworICAgICAgICBpZiAodHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBt
ZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yODksNyArMjg4LDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1
bnNpZ25lZCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5
KHVuc2lnbmVkKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkodW5zaWduZWQsIEFycmF5UHJvZmlsZSogPSBudWxscHRyKSBjb25zdDsKICAgICAKICAgICBi
b29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTM0NSwx
NCArMzQ0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgICAgIAotICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGkpIGNvbnN0CisKKyAgICAvLyBVc2VzIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2Zp
bGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50Cisg
ICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBh
cnJheVByb2ZpbGUgPSBudWxscHRyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgICAgIGlmIChjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIGFycmF5UHJv
ZmlsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTEsMzUgKzQxMSw3MyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0LCBpKTsKICAgICB9CiAKLSAg
ICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUp
IGNvbnN0OwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwg
SlNWYWx1ZSk7Ci0gICAgICAgIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3Jh
Z2VJbmRleGluZ1R5cGUoVk0mLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisKKyAgICAvLyBSZXR1cm4g
dHJ1ZSB0byBpbmRpY2F0ZSBzdWNjZXNzCisgICAgLy8gVXNlIHRoZSAob3B0aW9uYWwpIGFycmF5
IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2
YW50CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBK
U1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2tseShWTSYg
dm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0
ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ01vZGUoKSkgewogICAgICAgICBjYXNl
IEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBjYW5TZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnlT
ZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHYsIGFycmF5UHJvZmlsZSk7CiAgICAgICAg
IGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0g
ICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAg
Y2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgY2Fz
ZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChp
ID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGNv
bnZlcnRJbnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0s
IGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFC
TEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0
V3JpdGVCYXJyaWVyKHYpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNM
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsg
MSk7CisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RP
VUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoIXYuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0Nv
bnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb3VibGUgdmFsdWUg
PSB2LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHsKKyAgICAg
ICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5k
ZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkg
PSB2YWx1ZTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkp
CisgICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBOb25BcnJheVdp
dGhBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAg
ICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOworICAgICAgICAg
ICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJ
bmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJh
eVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJm
bHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKQotICAgICAgICAgICAgICAgICYmICEh
YnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBpZiAoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpCisgICAgICAg
ICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8
fCAhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV0pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlw
ZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAg
CisKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUg
dikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
CmluZGV4IDZlMWJiMWI1OWYxZS4uMTM1ZmQwNDU0NzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDIxICs0NjUsMTUgQEAg
aW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5z
aWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpjYW5TZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0
CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1
bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkgY29uc3QKIHsKLSAgICBzd2l0
Y2ggKHR5cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAotICAg
IGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBK
UyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUp
OwotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVco
Q0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICBpZiAoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJy
YXlNYXhMZW5ndGggJiYgYXJyYXlQcm9maWxlKQorICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1h
eUJlTGFyZ2VUeXBlZEFycmF5KCk7CisjZWxzZQorICAgICh2b2lkKWFycmF5UHJvZmlsZTsKKyNl
bmRpZgogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheSh1bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5l
IENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAgICAgY2FzZSBuYW1lICMjIEFycmF5VHlw
ZSA6IHtcCkBAIC01MTIsNyArNTA2LDUwIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiB9Ci0gICAgCisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRl
eFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5
KCktPmFycmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9IHN0b3Jh
Z2UtPm1fdmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xkID0geC5nZXQoKTsKKyAgICB4LnNldCh2
bSwgdGhpcywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAgICAgICAgKytzdG9yYWdlLT5tX251bVZh
bHVlc0luVmVjdG9yOworICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7CisgICAgfQorfQorCitpbmxpbmUgYm9v
bCBKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBK
U1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQoreworICAgIHN3aXRjaCAodHlw
ZSgpKSB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNkZWZpbmUgVVBEQVRFX0FSUkFZ
X1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7XAorICAgIGlmICgoaSA+IEFycmF5UHJvZmls
ZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAgICAg
IGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisjZWxzZQorI2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2Zp
bGUpIGRve1wKKyAgICAodm9pZClhcnJheVByb2ZpbGU7XAorICAgIH0gd2hpbGUgKGZhbHNlKQor
I2VuZGlmCisjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCisgICAgY2FzZSBu
YW1lICMjIEFycmF5VHlwZSA6IHtcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8
SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+
Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisg
ICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFU
RV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtc
CisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklF
VyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisj
dW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwogaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGNlNzMwZjNiZjk2NS4uMDkxOWU3
MjE4NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBA
IC04OTgsOCArODk4LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdp
dGhJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBpZiAoYmFz
ZS0+aXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpbmRleCkpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGlu
ZGV4KSk7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhR
dWlja2x5KGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKICAgICB9CiAKICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+
Y2FuR2V0SW5kZXgoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VD
b3VudC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4uMmE4NjM2MzFhYTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJp
dmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFY
X0FSUkFZX0JVRkZFUl9TSVpFIC8gcGFnZVNpemUpOwogCiAgICAgdWludDMyX3QgbV9wYWdlQ291
bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBi
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggZmYxNTY1ZjExZGVkLi45
M2YwNmM5ZDViYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGlj
LmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCwxNCAr
MTQ0LDE0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVj
a2VkPFQ+PjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBi
b29sIGlzVGFyZ2V0QmlnZ2VyID0gc2l6ZW9mKFRhcmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJv
b2wgdGFyZ2V0U2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQs
IGJvb2wgc291cmNlU2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWdu
ZWQ+IHN0cnVjdCBCb3VuZHNDaGVja2VyOwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
KyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsK
ICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3
aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJl
dHVybiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwogICAgIH0K
IH07CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0
YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRu
ZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVj
aXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PFRhcmdldD46Om1pbigpIDw9IHZhbHVlICYmIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0Pjo6bWF4KCk7CkBAIC0xNTksNyArMTU5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Ry
dWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4gewot
ICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBj
b25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gV2hlbiBj
b252ZXJ0aW5nIHZhbHVlIHRvIHVuc2lnbmVkIFNvdXJjZSwgdmFsdWUgd2lsbCBiZWNvbWUgYSBi
aWcgdmFsdWUgaWYgdmFsdWUgaXMgbmVnYXRpdmUuCiAgICAgICAgIC8vIENhc3RlZCB2YWx1ZSB3
aWxsIGJlY29tZSBiaWdnZXIgdGhhbiBUYXJnZXQ6Om1heCBhcyBTb3VyY2UgaXMgYmlnZ2VyIHRo
YW4gVGFyZ2V0LgpAQCAtMTY4LDcgKzE2OCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBz
dGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRoZSB1bnNpZ25l
ZCBTb3VyY2UgdHlwZSBoYXMgZ3JlYXRlciBwcmVjaXNpb24gdGhhbiB0aGUgdGFyZ2V0IHNvIG1h
eChUYXJnZXQpIC0+IFNvdXJjZSB3aWxsIHdpZGVuLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0g
c3RhdGljX2Nhc3Q8U291cmNlPihzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpKTsK
QEAgLTE3Niw3ICsxNzYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wg
aW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNp
b24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCB0
cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ24s
IGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTky
LDcgKzE5Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdl
dCwgU291cmNlLCB0cnVlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGFyZ2V0IGlzIHNpZ25lZCB3aXRoIGdyZWF0ZXIg
b3Igc2FtZSBwcmVjaXNpb24uIElmIHN0cmljdGx5IGdyZWF0ZXIsIGl0IGlzIGFsd2F5cyBzYWZl
LgogICAgICAgICBpZiAoc2l6ZW9mKFRhcmdldCkgPiBzaXplb2YoU291cmNlKSkKQEAgLTIwMiwx
OSArMjAyLDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdl
dCwgU291cmNlLCB0cnVlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGFyZ2V0IGlzIHVuc2lnbmVkIHdpdGggZ3JlYXRl
ciBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB2YWx1ZSA+PSAwOwogICAgIH0KIH07CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBi
b29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMo
U291cmNlIHZhbHVlKQogewogICAgIHJldHVybiBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNl
Pjo6aW5Cb3VuZHModmFsdWUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1
dCwgVGFyZ2V0JiBvdXRwdXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgY29udmVydFNhZmVseShTb3VyY2Ug
aW5wdXQsIFRhcmdldCYgb3V0cHV0KQogewogICAgIGlmICghaXNJbkJvdW5kczxUYXJnZXQ+KGlu
cHV0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJn
cy4uLiBhcmdzKQogICAgIHJldHVybiBjaGVja2VkUHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVy
Zmxvd2VkKCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhh
bihUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVja2VkPFQ+IHN1bSA9IGE7CisgICAgc3Vt
ICs9IGI7CisgICAgcmV0dXJuICFzdW0uaGFzT3ZlcmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDwg
Ym91bmQ7Cit9CisKIH0KIAogdXNpbmcgV1RGOjpBc3NlcnROb092ZXJmbG93OwpAQCAtMTAxNywz
ICsxMDI0LDQgQEAgdXNpbmcgV1RGOjpkaWZmZXJlbmNlT3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpp
c0luQm91bmRzOwogdXNpbmcgV1RGOjpwcm9kdWN0T3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpzdW1P
dmVyZmxvd3M7Cit1c2luZyBXVEY6OmlzU3VtU21hbGxlclRoYW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApp
bmRleCA1MTczNzIxN2E1NTEuLmRjYjA4ZWRlYzM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0x
NDcsNiArMTQ3LDExIEBACiAjZGVmaW5lIFVTRV9CSUdJTlQzMiAwCiAjZW5kaWYKIAorI2lmIFVT
RShKU1ZBTFVFNjQpCisvLyBXaGV0aGVyIHRvIHN1cHBvcnQgdHlwZWQgYXJyYXlzID4gMkdCCisj
ZGVmaW5lIFVTRV9MQVJHRV9UWVBFRF9BUlJBWVMgMQorI2VuZGlmCisKIC8qIEZJWE1FOiBUaGlz
IG5hbWUgc2hvdWxkIGJlIG1vcmUgc3BlY2lmaWMgaWYgaXQgaXMgb25seSBmb3IgdXNlIHdpdGgg
Q2FsbEZyYW1lKiAqLwogLyogVXNlIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDEpIHRvIGdldCBD
YWxsRnJhbWUqICovCiAjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQp
IHx8IENQVShYODZfNjQpKQo=
</data>
<flag name="commit-queue"
          id="463719"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439945</attachid>
            <date>2021-10-01 18:25:58 -0700</date>
            <delta_ts>2021-10-02 10:34:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>193981</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5lNjc2N2M2YTlhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0K
KwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZf
NjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRp
ZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIg
aW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRm
b3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29u
ZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQg
ZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0
YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsK
KyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAg
ICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29u
c3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRp
bmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUg
YSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAg
ICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQz
Ml90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50
LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQo
Y29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAg
IH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CmluZGV4IDQyNTA5MDNiYzMyMi4uMTc5NmI2NTFiYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDgg
KzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1Jl
Z2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25h
YmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2
NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMz
MDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2go
Y29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwog
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0
Y2YyMjQwZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIs
MTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQs
IGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRy
TGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRl
QXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhH
UFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNj
cmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0
aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAppbmRleCBjY2UwZDAxZjQwMTcuLmQ3NzQ2OTk5YmUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lz
dGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+
PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8g
SW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBkMWFlM2I1NTM1NjUuLmQ3ZGYx
ZTkzZjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtMTE5MSwxMiArMTE5MSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlH
UFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpKTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIC8vIFRoZSBs
ZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0
aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7
CisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxI
ZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZWxzZQog
ICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzdGF0
ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2VuZGlmCiAKICAgICAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CkBAIC0xNjMwLDkg
KzE2MzUsMTYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
ICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRz
IGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2Zp
bGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgc3RhdGUu
ZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JF
cXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2Fk
MzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBv
ZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KICAg
ICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAg
ICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5
MTY3OTQ4NDNiMC4uOTkzMWIxMGY4MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJy
YXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVz
ZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJl
IGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJl
IGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRo
ZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2
LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5k
ZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0y
MDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgLy8gQWNjZXNzaW5nIHR5cGVkIGFycmF5cyBsYXJnZXIgdGhhbiB0aGF0IHRl
bmRzIHRvIGJlIG1vcmUgY29tcGxpY2F0ZWQgYXMgd2UgY2FuJ3QgZm9yY2UgY29udmVydCBldmVy
eXRoaW5nIHRvIGludDMyX3QuCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IHN1Y2ggbGFyZ2UgdHlw
ZWQgYXJyYXlzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB7IG1fbWF5
QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJh
eShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUJlTGFyZ2VU
eXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAg
ICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAm
bV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlN
b2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJl
c3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KQEAgLTI0
NCw2ICsyNTQsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OyAvLyBUaGlz
IGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2Fz
ZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVu
ZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1
c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlz
IGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgog
ICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9OworI2VuZGlm
CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBt
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1G
aXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NiwxMyBAQCBzdGF0aWNfYXNzZXJ0KHNp
emVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGUg
ewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0OworICAgIGV4
cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
ICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7CkBAIC0y
ODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3VzZXNPcmln
aW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
ICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJyYXlQcm9maWxl
Lm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVk
QXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE2LDExIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
b3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMg
eyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJy
YXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5rZWRBcnJheVBy
b2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCBiMWRmY2EyNzQ5YzEuLjA0MmIwN2I4OGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzQ4
Niw2ICszNDg2LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7
CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051
bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7
CkBAIC0zODIxLDYgKzM4MzIsMTkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKHZp
ZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXQgPSB2
aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNl
dCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
aWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZl
Mjc1MzEwNGJkMy4uMDU5YmEzZjZkY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2
ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2Rl
LT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAg
ICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBzaG91bGQgbm90
IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAg
ICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZlY3RvcigpOwog
ICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSk7IApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4IDZlNGZlOWFm
YTNlYi4uMDQxYWRiNzg2MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5l
KAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFjdGlvbigpKTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpKQorICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkK
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAg
IAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMgb2JqZWN0IGJl
aGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYgKzI5NCw3IEBA
IEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdV
aW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9ubHkgcHJlc2Vy
dmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBhbmQgbm90IEdl
dEJ5VmFsIGFzIHdlbGwuCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsKSB7CiAg
ICAgICAgICAgICBpZiAoZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBP
dXRPZkJvdW5kcykgfHwgIWlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHlw
ZWRBcnJheVJlc3VsdCh3aXRoU3BlY3VsYXRpb24oQXJyYXk6Ok91dE9mQm91bmRzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAppbmRleCBhMDI2YWFkMTg5M2IuLmRm
NzVjNzg5MGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCkBA
IC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24g
PSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6
OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBBcnJheTo6V3JpdGU7CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBleHBsaWNpdCBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkFjdGlvbiBhY3Rp
b24pCkBAIC0xMzYsNiArMTM3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3Vs
YXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0g
QXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTQ1LDE1ICsxNDcsMTcgQEAgcHVibGljOgogICAgICAg
ICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNC
eXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24g
PSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNl
OwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCisgICAgQXJyYXlNb2Rl
KEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpB
Y3Rpb24gYWN0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2UpCiAgICAgewog
ICAgICAgICB1LmFzQnl0ZXMudHlwZSA9IHR5cGU7CiAgICAgICAgIHUuYXNCeXRlcy5hcnJheUNs
YXNzID0gYXJyYXlDbGFzczsKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gc3BlY3Vs
YXRpb247CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAgICAg
ICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFy
Z2VUeXBlZEFycmF5ID0gbWF5QmVMYXJnZVR5cGVkQXJyYXk7CiAgICAgfQogICAgIAogICAgIEFy
cmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6
OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNjMsNiAr
MTY3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6
SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAg
ICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJl
TGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAogICAgIEFycmF5OjpUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6VHlwZT4odS5hc0J5dGVzLnR5
cGUpOyB9CkBAIC0xNzAsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEFycmF5OjpTcGVjdWxhdGlv
biBzcGVjdWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpTcGVjdWxh
dGlvbj4odS5hc0J5dGVzLnNwZWN1bGF0aW9uKTsgfQogICAgIEFycmF5OjpDb252ZXJzaW9uIGNv
bnZlcnNpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6Q29udmVyc2lvbj4o
dS5hc0J5dGVzLmNvbnZlcnNpb24pOyB9CiAgICAgQXJyYXk6OkFjdGlvbiBhY3Rpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6QWN0aW9uPih1LmFzQnl0ZXMuYWN0aW9uKTsg
fQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSBjb25zdCB7IHJldHVybiB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KICAgICAKICAgICB1bnNpZ25lZCBhc1dvcmQoKSBj
b25zdCB7IHJldHVybiB1LmFzV29yZDsgfQogICAgIApAQCAtMTc5LDM1ICsxODUsNTAgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXJyYXlNb2RlIGZyb21PYnNlcnZlZChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2ZpbGUqLCBBcnJheTo6QWN0aW9uLCBib29s
IG1ha2VTYWZlKTsKLSAgICAKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0
eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb24oQXJy
YXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24o
KSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoQXJyYXlDbGFzcyhBcnJh
eTo6Q2xhc3MgYXJyYXlDbGFzcykgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoQ29udmVyc2lv
bihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25G
cm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBl
QW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJz
aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKTsKKyAgICB9CisKKyAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3NBbmRTcGVj
dWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBB
cnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkp
IGNvbnN0CiAgICAgewotICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsK
KyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9u
LCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSk7CisgICAgfQog
CisgICAgc3RhdGljIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpCisgICAgewogICAgICAgICBpZiAobWFrZVNhZmUpCi0gICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOworICAgICAgICAgICAgcmV0dXJuIEFy
cmF5OjpPdXRPZkJvdW5kczsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hv
bGUobG9ja2VyKSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6VG9Ib2xlOwor
ICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRpb24pOworICAgICAgICAgICAgcmV0dXJu
IEFycmF5OjpJbkJvdW5kczsKICAgICB9Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5
UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiB3aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wg
bWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNz
OwotCiAgICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKHByb2ZpbGUt
PnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdp
bmFsQXJyYXkoKSkgewogICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHBy
b2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpOwpAQCAtMjIxLDIzICsyNDIsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRo
U3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKLSAgICB9
Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5
TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJh
eU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252
ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkp
OworCisgICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisKKyAgICAgICAgYm9vbCBs
YXJnZVR5cGVkQXJyYXkgPSBwcm9maWxlLT5tYXlCZUxhcmdlVHlwZWRBcnJheShsb2NrZXIpOwor
CisgICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJn
ZVR5cGVkQXJyYXkobXlBcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgbGFyZ2VUeXBlZEFycmF5KTsK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSB1bnVzZWRJ
bmRleFNwZWN1bGF0ZWRUeXBlID0gU3BlY0ludDMyT25seTsKQEAgLTUyNiw3ICs1MzYsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpCiAgICAgICAgICAg
ICAmJiBhcnJheUNsYXNzKCkgPT0gb3RoZXIuYXJyYXlDbGFzcygpCiAgICAgICAgICAgICAmJiBz
cGVjdWxhdGlvbigpID09IG90aGVyLnNwZWN1bGF0aW9uKCkKLSAgICAgICAgICAgICYmIGNvbnZl
cnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCk7CisgICAgICAgICAgICAmJiBjb252ZXJzaW9u
KCkgPT0gb3RoZXIuY29udmVyc2lvbigpCisgICAgICAgICAgICAmJiBtYXlCZUxhcmdlVHlwZWRB
cnJheSgpID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUmIG90aGVyKSBjb25zdApAQCAtNTc5LDcg
KzU5MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50OF90IGFycmF5Q2xhc3M7CiAgICAg
ICAgICAgICB1aW50OF90IHNwZWN1bGF0aW9uOwogICAgICAgICAgICAgdWludDhfdCBjb252ZXJz
aW9uIDogNDsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogNDsKKyAgICAgICAgICAgIHVp
bnQ4X3QgYWN0aW9uIDogMTsKKyAgICAgICAgICAgIHVpbnQ4X3QgbWF5QmVMYXJnZVR5cGVkQXJy
YXkgOiAxOwogICAgICAgICB9IGFzQnl0ZXM7CiAgICAgICAgIHVuc2lnbmVkIGFzV29yZDsKICAg
ICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDg4MTFiODlmMjRhNy4uM2Q3OWYyNGU3ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgwNiw4ICszODA2LDE2
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdl
dCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeVZhcmlhbnQmIHZh
cmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
CiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0aWNfYXNzZXJ0KGVuYWJs
ZUludDUyKCkpOworI2VuZGlmCisKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsK
ICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CisjaWYgIVVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIxLDI2ICszODI5LDMyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGU7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoTm9kZSA9
IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKCFp
c0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5
cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCkt
PnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTIsMTMgKzM4NjYsMjAgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6Okdl
bmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdl
dEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5n
dGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0
aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFy
cmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODcwLDcgKzM4OTEsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMK
ICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAg
ICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShh
cnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjU0OGJkMGVlZTllZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk6CiAg
ICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
IGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRB
cnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOwogICAgICAgICByZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYsMTQgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7Cisg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQXJyYXlM
ZW5ndGhMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAg
ICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNo
IChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXgg
YzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgp
CiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29u
c3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0
N2E5Ny4uNjA5ZmYwODU3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2Fz
ZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0Ogor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5
M2VlZTZjYS4uMTk2NWQ0Mzg5NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQog
ICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAg
ICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAg
ICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJh
eSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
bmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4g
T3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhh
dmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6
R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDIxIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5
OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNl
IEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIC8vaWYgKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMSktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9kZSgp
Lm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIC8v
ZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzEyMDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihp
bmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUo
KS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCku
aXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5t
YXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhh
c0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApA
QCAtMTI2Niw3ICsxMjgzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpV
aW50MTZBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9pZiAoY2hpbGQy
LT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFu
RWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3Bl
Y3VsYXRlSW50NTIoKSkKQEAgLTEyNzcsNyArMTI5NywxMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rmxv
YXQ2NEFycmF5OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICAgICAgLy9pZiAoY2hpbGQyLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJh
eU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAg
ICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAg
ICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKQEAgLTE3MTcsMTIgKzE3NDAs
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6
IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0yMTQ5LDYgKzIxNzYsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpLnJlZmluZShtX2dyYXBoLCBub2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGlj
dGlvbigpLCBBcnJheU1vZGU6OnVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAg
ICAgQVNTRVJUKGFycmF5TW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUpOworICAgICAgICAgICAgYmxlc3NBcnJheU9w
ZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgRWRnZSgpLCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVl
ZHNTdG9yYWdlKTsKKworICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorI2Vsc2UKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3MzIs
NyArMjc4MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAg
ICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZp
ZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vaWYgKG5vZGUtPmNoaWxkMigpLT5z
aG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIC8vZWxzZSAvLyBGSVhNRTogbm90IGNsZWFyIHdoYXQgd2Ugc2hv
dWxkIGRvIGhlcmUgaWYgdGhlIGluZGV4IGlzIHNvbWV0aGluZyBjcmF6eQorICAgICAgICAgICAg
Ly8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4o
bm9kZS0+Y2hpbGQzKCkpOwogCkBAIC0yNzU4LDcgKzI4MDksMTAgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBjYXNlIERhdGFWaWV3U2V0OiB7CiAgICAgICAgICAgICBmaXhFZGdlPERhdGFWaWV3T2Jq
ZWN0VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAg
Ly9pZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIo
KSB8fCAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsK
KyAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5V
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAgICAgICAgICAgCkBAIC00MDk2
LDE0ICs0MTUwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGls
ZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRB
cnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1v
ZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAg
IHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDgg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBp
cyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcg
Y29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhl
ciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3
aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQg
aWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGlu
IG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBt
YXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2Vz
IG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlz
IGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1h
eSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZS5jcHAKaW5kZXggMWJhYTFjOGJjZjUxLi40M2I1ZDEwMTJlMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2UuY3BwCkBAIC0xNDk5LDYgKzE0OTksNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7
CiAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25zaGlwKG5vZGUsIG1femVybywg
UmVsYXRpb25zaGlwOjpHcmVhdGVyVGhhbiwgLTEpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAyYWY3OTcwNjhhOWMuLmQxM2QzN2YwMmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTY1LDYgKzE5NjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBjYXNlIEFycmF5UG9w
OgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAgICAgIGNh
c2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAgICAgICAgIGNhc2UgQXJyYXlJ
bmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgogCiAgICAgICAgIGNhc2UgQXJy
YXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBI
YXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJ
bkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4uNzI2NGRjMmY1NjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNjEsOCArMjYxLDExIEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aVB1dEJ5T2Zm
c2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNldCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgZm9y
IFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVzIHRoYXQgY2FuIGhhdmUgYSBs
ZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8gXAorICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9y
TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDY5YWNmNTE5YzBi
YS4uZDVkYTM0YTUxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAg
fQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5k
ZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhR
dWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRl
eFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBA
IC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxT
dHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQ
VVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNoYXIqIG5ld1R5cGVk
QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVj
dHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2
ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzaXpl
X3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2
ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3Jl
YXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJy
YXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIq
PihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0Ns
YXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRl
IDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0
cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTkyNCw3ICsxOTI0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkp
OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcg
KzE5ODgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFt
cGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMjAsNyArMjAyMCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50
MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpu
dWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTIsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsbwogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzPEpTQmlnSW50NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCmluZGV4IDg0NGMxOWIzMTE0MS4uODBkZjgxZmRmMDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcg
QEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJm
bHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hh
ciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Fy
cmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVj
dHVyZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjBkMDQ0ZjVmNWMwLi40Nzg3MDNh
YzEwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODYsNiArOTg2LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uNWJkMzc3ZGFmODk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzczLDYgKzM3Myw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGI0YzhmODYwYjUxNC4uODgyZDc3ZDBmZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzI0NSwxNiArMzI0NSwyOCBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJ
VDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiBub2RlLCBHUFJSZQogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXco
CiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5t
X3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWlu
dDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2
aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5j
aGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25z
dGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGlu
ZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1t
NjQobGVuZ3RoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIGluZGV4R1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAg
ICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKQEAgLTc5NjAsNyArNzk3Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywg
R1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkg
ewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVu
dGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0
aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAg
VU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODM0MiwxMiArODM1NCwxOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
U291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0
R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTExLDEwICsxMTEy
OSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXpl
KE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlU
eXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgp
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1
cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5n
ZXQoKSk7Ci0gICAgCisKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBz
bG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRm
b3JtcworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNpemVHUFIpOworI2Vu
ZGlmCisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBl
ZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSogbm9kZSwgVHlwZWRB
cnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBH
UFJSZWcgc2l6ZUdQUikKK3sKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQ
UlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OwpAQCAtMTExMzAsNiArMTExNTgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRy
dXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpKTsKKyAgICAvLyBX
ZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUg
aXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90
PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOwogICAgIAogICAgIG1faml0Lm1v
dmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMy
KGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTExODUs
OSArMTEyMTUsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShOb2RlKiBub2RlKQogICAgIG1faml0LnN0b3JlUHRyKAogICAgICAgICBzdG9yYWdl
R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBt
X2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0
ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE1
OSw2ICsxNDE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVk
QXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNh
c2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3Vt
ZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5Li5hZGM4MDZhYTIyOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEz
MDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3
U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwot
ICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2Rl
KiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsK
ICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lm
IFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBh
cmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBp
bGVHZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAKICAg
ICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzNSw2ICsxNDQyLDkgQEAgcHVibGljOgogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAg
ICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIGluZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25z
dCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZv
cm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNW
YWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZp
eCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxl
ZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmlj
YWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgog
Y2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1f
Z3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRo
ZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4
dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBp
cyBpbiB0aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBj
bGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmVmYmNlZGRiYzBhLi40ZWQ3NTlmMTkwZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoK
ICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJy
YXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBl
IHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAo
aXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXko
bm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0
aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKKyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFu
IDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAg
ICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2
MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MjogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVH
ZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlMTM1ZmQ1MzQ4ZTgu
LmNlNDAyY2MyMGM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUq
IG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBl
ZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJp
Y3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNp
emVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVn
aXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSogbm9k
ZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFy
cmF5VmlldygpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKyAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOwor
ICAgIHN0YXRpY19hc3NlcnQoTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDwgKDF1bGwgPDwgNTIpLCAi
dGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIHNpemUgb2YgYSB0eXBlZCBhcnJheSB3b24ndCBmaXQg
aW4gYW4gSW50NTIiKTsKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHZlY3Rvcih0aGlzKTsKKyAgICBH
UFJUZW1wb3JhcnkgZGF0YSh0aGlzKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKyAgICBHUFJSZWcgdmVjdG9yR1BSID0gdmVjdG9yLmdwcigpOworICAgIEdQUlJlZyBkYXRh
R1BSID0gZGF0YS5ncHIoKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSB2ZWN0b3JHUFIpOworICAg
IEFTU0VSVChiYXNlR1BSICE9IGRhdGFHUFIpOworICAgIEFTU0VSVCh2ZWN0b3JHUFIgIT0gZGF0
YUdQUik7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOworCisgICAgSklU
Q29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwKKyAgICAgICAg
VHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBudWxsVmVj
dG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmVjdG9yR1BSLCBUcnVz
dGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKTsKKworICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2FnZVdpdGhvdXRVbnRhZ2dp
bmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAgY2FnZVR5cGVkQXJyYXlTdG9y
YWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwg
YXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNhZ2luZy4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTE1CisgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1ZmZlckdQUiwgQXJyYXlC
dWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICBt
X2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRpZgorCisgICAgbV9qaXQuc3Vi
UHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0g
bV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1f
aml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZtX2ppdCk7CisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIpOworCisgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNTRVJUKCFKU0FycmF5QnVmZmVy
Vmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNl
bmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9k
ZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAtNDM3NSw2ICs0NDU4LDE0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVu
Z3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0lu
dDUyOgorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGNvbXBpbGVHZXRBcnJh
eUxlbmd0aEFzSW50NTIobm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlk
OiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTQ0OTMsNiArNDU4NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJv
dG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4Myw3ICs1NjgzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUg
PiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUg
LSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwor
ICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7
CiAKQEAgLTU3ODQsNyArNTg4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7
CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0
KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA1ZjUxZjIy
NTEwNGYuLjFlMTQwMDUwNGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzksMTAgKzI3OSwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAg
ICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAg
ICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKQEAgLTM1OSw2ICszNjEsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEyNDhjOWZhZDY3Li5jOTkwZDU5
Y2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTE3MCw2ICsxNzAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAg
Y2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgU3Rv
cmVCYXJyaWVyOgpAQCAtMzkxLDYgKzM5Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVu
dHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0M2QyNmU4M2U5
NjguLjEwZWQ5NmU5N2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTAyNSw2ICsxMDI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsK
ICAgICAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgY2Fz
ZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNzUsNiArMTE4MCwxMyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIo
KTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAg
ICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC00ODI4LDkgKzQ4NDAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1f
b3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIExW
YWx1ZSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCkKICAg
ICB7Ci0gICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsg
ICAgCisgICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
IAogICAgICAgICBMQmFzaWNCbG9jayB3YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwog
ICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQ4NDYs
NyArNDg1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8od2FzdGVmdWxDYXNlLCBub3ROdWxsKTsKIAogICAgICAgICBMVmFsdWUgdmVj
dG9yID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3Zl
Y3Rvcik7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNv
bnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwgCisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJy
YXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250
aW51YXRpb24pLCB1bnN1cmUobm90TnVsbCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE51bGwsIGNvbnRpbnVhdGlvbik7CkBAIC00ODY2LDkgKzQ4NzgsMjIgQEAgcHJpdmF0ZToKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKIAotICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9J
bnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQp
KSk7CisgICAgICAgIHJldHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91
dCwgd2FzdGVmdWxPdXQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldEludDMyKG1f
b3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisg
ICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
RXhjZXB0Q2FzdGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTUwNTQsOCArNTA3OSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUt
PmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBz
ZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRp
dmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBu
dWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwobGVuZ3RoLCBtX291dC5jb25zdEludDY0KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworICAgICAgICAgICAgICAgIHNldElu
dDMyKG1fb3V0LmNhc3RUb0ludDMyKGxlbmd0aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2NCw2ICs1MDkwLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFz
SW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ub2RlLT5hcnJheU1vZGUo
KS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQu
bG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZv
aWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC04MTY5LDk4ICs4MjAyLDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5
cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAg
ICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFu
Y2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAg
ICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1
ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nh
c2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwot
Ci0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNo
bChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJy
YXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgK
LSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0
cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBM
VmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUg
c3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwK
LSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwK
LSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFw
cy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXpl
KTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVS
ZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFy
YW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFt
c1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlm
CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIo
bV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3Rv
cmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGZhc3RS
ZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBl
KSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAgICBj
YXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFs
bG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZPUl9F
QUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBF
X0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5
cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9i
amVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAg
ICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5j
b25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVu
Y2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNo
b3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKLQotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7
Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwog
Ci0gICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNs
b3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAo
Y29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRo
OjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxs
R2VuZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRB
cnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwot
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93
UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsK
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0g
ICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5
cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLQorI2VuZGlmCiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTog
ewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKIApAQCAtODI3Nyw3ICs4MjMzLDEwMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJh
eVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2
NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1f
b3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6
OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHko
c21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNz
dW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEg
MzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+
KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisgICAgICAgIExWYWx1ZSBzaXpl
ID0gbV9vdXQuY2FzdFRvSW50MzIoc2l6ZTY0Qml0cyk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVT
aXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291
dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBp
ZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNp
emUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBt
X291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
fnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVl
IGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9
IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRX
b3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8s
CisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291
dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAg
ICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQor
ICAgICAgICB7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9FeHRQdHIo
c2l6ZSk7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFw
cGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBw
ZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIp
KTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1sw
XS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50
aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVT
dG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0UmVz
dWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7Cisj
ZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAj
IyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxK
UyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBc
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9F
WENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAgICBm
YXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1f
b3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFn
ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Cisg
ICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJ
bnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBt
X291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9
IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRp
b24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFy
cmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgp
KSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlv
bnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJp
dHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE1NTkxLDcgKzE1NjQyLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRh
KCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBMVmFsdWUg
aW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRl
eFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0
LDcgKzE1Nzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1f
bm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnpl
cm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJh
eUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2Fk
NjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
OwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7
CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVj
ayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6
ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3Mjg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBk
b1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02NEUp
CiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAgICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQu
bG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZh
bHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZElu
c3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBw
b2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9u
TmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJu
IGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZh
bHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNl
LCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZh
bHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDk0ZjdhZmUxMWE5MS4uN2E1NjA3NTY1ZDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC03OSwyMyArNzksMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRj
aCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBz
dGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQz
Mih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3Ro
SW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAg
ICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNoaWZ0NjQo
VHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICBq
aXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5z
Y3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkgewotICAg
ICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlwZWRBcnJh
eXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KLSAgICAg
ICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkp
LCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBz
aW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5n
dGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0MzIoVHJ1
c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAgICB9Ci0K
ICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAg
ICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNiw4ICsx
MzUsMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5ib3hJ
bnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hG
UFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOwor
I2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ3ZGY3
Y2I4ZTg3NS4uNWQ2YjBhODVhNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaSwg
dmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBp
LCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MSwxNyArMjMzOSwxNyBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6
b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7Ci0g
ICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVp
bnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsK
LSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5k
ZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgo
aSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhi
YXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChh
cnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAg
IGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkp
KQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAg
ICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5
KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAg
ICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKQEAgLTIzNzEs
OCArMjM2OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdl
dChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051bWJlcigp
ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYwMDQ0ZS4uZTc2ZGFk
YTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNN
X0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNkZWZp
bmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQp
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDJlZmI3MWM0YTY0Li5h
Mzg4NDI2M2IxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtMTA0Niw4ICsxMDQ2LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUK
ICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBl
bHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5H
ZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5k
ZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50
cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBm
YWxzZTsKIApAQCAtMTE2OSwxNCArMTE2OSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAg
ICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUp
KQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7
Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhR
dWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGMzNWU0NTQ0MTEwNi4uNWVkZWE4M2IwNmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVjdHVy
ZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5
Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdFX1RZUEVEX0FSUkFZ
UworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVBy
b2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFIG9yIFJJ
U0NWNjQKQEAgLTEzMDAsNyArMTMwNCw3IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNl
bGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6
bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNybyBn
ZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCittYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwg
aW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VU
eXBlZEFycmF5LCBzbG93UGF0aCkKICAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBo
YXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZy
b250LgogICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBlW2Jhc2VdLCB0MgogICAgIHN1YmkgRmlyc3RU
eXBlZEFycmF5VHlwZSwgdDIKQEAgLTEzMTEsMTMgKzEzMTUsMjIgQEAgbWFjcm8gZ2V0QnlWYWxU
eXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0
QnlWYWwsIHMKICAgICBpZiBBUk02NEUKICAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKICAgICAg
ICAgY29uc3Qgc2NyYXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X2xlbmd0aFtiYXNlXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQ
YXRoCisgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVu
Z3RoCisgICAgICAgIGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgZWxzaWYgSlNW
QUxVRTY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVu
ZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVy
IHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xl
bmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3Jh
dGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRo
ZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAor
ICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICBicWJlcSBpbmRleCwgU21hbGxUeXBl
ZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxUeXBlZEFycmF5CisgICAgICAgIHNldExhcmdlVHlwZWRB
cnJheSgpCisuc21hbGxUeXBlZEFycmF5OgorICAgIGVuZAorCiAgICAgbG9hZHAgSlNBcnJheUJ1
ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2VdLCB0MwogICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5n
dGgsIGJhc2UsIHNjcmF0Y2gpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZjNkOTdjYTRmN2NiLi4z
NjMyMzcxNDFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRl
eGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZh
bFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlW
YWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5k
ZXggZmJkYmE2OGUwZjMwLi44MjM1N2ZhYzMzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3
MTMsMTYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmluaXNoR2V0QnlWYWwo
c2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlT
CisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAgICBzdG9yZWIg
MSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVk
QXJyYXlbdDVdCisgICAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VU
eXBlZEFycmF5KCkKKyAgICAgICAgICAgIGNyYXNoKCkKKyAgICAgICAgZW5kCisgICAgZW5kCisK
ICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3NjMsNyAr
MTc3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEs
IGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93
KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5p
c2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAK
IC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRf
YnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
CmluZGV4IGM5YjhmMmE3MTkxZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8U2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3Ry
dWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAotU2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3Ry
dWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1
Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpAQCAt
NjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKEFy
cmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlzKTsK
IH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBk
ZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAsIG1f
c2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lkIEFy
cmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
Cit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
CiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwgc2l6
ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0g
bnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUgLyBu
dW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZX0JV
RkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsKKyAg
ICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVzLmhh
c092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZFUl9T
SVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2l6
ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRpb25T
aXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5C
eXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRp
b25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRo
aW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZl
ciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlw
ZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUlu
Qnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQog
ICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRhLCAw
LCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7Cisg
ICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1
Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAg
LTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJh
eUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJ
bkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVy
ID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVm
ZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUo
b3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUo
c291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBA
QCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50
cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4g
dGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9t
IHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6
OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJv
bUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QK
IC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5
cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBk
aWZmZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20g
dGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEg
JiYgIUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAg
ICBHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcg
QEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29u
dGVudHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVt
ZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6
ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90
aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29u
dGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwg
QXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RG
TW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlh
bGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXpl
LCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBi
eXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1
dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkp
OwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBp
ZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5
KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4g
YnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGlj
eSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250
ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwpA
QCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNv
bnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZh
bHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCkK
IHsKICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAx
LDkgKzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1
bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWdu
ZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90IEFy
cmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25l
ZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVuZ3Ro
ID0gYnl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3Vy
cmVudExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJy
ZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENs
YW1wZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVk
IGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25z
dAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7
CisgICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAg
YXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJl
c3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLjg5YTBiOWM4YTkx
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzksNyArMzksMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBDUFUoQUREUkVTUzY0KQor
I2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxzZQorLy8gQmVj
YXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMgb2Yg
YXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMu
CisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1
aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1
bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRo
ZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNh
cmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgog
CiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNTgsNyBAQCB1c2luZyBQ
YWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1
YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAg
IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUlu
Qnl0ZXMpOyB9CkBAIC02MCwxNCArNjcsMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlw
ZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAg
ICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90
IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRl
cywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJD
b250ZW50cyYmKTsKQEAgLTc5LDcgKzg2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAg
dW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9Cisg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQog
ICAgIAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAg
IApAQCAtOTQsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAg
ICB9OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlB
bGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5p
dGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZv
aWQgdHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExMiwyOCBA
QCBwcml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7
CisgICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1
YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJy
YXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVf
dCBieXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAg
IGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5
dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsK
ICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2lu
LCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlC
dWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5
QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBj
b25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBp
bigpOwpAQCAtMTYxLDEyICsxNjgsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVz
dHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lk
KiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBj
b25zdCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihB
cnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRv
dWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVl
KGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIHNp
emVfdCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBz
aXplX3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7CiAK
ICAgICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMTk5LDcgQEAgY29u
c3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRz
LmRhdGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAor
c2l6ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9j
b250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxMiw3IEBAIGJvb2wgQXJyYXlC
dWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1h
dGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBz
Y2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1
cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgp
KTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAog
dm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDczNzIyNzQ1MzRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmll
dy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJB
cnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChi
eXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9i
eXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVP
ZmZzZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRl
T2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uZTcxYjA2MWZlNzE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
KCkgY29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBt
X2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERl
dGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBt
X2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0
byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZl
cmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUp
CisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9m
ZnNldCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1l
bnRTaXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdp
dmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4K
LSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYg
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90
IHNpemUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9m
IGFuIEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlT
dWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgc2l6
ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVu
c2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNp
emU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWlu
aW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1
ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAg
ICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAg
aW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0
KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRl
T2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGlu
ZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwo
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNl
dCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29s
IHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0
aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAot
ICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAg
dW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVy
b1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAK
ICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBh
cnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMg
ZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAg
IGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9m
ZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVs
ZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXplX3Qg
Km9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2Yo
VCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgq
b2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVM
ZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZz
ZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxl
bmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAo
YnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVj
a2VkPHNpemVfdD4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9m
ZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9m
ZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1
c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpv
ZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAq
b2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmlu
Z0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsK
ICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1F
bGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYg
Q1BVKEpTVkFMVUU2NCkKKyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisg
ICAgdWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNEZXRh
Y2hhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgc2l6ZV90IG1fYnl0
ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mg
b2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0x
NjAsODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZm
ZXI7CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
IGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldElt
cGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYg
KGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5
LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFy
cmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5n
ZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNl
dCwgYXJyYXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJy
YXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFC
eXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRl
TGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9m
ZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAg
aWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVu
Z3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFz
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJh
c2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRh
Qnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBi
eXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0
ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVP
ZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAg
IGlmICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxl
bmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4
X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAg
ICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3Ro
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5n
ZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wg
QXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
cmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0g
ICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAg
ICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1T
bWFsbGVyVGhhbihieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChiYXNlICsg
Ynl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICBpbnQg
c3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5z
aWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCArPSBh
cnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAgIGlm
IChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAwKQot
ICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFy
cmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFydCkK
LSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFy
dCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVmZmVyVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAK
aW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nlc3NJbmRleFZh
bHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVCh0eXBlZEFy
cmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKKwog
ICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0
IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBkY2MyZjUwNjRh
ZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURhdGFW
aWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0
aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZSgKLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKIH0K
IAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
OworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIxNDQuLjM0MDI2
NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcgZmluYWwgOiBw
dWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRU
eXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlC
dWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsK
ICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNl
dCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBnZXQo
c2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIp
CiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsg
c2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWduZWQm
IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAg
VCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0PFQ+
KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8fCAq
c3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVlLCBi
b29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2b2lkIHNldChz
aXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChv
ZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIERhdGFW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRl
TGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBiZTdlNmMw
NTM0ZmEuLmY0OTM3MGZjYWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTUgKzMzLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVyaWNUeXBlZEFy
cmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiB0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVu
Z3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KGJhc2VBZGRyZXNzKCkp
OyB9CiAgICAgCkBAIC02NSwyNiArNjUsMjYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgemVy
b0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdAorICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4g
Ynl0ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAot
ICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAg
ICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5s
ZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQg
c2V0KHNpemVfdCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAg
ICAgICAgIGRhdGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUp
OwogICAgIH0KIAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKHNpemVfdCBpbmRl
eCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwog
ICAgICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CkBAIC0xMDAsMTYgKzEwMCw5IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBj
b3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0
aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAgICYmIG9m
ZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAg
ICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAgICAgIHJldHVybiBp
c1N1bVNtYWxsZXJUaGFuKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAg
ICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUo
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsK
QEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAo
SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBh
ZTViZGQ4YzZhMzEuLjU0Mjk4MGFlNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5
VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92
ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
CitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0g
dHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcg
KzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVh
dGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcg
KzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxl
bmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFi
dWZmZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25z
dCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAg
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgp
OwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEwMSw3IEBAIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8g
cmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2
IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciks
IDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0
YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWdu
ZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBl
bmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciog
YnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAg
ICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVP
ZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIs
IG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJy
YXlCdWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAKaW5kZXggODllYWViZDNjMmNjLi5mMDc0MGNiNmQ0NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8g
PSB7CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3Ry
dWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IHZvaWQqIHZlY3RvcikKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVj
dG9yKHZlY3RvciwgbGVuZ3RoKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQs
NyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCgKIH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWlu
dDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsCiAgICAgSW5p
dGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwg
bV9sZW5ndGgobGVuZ3RoKQpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0
aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgp
IC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZDxzaXplX3Q+IHNpemUgPSBsZW5ndGg7CisgICAg
c2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0la
RSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAg
bV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1p
dGl2ZSwgc2l6ZSksIGxlbmd0aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNh
Z2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgp
OwogICAgIGlmICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBa
ZXJvRmlsbCkKICAgICAgICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2
bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSAqIGVsZW1lbnRTaXplKTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKHNpemUudmFsdWUoKSk7CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAg
ICAgbV9tb2RlID0gT3ZlcnNpemVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJy
YXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAog
CiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBtX3N0
cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUo
V2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3
OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCisg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAg
OiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBt
X21vZGUoRGF0YVZpZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNp
emVfdCBlbGVtZW50U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRh
W3R5cGUgLSBJbnQ4QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6ZV90IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3Ro
KCkgY29uc3QKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1
bHQgPSBsZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJm
bG93IGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQg
dGhlIGV4dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0
dXJuIGxlbmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1
ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3
LDcgKzI3NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRX
YXN0ZU1lbW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
dm0pOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IHRo
aXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0
VHlwZWRBcnJheTogewpAQCAtMzE2LDcgKzMyMyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIGlmICghYnVmZmVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhp
cy0+Ynl0ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwor
ICAgIHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkg
ewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
aAppbmRleCBkZDAxZjdmODJhNTMuLmRhNmRkMGJkNzUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNp
bmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQs
IHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTEx
NywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHNpemVfdCBsZW5n
dGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAg
ICAgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAgICAgcmVzdWx0ICo9
IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAt
IDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hl
Y2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVj
dGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJv
RmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgs
IHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9k
ZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMgb25seSBmb3IgY29u
c3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVzZWQgYnkgdGhlIEpJVCdzIHNsb3cg
cGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCB1aW50MzJfdCBs
ZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0
dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKICAgICAgICAgCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBWTSYsIFN0
cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcg
eyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAg
U3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CiAgICAgICAg
IAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cnVjdHVyZTsg
fQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFycmF5TW9kZSBtb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkg
Y29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBAIC0xNjIsNyArMTY0LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogICAgICAgICB1
c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFn
Q2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwotICAgICAgICB1aW50MzJf
dCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgICAgICBUeXBlZEFycmF5
TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CiAgICAgfTsKQEAg
LTE5Myw4ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQo
KTsKICAgICBpbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJl
bnRseSgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7
IH0KLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25z
dDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAg
cHJvdGVjdGVkOgogICAgIEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7
CiAKICAgICBWZWN0b3JQdHIgbV92ZWN0b3I7Ci0gICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAg
c2l6ZV90IG1fbGVuZ3RoOwogICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4
IDM0ZWEyMTQ2MGEwZC4uOTkyMmZmZGI1N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDEzICs2OSwxNSBAQCBpbmxp
bmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5h
bWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQor
CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKwogICAgIGlm
IChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJ
bnQzMigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRl
eCA2ZmFiNDY1ZGQzYjkuLmRmZDZhNTExZDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpT
RGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZl
ciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZp
ZXc6OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0
YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZpZXc6OnNldChK
U0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCkKIHsKICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1
ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpT
VmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJj
Nzg1ZTQ3NjExYS4uZWMyYWY2OTgyMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTQXJyYXlCdWZmZXJWaWV3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGVsZW1lbnRTaXplID0gMTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZWRBcnJheUNvbnRl
bnRUeXBlIGNvbnRlbnRUeXBlID0gVHlwZWRBcnJheUNvbnRlbnRUeXBlOjpOb25lOwogCkBAIC00
NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LAorICAgICAgICBz
aXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9u
J3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFj
YXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29s
IHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMg
SlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxl
bmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwg
c2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFy
ZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1
bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1
MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJl
IGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAg
IHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2Jh
bE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwot
ICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJy
YXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVu
Z3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5n
dGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRz
IGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRh
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFW
aWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3Qg
Ynl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3Qs
ICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXRE
YXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAog
ICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXpl
ID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+
IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBsaXR0bGVF
bmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvQm9vbGVhbihnbG9iYWxP
YmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRh
Vmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hl
ZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmll
dy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7
CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKaW5kZXggYzIyYzU1YTBkODFkLi42YWJkMmE0MWIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAi
VGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZlRnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01NSwxMCAr
NTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZvKiBnZXRCaWdVaW50NjRB
cnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVyZSogUyAgICAgLy8gZnJvbSBKU0NlbGwK
IC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20gSlNPYmplY3QKIC8vICAgICBFbGVtZW50
VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAgICBzaXplX3QgTAogLy8gICAgIFR5cGVk
QXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIg
cG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKKy8vIFRoZXNlIGZpZWxkcyB0YWtlIHVw
IGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQogLy8gaXQg
dGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1YWxseSB1bnVzZWQgYnV0IG1heSBzdG9y
ZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAKLSAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVX
aXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0
aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0
aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZl
Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZl
Y3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRp
YWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBs
KTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUq
LCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBp
bXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9m
KG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAg
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRWZWN0b3IoKSBjb25zdApAQCAtMTIy
LDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5k
cyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBK
U09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5Lgot
ICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBj
YW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
aW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAg
ICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25z
dAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJl
cigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBt
X2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3RvcigpW2ldOwogICAgIH0KICAgICAK
LSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIEpTVmFs
dWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVl
KGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVl
KHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHR5
cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2ts
eShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUu
aXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwgdG9O
YXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBz
ZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVy
biB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9Cisg
ICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAg
ICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0
aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9O
YXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVl
V2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9
CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlj
a2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4g
b2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9s
ZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZz
ZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbihv
ZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNl
dFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUK
ICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJv
b2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBv
biBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRo
cm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNl
dChKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0Kiwgc2l6ZV90IG9iamVj
dE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxl
KTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5
U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBl
PiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2ls
bCB0aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAg
ICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0g
ICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAgIHNpemVfdCBvYmplY3RPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMg
dGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2lu
ZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBl
ZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkr
KykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAg
ICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaAppbmRleCA0NTAyMzg3OTJkMTAuLjFlYjNkMTc4NjFmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUg
IlR5cGVkQXJyYXlzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDcsNyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rv
cigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0
aW9uQ29udGV4dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyAr
NzksNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgotSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTk5LDcgKzEwMCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC0xNDUsNyArMTQ2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxp
ZGF0ZVJhbmdlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTE1OSw4ICsxNjAsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2
YWxpZGF0ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVu
YW1lIE90aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBv
dGhlciwKLSAgICB1bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlw
ZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQs
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIHNpemVf
dCBvdGhlck9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtMjE4LDcgKzIxOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVm
ZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5nQnVmZmVyKCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXpl
ID09IG90aGVyRWxlbWVudFNpemUgJiYgdmVjdG9yKCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAg
ICAgICB8fCB0eXBlID09IENvcHlUeXBlOjpMZWZ0VG9SaWdodCkgewotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRp
dmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBs
YXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldElu
ZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIy
OSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAKICAgICAvLyBOb3cgd2UgZWl0aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBm
aXJzdCB3ZSB0cnkgdG8gY292ZXIgKDJCKS4KICAgICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJF
bGVtZW50U2l6ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0
SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBP
dGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAg
ICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0
KSkpOwpAQCAtMjM4LDExICsyMzksMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVk
IGFuIGludGVybWVkaWF0ZSB0cmFuc2ZlciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZl
Y3Rvcjx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlLCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICBmb3IgKHNpemVfdCBp
ID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgIHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFw
dG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0
SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgIGZvciAoc2l6ZV90IGkgPSBsZW5n
dGg7IGktLTspCiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsg
aSwgdHJhbnNmZXJCdWZmZXJbaV0pOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0
ICsyNTEsMTQgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0
aFNwZWNpZmljVHlwZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9i
amVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHNp
emVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNz
SW5mbyh2bSk7CiAgICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6
dHlwZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0
IG1lbWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIg
ZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUu
CiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVy
aWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxl
bmd0aCwgb3RoZXItPmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0zMTMsOCArMzE0LDEwIEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1
dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChn
bG9iYWxPYmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBnZXQoKSBmb3Igbm93IHByb2Jh
Ymx5IGRvZXMgbm90IGRvIHRoZSByaWdodCB0aGluZyBmb3IgaW5kaWNlcyBhYm92ZSBVSU5UX01B
WC4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dW5zaWduZWQ+KGkgKyBv
YmplY3RPZmZzZXQpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVl
KTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFz
dWNjZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRj
MGViZDFmNjE2NS4uYTk3NDczNzNjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlv
bihKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVBy
b2ZpbGU7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRl
cm5hbEZ1bmN0aW9uOwpAQCAtMjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lO
TElORSBib29sIHB1dEJ5SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYg
KGNhblNldEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAg
c2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRy
eVNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBib29sIGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0Owot
ICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7
CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJh
eVByb2ZpbGUqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAg
ICAgICAKLSAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAor
CisgICAgLy8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0
SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVs
bHB0cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
dGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2Fu
R2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNDExLDM1ICs0MTEsNzMgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gZ2V0KGdsb2JhbE9iamVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lk
IHNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAg
ICAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
KQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZN
JiwgdW5zaWduZWQsIEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJuIHRydWUgdG8gaW5kaWNhdGUg
c3VjY2VzcworICAgIC8vIFVzZSB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0
aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5
U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9m
aWxlKik7CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKICAgICB7CiAg
ICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAg
IHN3aXRjaCAoaW5kZXhpbmdNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJ
TkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1cm4gY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheShpLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheShpLCB2LCBhcnJheVByb2ZpbGUpOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lE
RURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNh
c2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9X
UklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxF
X0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lO
VDMyX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGlmICghdi5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJs
ZU9yQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZBTExUSFJP
VUdIOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVu
Z3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnV0dGVy
Zmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsK
KyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAg
ICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzTnVtYmVy
KCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJm
b3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOwor
ICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgY29udmVy
dERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gdmFsdWU7CisgICAgICAg
ICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAg
IGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgog
ICAgICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBp
IDwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBp
LCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIE5vbkFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KS0+dmVjdG9yTGVuZ3RoKCkKLSAgICAgICAgICAgICAgICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlT
dG9yYWdlKCktPm1fdmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYg
KGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQorICAgICAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBz
ZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2ZTFiYjFiNTlm
MWUuLjEzNWZkMDQ1NDcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAg
ICAgfQogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNk
ZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJy
YXlUeXBlIDpcCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJh
eSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VB
Q0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlf
VFlQRSkKLSN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFy
cmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJh
eSgpOworI2Vsc2UKKyAgICAodm9pZClhcnJheVByb2ZpbGU7CisjZW5kaWYKIAotaW5saW5lIEpT
VmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkg
Y29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZ
X1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcg
KzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQog
fQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlT
dG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAg
IEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2Uo
KTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsK
KyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAg
IGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAg
ICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5z
ZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVBy
b2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5
UHJvZmlsZSkgZG8ge1wKKyAgICBpZiAoKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFy
cmF5TWF4TGVuZ3RoKSAmJiBhcnJheVByb2ZpbGUpXAorICAgICAgICBhcnJheVByb2ZpbGUtPnNl
dE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNk
ZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkb3tcCisgICAgKHZv
aWQpYXJyYXlQcm9maWxlO1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbmRpZgorI2RlZmluZSBD
QVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAorICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUg
OiB7XAorICAgICAgICBhdXRvKiB0eXBlZEFycmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJy
YXkgKj4odGhpcyk7XAorICAgICAgICBpZiAoIXR5cGVkQXJyYXktPmNhblNldEluZGV4UXVpY2ts
eShpLCB2KSlcCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7XAorICAgICAgICB0eXBlZEFycmF5
LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7XAorICAgICAgICBVUERBVEVfQVJSQVlfUFJPRklMRShp
LCBhcnJheVByb2ZpbGUpO1wKKyAgICAgICAgcmV0dXJuIHRydWU7XAorICAgIH0KKyAgICBGT1Jf
RUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJB
WV9UWVBFKQorI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQorI3VuZGVmIFVQREFURV9BUlJB
WV9QUk9GSUxFCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9Cit9CisKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRh
dGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuaAppbmRleCBjZTczMGYzYmY5NjUuLjA5MTllNzIxODZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtODk4LDggKzg5OCw4IEBA
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAgaWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsK
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2UpOwotICAgICAgICBpZiAo
b2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4UXVpY2tseShpbmRleCkpOworICAgICAgICBp
ZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpbmRleCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCiAgICAg
aWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmcoYmFzZSktPmNhbkdldEluZGV4KGluZGV4
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAppbmRleCBlOGRj
MWEzMGFlZGQuLjJhODYzNjMxYWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QYWdlQ291bnQuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQgKiBLQjsKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
KDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE1BWF9BUlJBWV9CVUZGRVJfU0la
RSAvIHBhZ2VTaXplKTsKIAogICAgIHVpbnQzMl90IG1fcGFnZUNvdW50OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oCmluZGV4IGZmMTU2NWYxMWRlZC4uOTNmMDZjOWQ1YmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dl
ciA9IHNpemVvZihUYXJnZXQpID49IHNpemVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25l
ZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Ry
dWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wg
Y29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUg
c2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVh
c2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKICAgICB9CiB9OwogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0
eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0
eXBlLgogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8
PSB2YWx1ZSAmJiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwpA
QCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2Vy
PFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBp
bkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFdoZW4gY29udmVydGluZyB2YWx1ZSB0
byB1bnNpZ25lZCBTb3VyY2UsIHZhbHVlIHdpbGwgYmVjb21lIGEgYmlnIHZhbHVlIGlmIHZhbHVl
IGlzIG5lZ2F0aXZlLgogICAgICAgICAvLyBDYXN0ZWQgdmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2Vy
IHRoYW4gVGFyZ2V0OjptYXggYXMgU291cmNlIGlzIGJpZ2dlciB0aGFuIFRhcmdldC4KQEAgLTE2
OCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUaGUgdW5zaWduZWQgU291cmNlIHR5cGUgaGFz
IGdyZWF0ZXIgcHJlY2lzaW9uIHRoYW4gdGhlIHRhcmdldCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3Vy
Y2Ugd2lsbCB3aWRlbi4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJj
ZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKSk7CkBAIC0xNzYsNyArMTc2LDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJn
ZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2Us
IHRydWUsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkK
KyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAg
ICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRp
YyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3Vu
ZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUg
cHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwg
dHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisg
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIC8vIFRhcmdldCBpcyBzaWduZWQgd2l0aCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9u
LiBJZiBzdHJpY3RseSBncmVhdGVyLCBpdCBpcyBhbHdheXMgc2FmZS4KICAgICAgICAgaWYgKHNp
emVvZihUYXJnZXQpID4gc2l6ZW9mKFNvdXJjZSkpCkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwg
ZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisg
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIC8vIFRhcmdldCBpcyB1bnNpZ25lZCB3aXRoIGdyZWF0ZXIgcHJlY2lzaW9uLgogICAg
ICAgICByZXR1cm4gdmFsdWUgPj0gMDsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNv
dXJjZSB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsK
ICAgICByZXR1cm4gQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVl
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0
aWMgaW5saW5lIGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0
KQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5s
aW5lIGNvbnN0ZXhwciBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91
dHB1dCkKIHsKICAgICBpZiAoIWlzSW5Cb3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTk5Niw2ICs5OTYsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUuLi4gQXJncz4gYm9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKICAgICBy
ZXR1cm4gY2hlY2tlZFByb2R1Y3Q8VD4oYXJncy4uLikuaGFzT3ZlcmZsb3dlZCgpOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzU3VtU21hbGxlclRoYW4oVCBhLCBUIGIsIFQgYm91
bmQpCit7CisgICAgQ2hlY2tlZDxUPiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVy
biAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8IGJvdW5kOworfQorCiB9CiAK
IHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsKQEAgLTEwMTcsMyArMTAyNCw0IEBAIHVzaW5n
IFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVzaW5nIFdURjo6aXNJbkJvdW5kczsKIHVzaW5n
IFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5nIFdURjo6c3VtT3ZlcmZsb3dzOwordXNpbmcg
V1RGOjppc1N1bVNtYWxsZXJUaGFuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKaW5kZXggNTE3MzcyMTdhNTUx
Li5kY2IwOGVkZWMzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApAQCAtMTQ3LDYgKzE0NywxMSBAQAog
I2RlZmluZSBVU0VfQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorLy8g
V2hldGhlciB0byBzdXBwb3J0IHR5cGVkIGFycmF5cyA+IDJHQgorI2RlZmluZSBVU0VfTEFSR0Vf
VFlQRURfQVJSQVlTIDEKKyNlbmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3VsZCBiZSBt
b3JlIHNwZWNpZmljIGlmIGl0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSogKi8KIC8q
IFVzZSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lm
IENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5k
ZXggY2I3ZTg0ZDQ1MzgzLi5iMThkOGZkNmEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5
PiYmIGRlc3RpbmF0aW9uLAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGgg
LSBidWZmZXJPZmZzZXQ7CisgICAgc2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9m
ZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3RpbmF0aW9uLmdldCgpLmxlbmd0aCgpLCBj
b3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IGNoYW5uZWxEYXRhLT5kYXRhKCk7
CkBAIC0yMjYsNyArMjI2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlU
b0NoYW5uZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBzb3VyY2UsIHVuc2lnbmUKICAgICBpZiAoYnVm
ZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAg
dW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIHNpemVfdCBj
b3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihz
b3VyY2UuZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3Jj
ID0gc291cmNlLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCA2YzFjOTQ0MDIyZWQuLmE5MjNhYzQ0ODAy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFu
YWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuY3BwCkBAIC0xOTYsOCArMTk2LDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpn
ZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogICAgIGRv
RkZUQW5hbHlzaXNJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBsaW5l
YXIgbWFnbml0dWRlIHRvIHVuc2lnbmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5zaWduZWQgc291
cmNlTGVuZ3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGgg
PSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAg
IHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCksIGRlc3Rp
bmF0aW9uQXJyYXkubGVuZ3RoKCkpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGNv
bnN0IGRvdWJsZSByYW5nZVNjYWxlRmFjdG9yID0gbV9tYXhEZWNpYmVscyA9PSBtX21pbkRlY2li
ZWxzID8gMSA6IDEgLyAobV9tYXhEZWNpYmVscyAtIG1fbWluRGVjaWJlbHMpOwogICAgICAgICBj
b25zdCBkb3VibGUgbWluRGVjaWJlbHMgPSBtX21pbkRlY2liZWxzOwpAQCAtMjI3LDcgKzIyNiw3
IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YShGbG9hdDMy
QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVf
dCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwogICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1p
bihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4g
MCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXpl
KCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsK
QEAgLTI1MSw3ICsyNTAsNyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9t
YWluRGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwor
ICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwogICAgIHNpemVfdCBsZW5ndGgg
PSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAo
bGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1
ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4g
ZmZ0U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uODM1MGI4OTBiMTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTE0ODcsNiArMTQ4NywxMSBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZUxpdHRsZUVu
ZGlhbihtX2J1ZmZlciwgaSk7CiAgICAgfQogCisgICAgdm9pZCB3cml0ZShzaXplX3QgaSkKKyAg
ICB7CisgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsKKyAgICB9CisKICAg
ICB2b2lkIHdyaXRlKGRvdWJsZSBkKQogICAgIHsKICAgICAgICAgdW5pb24gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi5l
NzkyMDQyYWQ2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1Nl
bmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2Vi
Q29yZTo6QmxvYiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwog
ICAgIGlmICghYnl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6
OmNyZWF0ZSgwVSwgMSksIDAsIDApOworICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KDBVKSwgMSksIDAsIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8QmxvYkxvYWRl
cj4oW3RoaXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li5hNmVmNGUzYWZmNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTYzLDcg
KzYzLDEwIEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1
cm5WYWx1ZSwgViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNz
KQogICAgIHsKICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFs
dWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVu
ZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBzaXplX3QgYWN0dWFsT2Zmc2V0OworICAgICAg
ICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFubmVz
cyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9IGFj
dHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCg==
</data>
<flag name="commit-queue"
          id="463726"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439967</attachid>
            <date>2021-10-02 10:34:24 -0700</date>
            <delta_ts>2021-10-04 15:24:04 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>194841</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5lNjc2N2M2YTlhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0K
KwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZf
NjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRp
ZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIg
aW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRm
b3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29u
ZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQg
ZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0
YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsK
KyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAg
ICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29u
c3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRp
bmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUg
YSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAg
ICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQz
Ml90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50
LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQo
Y29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAg
IH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CmluZGV4IDQyNTA5MDNiYzMyMi4uMTc5NmI2NTFiYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDgg
KzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1Jl
Z2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25h
YmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2
NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMz
MDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2go
Y29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwog
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0
Y2YyMjQwZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIs
MTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQs
IGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRy
TGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRl
QXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhH
UFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNj
cmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0
aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAppbmRleCBjY2UwZDAxZjQwMTcuLmQ3NzQ2OTk5YmUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lz
dGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+
PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8g
SW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBkMWFlM2I1NTM1NjUuLmQ3ZGYx
ZTkzZjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtMTE5MSwxMiArMTE5MSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlH
UFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpKTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIC8vIFRoZSBs
ZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0
aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7
CisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxI
ZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZWxzZQog
ICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzdGF0
ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2VuZGlmCiAKICAgICAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CkBAIC0xNjMwLDkg
KzE2MzUsMTYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
ICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRz
IGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2Zp
bGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgc3RhdGUu
ZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JF
cXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2Fk
MzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBv
ZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KICAg
ICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAg
ICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5
MTY3OTQ4NDNiMC4uOTkzMWIxMGY4MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJy
YXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVz
ZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJl
IGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJl
IGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRo
ZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2
LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5k
ZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0y
MDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgLy8gQWNjZXNzaW5nIHR5cGVkIGFycmF5cyBsYXJnZXIgdGhhbiB0aGF0IHRl
bmRzIHRvIGJlIG1vcmUgY29tcGxpY2F0ZWQgYXMgd2UgY2FuJ3QgZm9yY2UgY29udmVydCBldmVy
eXRoaW5nIHRvIGludDMyX3QuCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IHN1Y2ggbGFyZ2UgdHlw
ZWQgYXJyYXlzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB7IG1fbWF5
QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJh
eShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUJlTGFyZ2VU
eXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAg
ICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAm
bV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlN
b2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJl
c3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KQEAgLTI0
NCw2ICsyNTQsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OyAvLyBUaGlz
IGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2Fz
ZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVu
ZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1
c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlz
IGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgog
ICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9OworI2VuZGlm
CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBt
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1G
aXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NiwxMyBAQCBzdGF0aWNfYXNzZXJ0KHNp
emVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGUg
ewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0OworICAgIGV4
cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
ICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7CkBAIC0y
ODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3VzZXNPcmln
aW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
ICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJyYXlQcm9maWxl
Lm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVk
QXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE2LDExIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
b3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMg
eyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJy
YXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5rZWRBcnJheVBy
b2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCBiMWRmY2EyNzQ5YzEuLjA0MmIwN2I4OGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzQ4
Niw2ICszNDg2LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7
CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051
bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7
CkBAIC0zODIxLDYgKzM4MzIsMTkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKHZp
ZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXQgPSB2
aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNl
dCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
aWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZl
Mjc1MzEwNGJkMy4uMDU5YmEzZjZkY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2
ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2Rl
LT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAg
ICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBzaG91bGQgbm90
IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAg
ICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZlY3RvcigpOwog
ICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSk7IApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4IDZlNGZlOWFm
YTNlYi4uMDQxYWRiNzg2MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5l
KAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFjdGlvbigpKTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpKQorICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkK
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAg
IAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMgb2JqZWN0IGJl
aGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYgKzI5NCw3IEBA
IEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdV
aW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9ubHkgcHJlc2Vy
dmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBhbmQgbm90IEdl
dEJ5VmFsIGFzIHdlbGwuCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsKSB7CiAg
ICAgICAgICAgICBpZiAoZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBP
dXRPZkJvdW5kcykgfHwgIWlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHlw
ZWRBcnJheVJlc3VsdCh3aXRoU3BlY3VsYXRpb24oQXJyYXk6Ok91dE9mQm91bmRzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAppbmRleCBhMDI2YWFkMTg5M2IuLmRm
NzVjNzg5MGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCkBA
IC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24g
PSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6
OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBBcnJheTo6V3JpdGU7CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBleHBsaWNpdCBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkFjdGlvbiBhY3Rp
b24pCkBAIC0xMzYsNiArMTM3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3Vs
YXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0g
QXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTQ1LDE1ICsxNDcsMTcgQEAgcHVibGljOgogICAgICAg
ICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNC
eXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24g
PSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNl
OwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCisgICAgQXJyYXlNb2Rl
KEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpB
Y3Rpb24gYWN0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2UpCiAgICAgewog
ICAgICAgICB1LmFzQnl0ZXMudHlwZSA9IHR5cGU7CiAgICAgICAgIHUuYXNCeXRlcy5hcnJheUNs
YXNzID0gYXJyYXlDbGFzczsKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gc3BlY3Vs
YXRpb247CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAgICAg
ICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFy
Z2VUeXBlZEFycmF5ID0gbWF5QmVMYXJnZVR5cGVkQXJyYXk7CiAgICAgfQogICAgIAogICAgIEFy
cmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6
OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNjMsNiAr
MTY3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6
SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAg
ICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJl
TGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAogICAgIEFycmF5OjpUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6VHlwZT4odS5hc0J5dGVzLnR5
cGUpOyB9CkBAIC0xNzAsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEFycmF5OjpTcGVjdWxhdGlv
biBzcGVjdWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpTcGVjdWxh
dGlvbj4odS5hc0J5dGVzLnNwZWN1bGF0aW9uKTsgfQogICAgIEFycmF5OjpDb252ZXJzaW9uIGNv
bnZlcnNpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6Q29udmVyc2lvbj4o
dS5hc0J5dGVzLmNvbnZlcnNpb24pOyB9CiAgICAgQXJyYXk6OkFjdGlvbiBhY3Rpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6QWN0aW9uPih1LmFzQnl0ZXMuYWN0aW9uKTsg
fQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSBjb25zdCB7IHJldHVybiB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KICAgICAKICAgICB1bnNpZ25lZCBhc1dvcmQoKSBj
b25zdCB7IHJldHVybiB1LmFzV29yZDsgfQogICAgIApAQCAtMTc5LDM1ICsxODUsNTAgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXJyYXlNb2RlIGZyb21PYnNlcnZlZChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2ZpbGUqLCBBcnJheTo6QWN0aW9uLCBib29s
IG1ha2VTYWZlKTsKLSAgICAKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0
eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb24oQXJy
YXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24o
KSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoQXJyYXlDbGFzcyhBcnJh
eTo6Q2xhc3MgYXJyYXlDbGFzcykgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoQ29udmVyc2lv
bihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25G
cm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBl
QW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJz
aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKTsKKyAgICB9CisKKyAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3NBbmRTcGVj
dWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBB
cnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkp
IGNvbnN0CiAgICAgewotICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsK
KyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9u
LCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSk7CisgICAgfQog
CisgICAgc3RhdGljIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpCisgICAgewogICAgICAgICBpZiAobWFrZVNhZmUpCi0gICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOworICAgICAgICAgICAgcmV0dXJuIEFy
cmF5OjpPdXRPZkJvdW5kczsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hv
bGUobG9ja2VyKSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6VG9Ib2xlOwor
ICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRpb24pOworICAgICAgICAgICAgcmV0dXJu
IEFycmF5OjpJbkJvdW5kczsKICAgICB9Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5
UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiB3aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wg
bWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNz
OwotCiAgICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKHByb2ZpbGUt
PnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdp
bmFsQXJyYXkoKSkgewogICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHBy
b2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpOwpAQCAtMjIxLDIzICsyNDIsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRo
U3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKLSAgICB9
Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5
TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJh
eU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252
ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkp
OworCisgICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisKKyAgICAgICAgYm9vbCBs
YXJnZVR5cGVkQXJyYXkgPSBwcm9maWxlLT5tYXlCZUxhcmdlVHlwZWRBcnJheShsb2NrZXIpOwor
CisgICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJn
ZVR5cGVkQXJyYXkobXlBcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgbGFyZ2VUeXBlZEFycmF5KTsK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSB1bnVzZWRJ
bmRleFNwZWN1bGF0ZWRUeXBlID0gU3BlY0ludDMyT25seTsKQEAgLTUyNiw3ICs1MzYsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpCiAgICAgICAgICAg
ICAmJiBhcnJheUNsYXNzKCkgPT0gb3RoZXIuYXJyYXlDbGFzcygpCiAgICAgICAgICAgICAmJiBz
cGVjdWxhdGlvbigpID09IG90aGVyLnNwZWN1bGF0aW9uKCkKLSAgICAgICAgICAgICYmIGNvbnZl
cnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCk7CisgICAgICAgICAgICAmJiBjb252ZXJzaW9u
KCkgPT0gb3RoZXIuY29udmVyc2lvbigpCisgICAgICAgICAgICAmJiBtYXlCZUxhcmdlVHlwZWRB
cnJheSgpID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUmIG90aGVyKSBjb25zdApAQCAtNTc5LDcg
KzU5MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50OF90IGFycmF5Q2xhc3M7CiAgICAg
ICAgICAgICB1aW50OF90IHNwZWN1bGF0aW9uOwogICAgICAgICAgICAgdWludDhfdCBjb252ZXJz
aW9uIDogNDsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogNDsKKyAgICAgICAgICAgIHVp
bnQ4X3QgYWN0aW9uIDogMTsKKyAgICAgICAgICAgIHVpbnQ4X3QgbWF5QmVMYXJnZVR5cGVkQXJy
YXkgOiAxOwogICAgICAgICB9IGFzQnl0ZXM7CiAgICAgICAgIHVuc2lnbmVkIGFzV29yZDsKICAg
ICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDg4MTFiODlmMjRhNy4uM2Q3OWYyNGU3ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgwNiw4ICszODA2LDE2
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdl
dCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeVZhcmlhbnQmIHZh
cmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
CiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0aWNfYXNzZXJ0KGVuYWJs
ZUludDUyKCkpOworI2VuZGlmCisKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsK
ICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CisjaWYgIVVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIxLDI2ICszODI5LDMyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGU7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoTm9kZSA9
IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKCFp
c0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5
cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCkt
PnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTIsMTMgKzM4NjYsMjAgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6Okdl
bmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdl
dEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5n
dGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0
aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFy
cmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODcwLDcgKzM4OTEsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMK
ICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAg
ICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShh
cnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjU0OGJkMGVlZTllZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk6CiAg
ICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
IGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRB
cnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOwogICAgICAgICByZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYsMTQgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7Cisg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQXJyYXlM
ZW5ndGhMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAg
ICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNo
IChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXgg
YzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgp
CiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29u
c3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0
N2E5Ny4uNjA5ZmYwODU3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2Fz
ZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0Ogor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5
M2VlZTZjYS4uMTk2NWQ0Mzg5NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQog
ICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAg
ICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAg
ICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJh
eSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
bmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4g
T3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhh
dmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6
R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDIxIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5
OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNl
IEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIC8vaWYgKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMSktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9kZSgp
Lm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIC8v
ZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzEyMDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihp
bmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUo
KS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCku
aXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5t
YXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhh
c0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApA
QCAtMTI2Niw3ICsxMjgzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpV
aW50MTZBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9pZiAoY2hpbGQy
LT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFu
RWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3Bl
Y3VsYXRlSW50NTIoKSkKQEAgLTEyNzcsNyArMTI5NywxMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rmxv
YXQ2NEFycmF5OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICAgICAgLy9pZiAoY2hpbGQyLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJh
eU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAg
ICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAg
ICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKQEAgLTE3MTcsMTIgKzE3NDAs
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6
IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0yMTQ5LDYgKzIxNzYsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpLnJlZmluZShtX2dyYXBoLCBub2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGlj
dGlvbigpLCBBcnJheU1vZGU6OnVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAg
ICAgQVNTRVJUKGFycmF5TW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUpOworICAgICAgICAgICAgYmxlc3NBcnJheU9w
ZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgRWRnZSgpLCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVl
ZHNTdG9yYWdlKTsKKworICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorI2Vsc2UKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3MzIs
NyArMjc4MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAg
ICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZp
ZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vaWYgKG5vZGUtPmNoaWxkMigpLT5z
aG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIC8vZWxzZSAvLyBGSVhNRTogbm90IGNsZWFyIHdoYXQgd2Ugc2hv
dWxkIGRvIGhlcmUgaWYgdGhlIGluZGV4IGlzIHNvbWV0aGluZyBjcmF6eQorICAgICAgICAgICAg
Ly8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4o
bm9kZS0+Y2hpbGQzKCkpOwogCkBAIC0yNzU4LDcgKzI4MDksMTAgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBjYXNlIERhdGFWaWV3U2V0OiB7CiAgICAgICAgICAgICBmaXhFZGdlPERhdGFWaWV3T2Jq
ZWN0VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAg
Ly9pZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIo
KSB8fCAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsK
KyAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5V
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAgICAgICAgICAgCkBAIC00MDk2
LDE0ICs0MTUwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGls
ZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRB
cnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1v
ZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAg
IHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDgg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBp
cyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcg
Y29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhl
ciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3
aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQg
aWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGlu
IG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBt
YXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2Vz
IG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlz
IGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1h
eSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZS5jcHAKaW5kZXggMWJhYTFjOGJjZjUxLi40M2I1ZDEwMTJlMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2UuY3BwCkBAIC0xNDk5LDYgKzE0OTksNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7
CiAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25zaGlwKG5vZGUsIG1femVybywg
UmVsYXRpb25zaGlwOjpHcmVhdGVyVGhhbiwgLTEpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAyYWY3OTcwNjhhOWMuLmQxM2QzN2YwMmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTY1LDYgKzE5NjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBjYXNlIEFycmF5UG9w
OgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAgICAgIGNh
c2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAgICAgICAgIGNhc2UgQXJyYXlJ
bmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgogCiAgICAgICAgIGNhc2UgQXJy
YXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBI
YXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJ
bkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4uNzI2NGRjMmY1NjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNjEsOCArMjYxLDExIEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aVB1dEJ5T2Zm
c2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNldCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgZm9y
IFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVzIHRoYXQgY2FuIGhhdmUgYSBs
ZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8gXAorICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9y
TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDY5YWNmNTE5YzBi
YS4uZDVkYTM0YTUxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAg
fQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5k
ZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhR
dWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRl
eFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBA
IC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxT
dHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQ
VVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNoYXIqIG5ld1R5cGVk
QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVj
dHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2
ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzaXpl
X3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2
ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3Jl
YXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJy
YXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIq
PihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0Ns
YXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRl
IDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0
cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTkyNCw3ICsxOTI0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkp
OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcg
KzE5ODgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFt
cGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMjAsNyArMjAyMCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50
MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpu
dWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTIsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsbwogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzPEpTQmlnSW50NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCmluZGV4IDg0NGMxOWIzMTE0MS4uODBkZjgxZmRmMDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcg
QEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJm
bHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hh
ciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Fy
cmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVj
dHVyZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjBkMDQ0ZjVmNWMwLi40Nzg3MDNh
YzEwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODYsNiArOTg2LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uNWJkMzc3ZGFmODk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzczLDYgKzM3Myw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGI0YzhmODYwYjUxNC4uODgyZDc3ZDBmZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzI0NSwxNiArMzI0NSwyOCBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJ
VDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiBub2RlLCBHUFJSZQogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXco
CiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5t
X3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWlu
dDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2
aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5j
aGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25z
dGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGlu
ZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1t
NjQobGVuZ3RoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIGluZGV4R1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAg
ICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKQEAgLTc5NjAsNyArNzk3Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywg
R1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkg
ewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVu
dGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0
aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAg
VU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODM0MiwxMiArODM1NCwxOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
U291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0
R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTExLDEwICsxMTEy
OSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXpl
KE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlU
eXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgp
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1
cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5n
ZXQoKSk7Ci0gICAgCisKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBz
bG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRm
b3JtcworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNpemVHUFIpOworI2Vu
ZGlmCisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBl
ZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSogbm9kZSwgVHlwZWRB
cnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBH
UFJSZWcgc2l6ZUdQUikKK3sKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQ
UlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OwpAQCAtMTExMzAsNiArMTExNTgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRy
dXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpKTsKKyAgICAvLyBX
ZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUg
aXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90
PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOwogICAgIAogICAgIG1faml0Lm1v
dmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMy
KGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTExODUs
OSArMTEyMTUsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShOb2RlKiBub2RlKQogICAgIG1faml0LnN0b3JlUHRyKAogICAgICAgICBzdG9yYWdl
R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBt
X2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0
ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE1
OSw2ICsxNDE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVk
QXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNh
c2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3Vt
ZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5Li5hZGM4MDZhYTIyOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEz
MDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3
U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwot
ICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2Rl
KiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsK
ICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lm
IFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBh
cmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBp
bGVHZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAKICAg
ICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzNSw2ICsxNDQyLDkgQEAgcHVibGljOgogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAg
ICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIGluZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25z
dCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZv
cm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNW
YWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZp
eCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxl
ZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmlj
YWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgog
Y2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1f
Z3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRo
ZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4
dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBp
cyBpbiB0aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBj
bGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmVmYmNlZGRiYzBhLi40ZWQ3NTlmMTkwZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoK
ICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJy
YXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBl
IHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAo
aXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXko
bm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0
aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKKyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFu
IDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAg
ICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2
MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MjogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVH
ZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlMTM1ZmQ1MzQ4ZTgu
LmNlNDAyY2MyMGM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUq
IG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBl
ZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJp
Y3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNp
emVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVn
aXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSogbm9k
ZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFy
cmF5VmlldygpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKyAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOwor
ICAgIHN0YXRpY19hc3NlcnQoTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDwgKDF1bGwgPDwgNTIpLCAi
dGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIHNpemUgb2YgYSB0eXBlZCBhcnJheSB3b24ndCBmaXQg
aW4gYW4gSW50NTIiKTsKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHZlY3Rvcih0aGlzKTsKKyAgICBH
UFJUZW1wb3JhcnkgZGF0YSh0aGlzKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKyAgICBHUFJSZWcgdmVjdG9yR1BSID0gdmVjdG9yLmdwcigpOworICAgIEdQUlJlZyBkYXRh
R1BSID0gZGF0YS5ncHIoKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSB2ZWN0b3JHUFIpOworICAg
IEFTU0VSVChiYXNlR1BSICE9IGRhdGFHUFIpOworICAgIEFTU0VSVCh2ZWN0b3JHUFIgIT0gZGF0
YUdQUik7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOworCisgICAgSklU
Q29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwKKyAgICAgICAg
VHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBudWxsVmVj
dG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmVjdG9yR1BSLCBUcnVz
dGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKTsKKworICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2FnZVdpdGhvdXRVbnRhZ2dp
bmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAgY2FnZVR5cGVkQXJyYXlTdG9y
YWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwg
YXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNhZ2luZy4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTE1CisgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1ZmZlckdQUiwgQXJyYXlC
dWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICBt
X2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRpZgorCisgICAgbV9qaXQuc3Vi
UHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0g
bV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1f
aml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZtX2ppdCk7CisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIpOworCisgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNTRVJUKCFKU0FycmF5QnVmZmVy
Vmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNl
bmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9k
ZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAtNDM3NSw2ICs0NDU4LDE0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVu
Z3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0lu
dDUyOgorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGNvbXBpbGVHZXRBcnJh
eUxlbmd0aEFzSW50NTIobm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlk
OiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTQ0OTMsNiArNDU4NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJv
dG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4Myw3ICs1NjgzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUg
PiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUg
LSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwor
ICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7
CiAKQEAgLTU3ODQsNyArNTg4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7
CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0
KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA1ZjUxZjIy
NTEwNGYuLjFlMTQwMDUwNGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzksMTAgKzI3OSwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAg
ICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAg
ICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKQEAgLTM1OSw2ICszNjEsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEyNDhjOWZhZDY3Li5jOTkwZDU5
Y2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTE3MCw2ICsxNzAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAg
Y2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgU3Rv
cmVCYXJyaWVyOgpAQCAtMzkxLDYgKzM5Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVu
dHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0M2QyNmU4M2U5
NjguLjEwZWQ5NmU5N2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTAyNSw2ICsxMDI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsK
ICAgICAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgY2Fz
ZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNzUsNiArMTE4MCwxMyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIo
KTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAg
ICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC00ODI4LDkgKzQ4NDAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1f
b3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIExW
YWx1ZSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCkKICAg
ICB7Ci0gICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsg
ICAgCisgICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
IAogICAgICAgICBMQmFzaWNCbG9jayB3YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwog
ICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQ4NDYs
NyArNDg1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8od2FzdGVmdWxDYXNlLCBub3ROdWxsKTsKIAogICAgICAgICBMVmFsdWUgdmVj
dG9yID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3Zl
Y3Rvcik7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNv
bnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwgCisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJy
YXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250
aW51YXRpb24pLCB1bnN1cmUobm90TnVsbCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE51bGwsIGNvbnRpbnVhdGlvbik7CkBAIC00ODY2LDkgKzQ4NzgsMjIgQEAgcHJpdmF0ZToKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKIAotICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9J
bnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQp
KSk7CisgICAgICAgIHJldHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91
dCwgd2FzdGVmdWxPdXQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldEludDMyKG1f
b3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisg
ICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
RXhjZXB0Q2FzdGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTUwNTQsOCArNTA3OSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUt
PmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBz
ZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRp
dmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBu
dWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwobGVuZ3RoLCBtX291dC5jb25zdEludDY0KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworICAgICAgICAgICAgICAgIHNldElu
dDMyKG1fb3V0LmNhc3RUb0ludDMyKGxlbmd0aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2NCw2ICs1MDkwLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFz
SW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ub2RlLT5hcnJheU1vZGUo
KS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQu
bG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZv
aWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC04MTY5LDk4ICs4MjAyLDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5
cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAg
ICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFu
Y2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAg
ICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1
ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nh
c2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwot
Ci0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNo
bChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJy
YXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgK
LSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0
cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBM
VmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUg
c3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwK
LSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwK
LSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFw
cy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXpl
KTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVS
ZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFy
YW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFt
c1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlm
CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIo
bV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3Rv
cmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGZhc3RS
ZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBl
KSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAgICBj
YXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFs
bG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZPUl9F
QUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBF
X0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5
cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9i
amVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAg
ICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5j
b25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVu
Y2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNo
b3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKLQotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7
Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwog
Ci0gICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNs
b3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAo
Y29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRo
OjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxs
R2VuZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRB
cnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwot
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93
UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsK
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0g
ICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5
cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLQorI2VuZGlmCiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTog
ewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKIApAQCAtODI3Nyw3ICs4MjMzLDEwMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJh
eVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2
NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1f
b3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6
OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHko
c21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNz
dW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEg
MzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+
KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisgICAgICAgIExWYWx1ZSBzaXpl
ID0gbV9vdXQuY2FzdFRvSW50MzIoc2l6ZTY0Qml0cyk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVT
aXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291
dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBp
ZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNp
emUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBt
X291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
fnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVl
IGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9
IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRX
b3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8s
CisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291
dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAg
ICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQor
ICAgICAgICB7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9FeHRQdHIo
c2l6ZSk7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFw
cGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBw
ZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIp
KTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1sw
XS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50
aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVT
dG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0UmVz
dWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7Cisj
ZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAj
IyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxK
UyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBc
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9F
WENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAgICBm
YXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1f
b3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFn
ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Cisg
ICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJ
bnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBt
X291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9
IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRp
b24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFy
cmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgp
KSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlv
bnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJp
dHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE1NTkxLDcgKzE1NjQyLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRh
KCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBMVmFsdWUg
aW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRl
eFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0
LDcgKzE1Nzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1f
bm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnpl
cm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJh
eUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2Fk
NjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
OwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7
CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVj
ayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6
ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3Mjg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBk
b1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02NEUp
CiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAgICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQu
bG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZh
bHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZElu
c3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBw
b2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9u
TmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJu
IGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZh
bHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNl
LCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZh
bHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDk0ZjdhZmUxMWE5MS4uN2E1NjA3NTY1ZDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC03OSwyMyArNzksMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRj
aCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBz
dGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQz
Mih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3Ro
SW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAg
ICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNoaWZ0NjQo
VHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICBq
aXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5z
Y3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkgewotICAg
ICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlwZWRBcnJh
eXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KLSAgICAg
ICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkp
LCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBz
aW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5n
dGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0MzIoVHJ1
c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAgICB9Ci0K
ICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAg
ICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNiw4ICsx
MzUsMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5ib3hJ
bnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hG
UFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOwor
I2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ3ZGY3
Y2I4ZTg3NS4uNWQ2YjBhODVhNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaSwg
dmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBp
LCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MSwxNyArMjMzOSwxNyBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6
b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7Ci0g
ICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVp
bnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsK
LSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5k
ZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgo
aSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhi
YXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChh
cnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAg
IGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkp
KQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAg
ICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5
KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAg
ICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKQEAgLTIzNzEs
OCArMjM2OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdl
dChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051bWJlcigp
ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYwMDQ0ZS4uZTc2ZGFk
YTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNN
X0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNkZWZp
bmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQp
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDJlZmI3MWM0YTY0Li5h
Mzg4NDI2M2IxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtMTA0Niw4ICsxMDQ2LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUK
ICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBl
bHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5H
ZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5k
ZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50
cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBm
YWxzZTsKIApAQCAtMTE2OSwxNCArMTE2OSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAg
ICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUp
KQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7
Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhR
dWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGMzNWU0NTQ0MTEwNi4uNWVkZWE4M2IwNmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVjdHVy
ZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5
Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdFX1RZUEVEX0FSUkFZ
UworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVBy
b2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFIG9yIFJJ
U0NWNjQKQEAgLTEzMDAsNyArMTMwNCw3IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNl
bGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6
bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNybyBn
ZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCittYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwg
aW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VU
eXBlZEFycmF5LCBzbG93UGF0aCkKICAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBo
YXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZy
b250LgogICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBlW2Jhc2VdLCB0MgogICAgIHN1YmkgRmlyc3RU
eXBlZEFycmF5VHlwZSwgdDIKQEAgLTEzMTEsMTMgKzEzMTUsMjIgQEAgbWFjcm8gZ2V0QnlWYWxU
eXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0
QnlWYWwsIHMKICAgICBpZiBBUk02NEUKICAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKICAgICAg
ICAgY29uc3Qgc2NyYXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X2xlbmd0aFtiYXNlXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQ
YXRoCisgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVu
Z3RoCisgICAgICAgIGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgZWxzaWYgSlNW
QUxVRTY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVu
ZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVy
IHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xl
bmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3Jh
dGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRo
ZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAor
ICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICBicWJlcSBpbmRleCwgU21hbGxUeXBl
ZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxUeXBlZEFycmF5CisgICAgICAgIHNldExhcmdlVHlwZWRB
cnJheSgpCisuc21hbGxUeXBlZEFycmF5OgorICAgIGVuZAorCiAgICAgbG9hZHAgSlNBcnJheUJ1
ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2VdLCB0MwogICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5n
dGgsIGJhc2UsIHNjcmF0Y2gpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZjNkOTdjYTRmN2NiLi4z
NjMyMzcxNDFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRl
eGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZh
bFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlW
YWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5k
ZXggZmJkYmE2OGUwZjMwLi44MjM1N2ZhYzMzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3
MTMsMTYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmluaXNoR2V0QnlWYWwo
c2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlT
CisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAgICBzdG9yZWIg
MSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVk
QXJyYXlbdDVdCisgICAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VU
eXBlZEFycmF5KCkKKyAgICAgICAgICAgIGNyYXNoKCkKKyAgICAgICAgZW5kCisgICAgZW5kCisK
ICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3NjMsNyAr
MTc3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEs
IGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93
KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5p
c2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAK
IC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRf
YnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
CmluZGV4IGM5YjhmMmE3MTkxZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8U2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3Ry
dWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAotU2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3Ry
dWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1
Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpAQCAt
NjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKEFy
cmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlzKTsK
IH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBk
ZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAsIG1f
c2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lkIEFy
cmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
Cit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
CiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwgc2l6
ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0g
bnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUgLyBu
dW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZX0JV
RkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsKKyAg
ICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVzLmhh
c092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZFUl9T
SVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2l6
ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRpb25T
aXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5C
eXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRp
b25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRo
aW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZl
ciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlw
ZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUlu
Qnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQog
ICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRhLCAw
LCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7Cisg
ICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1
Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAg
LTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJh
eUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJ
bkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVy
ID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVm
ZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUo
b3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUo
c291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBA
QCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50
cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4g
dGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9t
IHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6
OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJv
bUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QK
IC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5
cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBk
aWZmZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20g
dGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEg
JiYgIUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAg
ICBHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcg
QEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29u
dGVudHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVt
ZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6
ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90
aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29u
dGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwg
QXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RG
TW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlh
bGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXpl
LCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBi
eXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1
dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkp
OwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBp
ZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5
KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4g
YnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGlj
eSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250
ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwpA
QCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNv
bnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZh
bHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCkK
IHsKICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAx
LDkgKzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1
bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWdu
ZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90IEFy
cmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25l
ZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVuZ3Ro
ID0gYnl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3Vy
cmVudExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJy
ZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENs
YW1wZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVk
IGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25z
dAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7
CisgICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAg
YXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJl
c3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLjg5YTBiOWM4YTkx
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzksNyArMzksMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBDUFUoQUREUkVTUzY0KQor
I2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxzZQorLy8gQmVj
YXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMgb2Yg
YXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMu
CisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1
aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1
bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRo
ZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNh
cmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgog
CiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNTgsNyBAQCB1c2luZyBQ
YWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1
YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAg
IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUlu
Qnl0ZXMpOyB9CkBAIC02MCwxNCArNjcsMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlw
ZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAg
ICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90
IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRl
cywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJD
b250ZW50cyYmKTsKQEAgLTc5LDcgKzg2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAg
dW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9Cisg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQog
ICAgIAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAg
IApAQCAtOTQsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAg
ICB9OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlB
bGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5p
dGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZv
aWQgdHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExMiwyOCBA
QCBwcml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7
CisgICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1
YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJy
YXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVf
dCBieXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAg
IGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5
dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsK
ICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2lu
LCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlC
dWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5
QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBj
b25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBp
bigpOwpAQCAtMTYxLDEyICsxNjgsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVz
dHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lk
KiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBj
b25zdCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihB
cnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRv
dWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVl
KGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIHNp
emVfdCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBz
aXplX3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7CiAK
ICAgICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMTk5LDcgQEAgY29u
c3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRz
LmRhdGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAor
c2l6ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9j
b250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxMiw3IEBAIGJvb2wgQXJyYXlC
dWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1h
dGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBz
Y2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1
cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgp
KTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAog
dm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDczNzIyNzQ1MzRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmll
dy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJB
cnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChi
eXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9i
eXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVP
ZmZzZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRl
T2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uZTcxYjA2MWZlNzE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
KCkgY29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBt
X2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERl
dGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBt
X2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0
byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZl
cmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUp
CisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9m
ZnNldCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1l
bnRTaXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdp
dmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4K
LSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYg
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90
IHNpemUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9m
IGFuIEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlT
dWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgc2l6
ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVu
c2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNp
emU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWlu
aW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1
ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAg
ICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAg
aW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0
KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRl
T2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGlu
ZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwo
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNl
dCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29s
IHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0
aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAot
ICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAg
dW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVy
b1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAK
ICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBh
cnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMg
ZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAg
IGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9m
ZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVs
ZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXplX3Qg
Km9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2Yo
VCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgq
b2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVM
ZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZz
ZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxl
bmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAo
YnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVj
a2VkPHNpemVfdD4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9m
ZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9m
ZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1
c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpv
ZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAq
b2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmlu
Z0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsK
ICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1F
bGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYg
Q1BVKEpTVkFMVUU2NCkKKyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisg
ICAgdWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNEZXRh
Y2hhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgc2l6ZV90IG1fYnl0
ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mg
b2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0x
NjAsODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZm
ZXI7CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
IGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldElt
cGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYg
KGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5
LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFy
cmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5n
ZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNl
dCwgYXJyYXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJy
YXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFC
eXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRl
TGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9m
ZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAg
aWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVu
Z3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFz
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJh
c2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRh
Qnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBi
eXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0
ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVP
ZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAg
IGlmICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxl
bmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4
X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAg
ICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3Ro
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5n
ZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wg
QXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
cmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0g
ICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAg
ICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1T
bWFsbGVyVGhhbihieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChiYXNlICsg
Ynl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICBpbnQg
c3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5z
aWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCArPSBh
cnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAgIGlm
IChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAwKQot
ICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFy
cmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFydCkK
LSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFy
dCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVmZmVyVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAK
aW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nlc3NJbmRleFZh
bHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVCh0eXBlZEFy
cmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKKwog
ICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0
IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBkY2MyZjUwNjRh
ZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURhdGFW
aWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0
aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZSgKLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKIH0K
IAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
OworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIxNDQuLjM0MDI2
NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcgZmluYWwgOiBw
dWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRU
eXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlC
dWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsK
ICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNl
dCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBnZXQo
c2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIp
CiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsg
c2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWduZWQm
IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAg
VCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0PFQ+
KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8fCAq
c3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVlLCBi
b29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2b2lkIHNldChz
aXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChv
ZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIERhdGFW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRl
TGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBiZTdlNmMw
NTM0ZmEuLmY0OTM3MGZjYWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTUgKzMzLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVyaWNUeXBlZEFy
cmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiB0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVu
Z3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KGJhc2VBZGRyZXNzKCkp
OyB9CiAgICAgCkBAIC02NSwyNiArNjUsMjYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgemVy
b0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdAorICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4g
Ynl0ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAot
ICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAg
ICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5s
ZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQg
c2V0KHNpemVfdCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAg
ICAgICAgIGRhdGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUp
OwogICAgIH0KIAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKHNpemVfdCBpbmRl
eCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwog
ICAgICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CkBAIC0xMDAsMTYgKzEwMCw5IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBj
b3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0
aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAgICYmIG9m
ZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAg
ICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAgICAgIHJldHVybiBp
c1N1bVNtYWxsZXJUaGFuKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAg
ICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUo
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsK
QEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAo
SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBh
ZTViZGQ4YzZhMzEuLjU0Mjk4MGFlNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5
VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92
ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
CitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0g
dHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcg
KzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVh
dGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcg
KzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxl
bmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFi
dWZmZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25z
dCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAg
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgp
OwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEwMSw3IEBAIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8g
cmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2
IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciks
IDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0
YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWdu
ZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBl
bmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciog
YnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAg
ICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVP
ZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIs
IG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJy
YXlCdWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAKaW5kZXggODllYWViZDNjMmNjLi5mMDc0MGNiNmQ0NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8g
PSB7CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3Ry
dWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IHZvaWQqIHZlY3RvcikKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVj
dG9yKHZlY3RvciwgbGVuZ3RoKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQs
NyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCgKIH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWlu
dDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsCiAgICAgSW5p
dGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwg
bV9sZW5ndGgobGVuZ3RoKQpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0
aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgp
IC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZDxzaXplX3Q+IHNpemUgPSBsZW5ndGg7CisgICAg
c2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0la
RSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAg
bV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1p
dGl2ZSwgc2l6ZSksIGxlbmd0aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNh
Z2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgp
OwogICAgIGlmICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBa
ZXJvRmlsbCkKICAgICAgICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2
bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSAqIGVsZW1lbnRTaXplKTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKHNpemUudmFsdWUoKSk7CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAg
ICAgbV9tb2RlID0gT3ZlcnNpemVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJy
YXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAog
CiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBtX3N0
cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUo
V2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3
OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCisg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAg
OiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBt
X21vZGUoRGF0YVZpZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNp
emVfdCBlbGVtZW50U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRh
W3R5cGUgLSBJbnQ4QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6ZV90IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3Ro
KCkgY29uc3QKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1
bHQgPSBsZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJm
bG93IGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQg
dGhlIGV4dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0
dXJuIGxlbmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1
ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3
LDcgKzI3NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRX
YXN0ZU1lbW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
dm0pOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IHRo
aXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0
VHlwZWRBcnJheTogewpAQCAtMzE2LDcgKzMyMyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIGlmICghYnVmZmVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhp
cy0+Ynl0ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwor
ICAgIHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkg
ewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
aAppbmRleCBkZDAxZjdmODJhNTMuLmRhNmRkMGJkNzUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNp
bmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQs
IHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTEx
NywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHNpemVfdCBsZW5n
dGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAg
ICAgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAgICAgcmVzdWx0ICo9
IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAt
IDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hl
Y2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVj
dGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJv
RmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgs
IHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9k
ZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMgb25seSBmb3IgY29u
c3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVzZWQgYnkgdGhlIEpJVCdzIHNsb3cg
cGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCB1aW50MzJfdCBs
ZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0
dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKICAgICAgICAgCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBWTSYsIFN0
cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcg
eyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAg
U3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CiAgICAgICAg
IAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cnVjdHVyZTsg
fQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFycmF5TW9kZSBtb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkg
Y29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBAIC0xNjIsNyArMTY0LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogICAgICAgICB1
c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFn
Q2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwotICAgICAgICB1aW50MzJf
dCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgICAgICBUeXBlZEFycmF5
TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CiAgICAgfTsKQEAg
LTE5Myw4ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQo
KTsKICAgICBpbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJl
bnRseSgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7
IH0KLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25z
dDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAg
cHJvdGVjdGVkOgogICAgIEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7
CiAKICAgICBWZWN0b3JQdHIgbV92ZWN0b3I7Ci0gICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAg
c2l6ZV90IG1fbGVuZ3RoOwogICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4
IDM0ZWEyMTQ2MGEwZC4uOTkyMmZmZGI1N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDEzICs2OSwxNSBAQCBpbmxp
bmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5h
bWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQor
CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKwogICAgIGlm
IChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJ
bnQzMigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRl
eCA2ZmFiNDY1ZGQzYjkuLmRmZDZhNTExZDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpT
RGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZl
ciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZp
ZXc6OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0
YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZpZXc6OnNldChK
U0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCkKIHsKICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1
ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpT
VmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJj
Nzg1ZTQ3NjExYS4uZWMyYWY2OTgyMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTQXJyYXlCdWZmZXJWaWV3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGVsZW1lbnRTaXplID0gMTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZWRBcnJheUNvbnRl
bnRUeXBlIGNvbnRlbnRUeXBlID0gVHlwZWRBcnJheUNvbnRlbnRUeXBlOjpOb25lOwogCkBAIC00
NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LAorICAgICAgICBz
aXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9u
J3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFj
YXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29s
IHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMg
SlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxl
bmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwg
c2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFy
ZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1
bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1
MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJl
IGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAg
IHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2Jh
bE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwot
ICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJy
YXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVu
Z3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5n
dGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRz
IGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRh
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFW
aWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3Qg
Ynl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3Qs
ICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXRE
YXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAog
ICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXpl
ID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+
IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBsaXR0bGVF
bmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvQm9vbGVhbihnbG9iYWxP
YmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRh
Vmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hl
ZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmll
dy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7
CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKaW5kZXggYzIyYzU1YTBkODFkLi42YWJkMmE0MWIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAi
VGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZlRnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01NSwxMCAr
NTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZvKiBnZXRCaWdVaW50NjRB
cnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVyZSogUyAgICAgLy8gZnJvbSBKU0NlbGwK
IC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20gSlNPYmplY3QKIC8vICAgICBFbGVtZW50
VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAgICBzaXplX3QgTAogLy8gICAgIFR5cGVk
QXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIg
cG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKKy8vIFRoZXNlIGZpZWxkcyB0YWtlIHVw
IGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQogLy8gaXQg
dGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1YWxseSB1bnVzZWQgYnV0IG1heSBzdG9y
ZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAKLSAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVX
aXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0
aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0
aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZl
Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZl
Y3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRp
YWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBs
KTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUq
LCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBp
bXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9m
KG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAg
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRWZWN0b3IoKSBjb25zdApAQCAtMTIy
LDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5k
cyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBK
U09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5Lgot
ICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBj
YW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
aW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAg
ICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25z
dAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJl
cigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBt
X2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3RvcigpW2ldOwogICAgIH0KICAgICAK
LSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIEpTVmFs
dWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVl
KGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVl
KHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHR5
cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2ts
eShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUu
aXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwgdG9O
YXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBz
ZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVy
biB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9Cisg
ICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAg
ICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0
aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9O
YXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVl
V2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9
CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlj
a2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4g
b2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9s
ZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZz
ZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbihv
ZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNl
dFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUK
ICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJv
b2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBv
biBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRo
cm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNl
dChKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0Kiwgc2l6ZV90IG9iamVj
dE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxl
KTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5
U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBl
PiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2ls
bCB0aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAg
ICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0g
ICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAgIHNpemVfdCBvYmplY3RPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMg
dGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2lu
ZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBl
ZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkr
KykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAg
ICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaAppbmRleCA0NTAyMzg3OTJkMTAuLjFlYjNkMTc4NjFmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUg
IlR5cGVkQXJyYXlzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDcsNyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rv
cigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0
aW9uQ29udGV4dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyAr
NzksNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgotSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTk5LDcgKzEwMCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC0xNDUsNyArMTQ2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxp
ZGF0ZVJhbmdlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTE1OSw4ICsxNjAsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2
YWxpZGF0ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVu
YW1lIE90aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBv
dGhlciwKLSAgICB1bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlw
ZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQs
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIHNpemVf
dCBvdGhlck9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtMjE4LDcgKzIxOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVm
ZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5nQnVmZmVyKCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXpl
ID09IG90aGVyRWxlbWVudFNpemUgJiYgdmVjdG9yKCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAg
ICAgICB8fCB0eXBlID09IENvcHlUeXBlOjpMZWZ0VG9SaWdodCkgewotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRp
dmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBs
YXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldElu
ZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIy
OSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAKICAgICAvLyBOb3cgd2UgZWl0aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBm
aXJzdCB3ZSB0cnkgdG8gY292ZXIgKDJCKS4KICAgICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJF
bGVtZW50U2l6ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0
SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBP
dGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAg
ICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0
KSkpOwpAQCAtMjM4LDExICsyMzksMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVk
IGFuIGludGVybWVkaWF0ZSB0cmFuc2ZlciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZl
Y3Rvcjx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlLCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICBmb3IgKHNpemVfdCBp
ID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgIHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFw
dG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0
SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgIGZvciAoc2l6ZV90IGkgPSBsZW5n
dGg7IGktLTspCiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsg
aSwgdHJhbnNmZXJCdWZmZXJbaV0pOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0
ICsyNTEsMTQgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0
aFNwZWNpZmljVHlwZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9i
amVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHNp
emVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNz
SW5mbyh2bSk7CiAgICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6
dHlwZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0
IG1lbWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIg
ZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUu
CiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVy
aWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxl
bmd0aCwgb3RoZXItPmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0zMTMsOCArMzE0LDEwIEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1
dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChn
bG9iYWxPYmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBnZXQoKSBmb3Igbm93IHByb2Jh
Ymx5IGRvZXMgbm90IGRvIHRoZSByaWdodCB0aGluZyBmb3IgaW5kaWNlcyBhYm92ZSBVSU5UX01B
WC4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dW5zaWduZWQ+KGkgKyBv
YmplY3RPZmZzZXQpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVl
KTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFz
dWNjZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRj
MGViZDFmNjE2NS4uYTk3NDczNzNjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlv
bihKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVBy
b2ZpbGU7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRl
cm5hbEZ1bmN0aW9uOwpAQCAtMjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lO
TElORSBib29sIHB1dEJ5SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYg
KGNhblNldEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAg
c2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRy
eVNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBib29sIGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0Owot
ICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7
CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJh
eVByb2ZpbGUqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAg
ICAgICAKLSAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAor
CisgICAgLy8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0
SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVs
bHB0cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
dGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2Fu
R2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNDExLDM1ICs0MTEsNzMgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gZ2V0KGdsb2JhbE9iamVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lk
IHNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAg
ICAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
KQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZN
JiwgdW5zaWduZWQsIEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJuIHRydWUgdG8gaW5kaWNhdGUg
c3VjY2VzcworICAgIC8vIFVzZSB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0
aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5
U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9m
aWxlKik7CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKICAgICB7CiAg
ICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAg
IHN3aXRjaCAoaW5kZXhpbmdNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJ
TkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1cm4gY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheShpLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheShpLCB2LCBhcnJheVByb2ZpbGUpOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lE
RURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNh
c2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9X
UklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxF
X0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lO
VDMyX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGlmICghdi5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJs
ZU9yQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZBTExUSFJP
VUdIOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVu
Z3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnV0dGVy
Zmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsK
KyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAg
ICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzTnVtYmVy
KCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJm
b3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOwor
ICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgY29udmVy
dERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gdmFsdWU7CisgICAgICAg
ICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAg
IGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgog
ICAgICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBp
IDwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBp
LCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIE5vbkFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KS0+dmVjdG9yTGVuZ3RoKCkKLSAgICAgICAgICAgICAgICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlT
dG9yYWdlKCktPm1fdmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYg
KGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQorICAgICAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBz
ZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2ZTFiYjFiNTlm
MWUuLjEzNWZkMDQ1NDcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAg
ICAgfQogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNk
ZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJy
YXlUeXBlIDpcCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJh
eSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VB
Q0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlf
VFlQRSkKLSN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFy
cmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJh
eSgpOworI2Vsc2UKKyAgICAodm9pZClhcnJheVByb2ZpbGU7CisjZW5kaWYKIAotaW5saW5lIEpT
VmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkg
Y29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZ
X1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcg
KzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQog
fQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlT
dG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAg
IEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2Uo
KTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsK
KyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAg
IGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAg
ICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5z
ZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVBy
b2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5
UHJvZmlsZSkgZG8ge1wKKyAgICBpZiAoKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFy
cmF5TWF4TGVuZ3RoKSAmJiBhcnJheVByb2ZpbGUpXAorICAgICAgICBhcnJheVByb2ZpbGUtPnNl
dE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNk
ZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkb3tcCisgICAgKHZv
aWQpYXJyYXlQcm9maWxlO1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbmRpZgorI2RlZmluZSBD
QVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAorICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUg
OiB7XAorICAgICAgICBhdXRvKiB0eXBlZEFycmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJy
YXkgKj4odGhpcyk7XAorICAgICAgICBpZiAoIXR5cGVkQXJyYXktPmNhblNldEluZGV4UXVpY2ts
eShpLCB2KSlcCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7XAorICAgICAgICB0eXBlZEFycmF5
LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7XAorICAgICAgICBVUERBVEVfQVJSQVlfUFJPRklMRShp
LCBhcnJheVByb2ZpbGUpO1wKKyAgICAgICAgcmV0dXJuIHRydWU7XAorICAgIH0KKyAgICBGT1Jf
RUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJB
WV9UWVBFKQorI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQorI3VuZGVmIFVQREFURV9BUlJB
WV9QUk9GSUxFCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9Cit9CisKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRh
dGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuaAppbmRleCBjZTczMGYzYmY5NjUuLjA5MTllNzIxODZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtODk4LDggKzg5OCw4IEBA
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAgaWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsK
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2UpOwotICAgICAgICBpZiAo
b2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4UXVpY2tseShpbmRleCkpOworICAgICAgICBp
ZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpbmRleCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCiAgICAg
aWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmcoYmFzZSktPmNhbkdldEluZGV4KGluZGV4
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAppbmRleCBlOGRj
MWEzMGFlZGQuLjJhODYzNjMxYWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QYWdlQ291bnQuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQgKiBLQjsKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
KDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE1BWF9BUlJBWV9CVUZGRVJfU0la
RSAvIHBhZ2VTaXplKTsKIAogICAgIHVpbnQzMl90IG1fcGFnZUNvdW50OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oCmluZGV4IGZmMTU2NWYxMWRlZC4uOTNmMDZjOWQ1YmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dl
ciA9IHNpemVvZihUYXJnZXQpID49IHNpemVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25l
ZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Ry
dWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wg
Y29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUg
c2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVh
c2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKICAgICB9CiB9OwogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0
eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0
eXBlLgogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8
PSB2YWx1ZSAmJiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwpA
QCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2Vy
PFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBp
bkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFdoZW4gY29udmVydGluZyB2YWx1ZSB0
byB1bnNpZ25lZCBTb3VyY2UsIHZhbHVlIHdpbGwgYmVjb21lIGEgYmlnIHZhbHVlIGlmIHZhbHVl
IGlzIG5lZ2F0aXZlLgogICAgICAgICAvLyBDYXN0ZWQgdmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2Vy
IHRoYW4gVGFyZ2V0OjptYXggYXMgU291cmNlIGlzIGJpZ2dlciB0aGFuIFRhcmdldC4KQEAgLTE2
OCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUaGUgdW5zaWduZWQgU291cmNlIHR5cGUgaGFz
IGdyZWF0ZXIgcHJlY2lzaW9uIHRoYW4gdGhlIHRhcmdldCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3Vy
Y2Ugd2lsbCB3aWRlbi4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJj
ZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKSk7CkBAIC0xNzYsNyArMTc2LDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJn
ZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2Us
IHRydWUsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkK
KyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAg
ICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRp
YyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3Vu
ZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUg
cHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwg
dHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisg
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIC8vIFRhcmdldCBpcyBzaWduZWQgd2l0aCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9u
LiBJZiBzdHJpY3RseSBncmVhdGVyLCBpdCBpcyBhbHdheXMgc2FmZS4KICAgICAgICAgaWYgKHNp
emVvZihUYXJnZXQpID4gc2l6ZW9mKFNvdXJjZSkpCkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwg
ZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisg
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIC8vIFRhcmdldCBpcyB1bnNpZ25lZCB3aXRoIGdyZWF0ZXIgcHJlY2lzaW9uLgogICAg
ICAgICByZXR1cm4gdmFsdWUgPj0gMDsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNv
dXJjZSB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsK
ICAgICByZXR1cm4gQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVl
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0
aWMgaW5saW5lIGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0
KQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5s
aW5lIGNvbnN0ZXhwciBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91
dHB1dCkKIHsKICAgICBpZiAoIWlzSW5Cb3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTk5Niw2ICs5OTYsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUuLi4gQXJncz4gYm9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKICAgICBy
ZXR1cm4gY2hlY2tlZFByb2R1Y3Q8VD4oYXJncy4uLikuaGFzT3ZlcmZsb3dlZCgpOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzU3VtU21hbGxlclRoYW4oVCBhLCBUIGIsIFQgYm91
bmQpCit7CisgICAgQ2hlY2tlZDxUPiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVy
biAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8IGJvdW5kOworfQorCiB9CiAK
IHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsKQEAgLTEwMTcsMyArMTAyNCw0IEBAIHVzaW5n
IFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVzaW5nIFdURjo6aXNJbkJvdW5kczsKIHVzaW5n
IFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5nIFdURjo6c3VtT3ZlcmZsb3dzOwordXNpbmcg
V1RGOjppc1N1bVNtYWxsZXJUaGFuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKaW5kZXggNTE3MzcyMTdhNTUx
Li5kY2IwOGVkZWMzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApAQCAtMTQ3LDYgKzE0NywxMSBAQAog
I2RlZmluZSBVU0VfQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorLy8g
V2hldGhlciB0byBzdXBwb3J0IHR5cGVkIGFycmF5cyA+IDJHQgorI2RlZmluZSBVU0VfTEFSR0Vf
VFlQRURfQVJSQVlTIDEKKyNlbmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3VsZCBiZSBt
b3JlIHNwZWNpZmljIGlmIGl0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSogKi8KIC8q
IFVzZSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lm
IENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5k
ZXggY2I3ZTg0ZDQ1MzgzLi5iMThkOGZkNmEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5
PiYmIGRlc3RpbmF0aW9uLAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGgg
LSBidWZmZXJPZmZzZXQ7CisgICAgc2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9m
ZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3RpbmF0aW9uLmdldCgpLmxlbmd0aCgpLCBj
b3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IGNoYW5uZWxEYXRhLT5kYXRhKCk7
CkBAIC0yMjYsNyArMjI2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlU
b0NoYW5uZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBzb3VyY2UsIHVuc2lnbmUKICAgICBpZiAoYnVm
ZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAg
dW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIHNpemVfdCBj
b3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihz
b3VyY2UuZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3Jj
ID0gc291cmNlLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCA2YzFjOTQ0MDIyZWQuLmE5MjNhYzQ0ODAy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFu
YWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuY3BwCkBAIC0xOTYsOCArMTk2LDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpn
ZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogICAgIGRv
RkZUQW5hbHlzaXNJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBsaW5l
YXIgbWFnbml0dWRlIHRvIHVuc2lnbmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5zaWduZWQgc291
cmNlTGVuZ3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGgg
PSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAg
IHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCksIGRlc3Rp
bmF0aW9uQXJyYXkubGVuZ3RoKCkpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGNv
bnN0IGRvdWJsZSByYW5nZVNjYWxlRmFjdG9yID0gbV9tYXhEZWNpYmVscyA9PSBtX21pbkRlY2li
ZWxzID8gMSA6IDEgLyAobV9tYXhEZWNpYmVscyAtIG1fbWluRGVjaWJlbHMpOwogICAgICAgICBj
b25zdCBkb3VibGUgbWluRGVjaWJlbHMgPSBtX21pbkRlY2liZWxzOwpAQCAtMjI3LDcgKzIyNiw3
IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YShGbG9hdDMy
QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVf
dCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwogICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1p
bihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4g
MCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXpl
KCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsK
QEAgLTI1MSw3ICsyNTAsNyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9t
YWluRGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwor
ICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwogICAgIHNpemVfdCBsZW5ndGgg
PSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAo
bGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1
ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4g
ZmZ0U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uNTRmMjExODVlZTIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTEyNjMsOCArMTI2Myw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUo
SW1hZ2VEYXRhVGFnKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0aCgpKTsKICAg
ICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgd3Jp
dGUoZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5k
YXRhKCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIENo
ZWNrZWQ8dWludDMyX3Q+IGRhdGFMZW5ndGggPSBkYXRhLT5kYXRhKCkubGVuZ3RoKCk7CisgICAg
ICAgICAgICAgICAgd3JpdGUoZGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0
YS0+ZGF0YSgpLmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0
YS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgIH0KQEAgLTEzMTEsOCArMTMxMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHdyaXRlKEFycmF5QnVmZmVyVGFnKTsK
LSAgICAgICAgICAgICAgICB3cml0ZShhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAg
ICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXIt
PmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIENo
ZWNrZWQ8dWludDMyX3Q+IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICAgICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxl
bmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAob2JqLT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCBhNjZiMTkxZDY4
NmQuLmU3OTIwNDJhZDY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5k
UXVldWUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1
ZShXZWJDb3JlOjpCbG9iJiBibG9iKQogCiAgICAgYXV0byBieXRlTGVuZ3RoID0gYmxvYi5zaXpl
KCk7CiAgICAgaWYgKCFieXRlTGVuZ3RoKSB7Ci0gICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1
ZmZlcjo6Y3JlYXRlKDBVLCAxKSwgMCwgMCk7CisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHNpemVfdD4oMFUpLCAxKSwgMCwgMCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxCbG9i
TG9hZGVyPihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUuLmE2ZWY0ZTNhZmY3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAt
NjMsNyArNjMsMTAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFIm
IHJldHVyblZhbHVlLCBWJiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlh
bm5lc3MpCiAgICAgewogICAgICAgICBib29sIHJlYWRTdGF0dXMgPSBmYWxzZTsKLSAgICAgICAg
VCB2YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihvZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0
dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAgICAgIHNpemVfdCBhY3R1YWxPZmZzZXQ7Cisg
ICAgICAgIFQgdmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4oYWN0dWFsT2Zmc2V0LCBlbmRp
YW5uZXNzID09IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0luQm91bmRzPHVpbnQzMl90PihhY3R1YWxPZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0
ID0gYWN0dWFsT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWRTdGF0dXMpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAK
</data>
<flag name="commit-queue"
          id="463767"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440112</attachid>
            <date>2021-10-04 15:24:04 -0700</date>
            <delta_ts>2021-10-04 15:47:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>194833</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5lNjc2N2M2YTlhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0K
KwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZf
NjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRp
ZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIg
aW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRm
b3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29u
ZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQg
ZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0
YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsK
KyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAg
ICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29u
c3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRp
bmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUg
YSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAg
ICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQz
Ml90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50
LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQo
Y29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAg
IH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CmluZGV4IDQyNTA5MDNiYzMyMi4uMTc5NmI2NTFiYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDgg
KzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1Jl
Z2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25h
YmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2
NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMz
MDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2go
Y29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwog
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0
Y2YyMjQwZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIs
MTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQs
IGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRy
TGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRl
QXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhH
UFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNj
cmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0
aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAppbmRleCBjY2UwZDAxZjQwMTcuLmQ3NzQ2OTk5YmUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lz
dGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+
PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8g
SW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBkMWFlM2I1NTM1NjUuLmQ3ZGYx
ZTkzZjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtMTE5MSwxMiArMTE5MSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlH
UFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpKTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIC8vIFRoZSBs
ZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0
aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7
CisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxI
ZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZWxzZQog
ICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzdGF0
ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2VuZGlmCiAKICAgICAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CkBAIC0xNjMwLDkg
KzE2MzUsMTYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
ICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRz
IGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2Zp
bGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgc3RhdGUu
ZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JF
cXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2Fk
MzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBv
ZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KICAg
ICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAg
ICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5
MTY3OTQ4NDNiMC4uOTkzMWIxMGY4MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJy
YXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVz
ZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJl
IGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJl
IGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRo
ZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2
LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5k
ZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0y
MDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgLy8gQWNjZXNzaW5nIHR5cGVkIGFycmF5cyBsYXJnZXIgdGhhbiB0aGF0IHRl
bmRzIHRvIGJlIG1vcmUgY29tcGxpY2F0ZWQgYXMgd2UgY2FuJ3QgZm9yY2UgY29udmVydCBldmVy
eXRoaW5nIHRvIGludDMyX3QuCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IHN1Y2ggbGFyZ2UgdHlw
ZWQgYXJyYXlzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB7IG1fbWF5
QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJh
eShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUJlTGFyZ2VU
eXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAg
ICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAm
bV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlN
b2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJl
c3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KQEAgLTI0
NCw2ICsyNTQsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OyAvLyBUaGlz
IGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2Fz
ZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVu
ZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1
c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlz
IGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgog
ICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9OworI2VuZGlm
CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBt
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1G
aXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NiwxMyBAQCBzdGF0aWNfYXNzZXJ0KHNp
emVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGUg
ewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0OworICAgIGV4
cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
ICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7CkBAIC0y
ODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3VzZXNPcmln
aW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
ICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJyYXlQcm9maWxl
Lm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVk
QXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE2LDExIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
b3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMg
eyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJy
YXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5rZWRBcnJheVBy
b2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCBiMWRmY2EyNzQ5YzEuLjA0MmIwN2I4OGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzQ4
Niw2ICszNDg2LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7
CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051
bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7
CkBAIC0zODIxLDYgKzM4MzIsMTkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKHZp
ZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXQgPSB2
aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNl
dCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
aWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZl
Mjc1MzEwNGJkMy4uMDU5YmEzZjZkY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2
ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2Rl
LT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAg
ICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBzaG91bGQgbm90
IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAg
ICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZlY3RvcigpOwog
ICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSk7IApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4IDZlNGZlOWFm
YTNlYi4uMDQxYWRiNzg2MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5l
KAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFjdGlvbigpKTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpKQorICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkK
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAg
IAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMgb2JqZWN0IGJl
aGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYgKzI5NCw3IEBA
IEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdV
aW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9ubHkgcHJlc2Vy
dmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBhbmQgbm90IEdl
dEJ5VmFsIGFzIHdlbGwuCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsKSB7CiAg
ICAgICAgICAgICBpZiAoZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBP
dXRPZkJvdW5kcykgfHwgIWlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHlw
ZWRBcnJheVJlc3VsdCh3aXRoU3BlY3VsYXRpb24oQXJyYXk6Ok91dE9mQm91bmRzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAppbmRleCBhMDI2YWFkMTg5M2IuLmRm
NzVjNzg5MGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCkBA
IC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24g
PSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6
OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBBcnJheTo6V3JpdGU7CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBleHBsaWNpdCBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkFjdGlvbiBhY3Rp
b24pCkBAIC0xMzYsNiArMTM3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3Vs
YXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0g
QXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTQ1LDE1ICsxNDcsMTcgQEAgcHVibGljOgogICAgICAg
ICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNC
eXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24g
PSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNl
OwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCisgICAgQXJyYXlNb2Rl
KEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpB
Y3Rpb24gYWN0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2UpCiAgICAgewog
ICAgICAgICB1LmFzQnl0ZXMudHlwZSA9IHR5cGU7CiAgICAgICAgIHUuYXNCeXRlcy5hcnJheUNs
YXNzID0gYXJyYXlDbGFzczsKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gc3BlY3Vs
YXRpb247CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAgICAg
ICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFy
Z2VUeXBlZEFycmF5ID0gbWF5QmVMYXJnZVR5cGVkQXJyYXk7CiAgICAgfQogICAgIAogICAgIEFy
cmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6
OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNjMsNiAr
MTY3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6
SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAg
ICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJl
TGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAogICAgIEFycmF5OjpUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6VHlwZT4odS5hc0J5dGVzLnR5
cGUpOyB9CkBAIC0xNzAsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEFycmF5OjpTcGVjdWxhdGlv
biBzcGVjdWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpTcGVjdWxh
dGlvbj4odS5hc0J5dGVzLnNwZWN1bGF0aW9uKTsgfQogICAgIEFycmF5OjpDb252ZXJzaW9uIGNv
bnZlcnNpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6Q29udmVyc2lvbj4o
dS5hc0J5dGVzLmNvbnZlcnNpb24pOyB9CiAgICAgQXJyYXk6OkFjdGlvbiBhY3Rpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6QWN0aW9uPih1LmFzQnl0ZXMuYWN0aW9uKTsg
fQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSBjb25zdCB7IHJldHVybiB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KICAgICAKICAgICB1bnNpZ25lZCBhc1dvcmQoKSBj
b25zdCB7IHJldHVybiB1LmFzV29yZDsgfQogICAgIApAQCAtMTc5LDM1ICsxODUsNTAgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXJyYXlNb2RlIGZyb21PYnNlcnZlZChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2ZpbGUqLCBBcnJheTo6QWN0aW9uLCBib29s
IG1ha2VTYWZlKTsKLSAgICAKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0
eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb24oQXJy
YXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24o
KSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoQXJyYXlDbGFzcyhBcnJh
eTo6Q2xhc3MgYXJyYXlDbGFzcykgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoQ29udmVyc2lv
bihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25G
cm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBl
QW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJz
aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKTsKKyAgICB9CisKKyAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3NBbmRTcGVj
dWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBB
cnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkp
IGNvbnN0CiAgICAgewotICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsK
KyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9u
LCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSk7CisgICAgfQog
CisgICAgc3RhdGljIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpCisgICAgewogICAgICAgICBpZiAobWFrZVNhZmUpCi0gICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOworICAgICAgICAgICAgcmV0dXJuIEFy
cmF5OjpPdXRPZkJvdW5kczsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hv
bGUobG9ja2VyKSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6VG9Ib2xlOwor
ICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRpb24pOworICAgICAgICAgICAgcmV0dXJu
IEFycmF5OjpJbkJvdW5kczsKICAgICB9Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5
UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiB3aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wg
bWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNz
OwotCiAgICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKHByb2ZpbGUt
PnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdp
bmFsQXJyYXkoKSkgewogICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHBy
b2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpOwpAQCAtMjIxLDIzICsyNDIsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRo
U3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKLSAgICB9
Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5
TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJh
eU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252
ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkp
OworCisgICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisKKyAgICAgICAgYm9vbCBs
YXJnZVR5cGVkQXJyYXkgPSBwcm9maWxlLT5tYXlCZUxhcmdlVHlwZWRBcnJheShsb2NrZXIpOwor
CisgICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJn
ZVR5cGVkQXJyYXkobXlBcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgbGFyZ2VUeXBlZEFycmF5KTsK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSB1bnVzZWRJ
bmRleFNwZWN1bGF0ZWRUeXBlID0gU3BlY0ludDMyT25seTsKQEAgLTUyNiw3ICs1MzYsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpCiAgICAgICAgICAg
ICAmJiBhcnJheUNsYXNzKCkgPT0gb3RoZXIuYXJyYXlDbGFzcygpCiAgICAgICAgICAgICAmJiBz
cGVjdWxhdGlvbigpID09IG90aGVyLnNwZWN1bGF0aW9uKCkKLSAgICAgICAgICAgICYmIGNvbnZl
cnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCk7CisgICAgICAgICAgICAmJiBjb252ZXJzaW9u
KCkgPT0gb3RoZXIuY29udmVyc2lvbigpCisgICAgICAgICAgICAmJiBtYXlCZUxhcmdlVHlwZWRB
cnJheSgpID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUmIG90aGVyKSBjb25zdApAQCAtNTc5LDcg
KzU5MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50OF90IGFycmF5Q2xhc3M7CiAgICAg
ICAgICAgICB1aW50OF90IHNwZWN1bGF0aW9uOwogICAgICAgICAgICAgdWludDhfdCBjb252ZXJz
aW9uIDogNDsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogNDsKKyAgICAgICAgICAgIHVp
bnQ4X3QgYWN0aW9uIDogMTsKKyAgICAgICAgICAgIHVpbnQ4X3QgbWF5QmVMYXJnZVR5cGVkQXJy
YXkgOiAxOwogICAgICAgICB9IGFzQnl0ZXM7CiAgICAgICAgIHVuc2lnbmVkIGFzV29yZDsKICAg
ICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDg4MTFiODlmMjRhNy4uM2Q3OWYyNGU3ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgwNiw4ICszODA2LDE2
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdl
dCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeVZhcmlhbnQmIHZh
cmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
CiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0aWNfYXNzZXJ0KGVuYWJs
ZUludDUyKCkpOworI2VuZGlmCisKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsK
ICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CisjaWYgIVVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIxLDI2ICszODI5LDMyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGU7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoTm9kZSA9
IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKCFp
c0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5
cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCkt
PnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTIsMTMgKzM4NjYsMjAgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6Okdl
bmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdl
dEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5n
dGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0
aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFy
cmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODcwLDcgKzM4OTEsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMK
ICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAg
ICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShh
cnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjU0OGJkMGVlZTllZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk6CiAg
ICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
IGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRB
cnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOwogICAgICAgICByZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYsMTQgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7Cisg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQXJyYXlM
ZW5ndGhMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAg
ICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNo
IChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXgg
YzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgp
CiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29u
c3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0
N2E5Ny4uNjA5ZmYwODU3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2Fz
ZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0Ogor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5
M2VlZTZjYS4uMTk2NWQ0Mzg5NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQog
ICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAg
ICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAg
ICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJh
eSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
bmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4g
T3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhh
dmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6
R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDIxIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5
OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNl
IEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIC8vaWYgKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMSktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9kZSgp
Lm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIC8v
ZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzEyMDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihp
bmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUo
KS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCku
aXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5t
YXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhh
c0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApA
QCAtMTI2Niw3ICsxMjgzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpV
aW50MTZBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9pZiAoY2hpbGQy
LT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFu
RWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3Bl
Y3VsYXRlSW50NTIoKSkKQEAgLTEyNzcsNyArMTI5NywxMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rmxv
YXQ2NEFycmF5OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICAgICAgLy9pZiAoY2hpbGQyLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJh
eU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAg
ICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAg
ICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKQEAgLTE3MTcsMTIgKzE3NDAs
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6
IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0yMTQ5LDYgKzIxNzYsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpLnJlZmluZShtX2dyYXBoLCBub2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGlj
dGlvbigpLCBBcnJheU1vZGU6OnVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAg
ICAgQVNTRVJUKGFycmF5TW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUpOworICAgICAgICAgICAgYmxlc3NBcnJheU9w
ZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgRWRnZSgpLCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVl
ZHNTdG9yYWdlKTsKKworICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorI2Vsc2UKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3MzIs
NyArMjc4MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAg
ICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZp
ZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vaWYgKG5vZGUtPmNoaWxkMigpLT5z
aG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIC8vZWxzZSAvLyBGSVhNRTogbm90IGNsZWFyIHdoYXQgd2Ugc2hv
dWxkIGRvIGhlcmUgaWYgdGhlIGluZGV4IGlzIHNvbWV0aGluZyBjcmF6eQorICAgICAgICAgICAg
Ly8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4o
bm9kZS0+Y2hpbGQzKCkpOwogCkBAIC0yNzU4LDcgKzI4MDksMTAgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBjYXNlIERhdGFWaWV3U2V0OiB7CiAgICAgICAgICAgICBmaXhFZGdlPERhdGFWaWV3T2Jq
ZWN0VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAg
Ly9pZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIo
KSB8fCAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsK
KyAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5V
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAgICAgICAgICAgCkBAIC00MDk2
LDE0ICs0MTUwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGls
ZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRB
cnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1v
ZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAg
IHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDgg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBp
cyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcg
Y29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhl
ciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3
aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQg
aWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGlu
IG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBt
YXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2Vz
IG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlz
IGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1h
eSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZS5jcHAKaW5kZXggMWJhYTFjOGJjZjUxLi40M2I1ZDEwMTJlMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2UuY3BwCkBAIC0xNDk5LDYgKzE0OTksNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7
CiAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25zaGlwKG5vZGUsIG1femVybywg
UmVsYXRpb25zaGlwOjpHcmVhdGVyVGhhbiwgLTEpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAyYWY3OTcwNjhhOWMuLmQxM2QzN2YwMmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTY1LDYgKzE5NjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBjYXNlIEFycmF5UG9w
OgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAgICAgIGNh
c2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAgICAgICAgIGNhc2UgQXJyYXlJ
bmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgogCiAgICAgICAgIGNhc2UgQXJy
YXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBI
YXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJ
bkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4uNzI2NGRjMmY1NjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNjEsOCArMjYxLDExIEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aVB1dEJ5T2Zm
c2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNldCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgZm9y
IFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVzIHRoYXQgY2FuIGhhdmUgYSBs
ZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8gXAorICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9y
TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDY5YWNmNTE5YzBi
YS4uZDVkYTM0YTUxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAg
fQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5k
ZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhR
dWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRl
eFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBA
IC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxT
dHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQ
VVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNoYXIqIG5ld1R5cGVk
QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVj
dHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2
ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzaXpl
X3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2
ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3Jl
YXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJy
YXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIq
PihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0Ns
YXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRl
IDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0
cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTkyNCw3ICsxOTI0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkp
OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcg
KzE5ODgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFt
cGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMjAsNyArMjAyMCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50
MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpu
dWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTIsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsbwogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzPEpTQmlnSW50NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCmluZGV4IDg0NGMxOWIzMTE0MS4uODBkZjgxZmRmMDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcg
QEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJm
bHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hh
ciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Fy
cmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVj
dHVyZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjBkMDQ0ZjVmNWMwLi40Nzg3MDNh
YzEwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODYsNiArOTg2LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uNWJkMzc3ZGFmODk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzczLDYgKzM3Myw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGI0YzhmODYwYjUxNC4uODgyZDc3ZDBmZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzI0NSwxNiArMzI0NSwyOCBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJ
VDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiBub2RlLCBHUFJSZQogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXco
CiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5t
X3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWlu
dDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2
aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5j
aGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25z
dGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGlu
ZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1t
NjQobGVuZ3RoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIGluZGV4R1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAg
ICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKQEAgLTc5NjAsNyArNzk3Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywg
R1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkg
ewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVu
dGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0
aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAg
VU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODM0MiwxMiArODM1NCwxOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
U291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0
R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTExLDEwICsxMTEy
OSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXpl
KE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlU
eXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgp
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1
cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5n
ZXQoKSk7Ci0gICAgCisKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBz
bG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRm
b3JtcworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNpemVHUFIpOworI2Vu
ZGlmCisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBl
ZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSogbm9kZSwgVHlwZWRB
cnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBH
UFJSZWcgc2l6ZUdQUikKK3sKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQ
UlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OwpAQCAtMTExMzAsNiArMTExNTgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRy
dXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpKTsKKyAgICAvLyBX
ZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUg
aXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90
PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOwogICAgIAogICAgIG1faml0Lm1v
dmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMy
KGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTExODUs
OSArMTEyMTUsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShOb2RlKiBub2RlKQogICAgIG1faml0LnN0b3JlUHRyKAogICAgICAgICBzdG9yYWdl
R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBt
X2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0
ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE1
OSw2ICsxNDE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVk
QXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNh
c2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3Vt
ZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5Li5hZGM4MDZhYTIyOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEz
MDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3
U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwot
ICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2Rl
KiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsK
ICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lm
IFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBh
cmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBp
bGVHZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAKICAg
ICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzNSw2ICsxNDQyLDkgQEAgcHVibGljOgogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAg
ICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIGluZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25z
dCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZv
cm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNW
YWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZp
eCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxl
ZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmlj
YWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgog
Y2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1f
Z3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRo
ZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4
dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBp
cyBpbiB0aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBj
bGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmVmYmNlZGRiYzBhLi40ZWQ3NTlmMTkwZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoK
ICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJy
YXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBl
IHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAo
aXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXko
bm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0
aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKKyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFu
IDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAg
ICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2
MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MjogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVH
ZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlMTM1ZmQ1MzQ4ZTgu
LmNlNDAyY2MyMGM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUq
IG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBl
ZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJp
Y3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNp
emVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVn
aXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSogbm9k
ZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFy
cmF5VmlldygpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKyAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOwor
ICAgIHN0YXRpY19hc3NlcnQoTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDwgKDF1bGwgPDwgNTIpLCAi
dGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIHNpemUgb2YgYSB0eXBlZCBhcnJheSB3b24ndCBmaXQg
aW4gYW4gSW50NTIiKTsKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHZlY3Rvcih0aGlzKTsKKyAgICBH
UFJUZW1wb3JhcnkgZGF0YSh0aGlzKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKyAgICBHUFJSZWcgdmVjdG9yR1BSID0gdmVjdG9yLmdwcigpOworICAgIEdQUlJlZyBkYXRh
R1BSID0gZGF0YS5ncHIoKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSB2ZWN0b3JHUFIpOworICAg
IEFTU0VSVChiYXNlR1BSICE9IGRhdGFHUFIpOworICAgIEFTU0VSVCh2ZWN0b3JHUFIgIT0gZGF0
YUdQUik7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOworCisgICAgSklU
Q29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwKKyAgICAgICAg
VHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBudWxsVmVj
dG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmVjdG9yR1BSLCBUcnVz
dGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKTsKKworICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2FnZVdpdGhvdXRVbnRhZ2dp
bmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAgY2FnZVR5cGVkQXJyYXlTdG9y
YWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwg
YXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNhZ2luZy4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTE1CisgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1ZmZlckdQUiwgQXJyYXlC
dWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICBt
X2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRpZgorCisgICAgbV9qaXQuc3Vi
UHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0g
bV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1f
aml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZtX2ppdCk7CisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIpOworCisgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNTRVJUKCFKU0FycmF5QnVmZmVy
Vmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNl
bmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9k
ZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAtNDM3NSw2ICs0NDU4LDE0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVu
Z3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0lu
dDUyOgorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGNvbXBpbGVHZXRBcnJh
eUxlbmd0aEFzSW50NTIobm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlk
OiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTQ0OTMsNiArNDU4NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJv
dG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4Myw3ICs1NjgzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUg
PiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUg
LSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwor
ICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7
CiAKQEAgLTU3ODQsNyArNTg4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7
CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0
KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA1ZjUxZjIy
NTEwNGYuLjFlMTQwMDUwNGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzksMTAgKzI3OSwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAg
ICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAg
ICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKQEAgLTM1OSw2ICszNjEsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEyNDhjOWZhZDY3Li5jOTkwZDU5
Y2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTE3MCw2ICsxNzAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAg
Y2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgU3Rv
cmVCYXJyaWVyOgpAQCAtMzkxLDYgKzM5Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVu
dHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0M2QyNmU4M2U5
NjguLjEwZWQ5NmU5N2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTAyNSw2ICsxMDI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsK
ICAgICAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgY2Fz
ZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNzUsNiArMTE4MCwxMyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIo
KTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAg
ICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC00ODI4LDkgKzQ4NDAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1f
b3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIExW
YWx1ZSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCkKICAg
ICB7Ci0gICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsg
ICAgCisgICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
IAogICAgICAgICBMQmFzaWNCbG9jayB3YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwog
ICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQ4NDYs
NyArNDg1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8od2FzdGVmdWxDYXNlLCBub3ROdWxsKTsKIAogICAgICAgICBMVmFsdWUgdmVj
dG9yID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3Zl
Y3Rvcik7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNv
bnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwgCisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJy
YXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250
aW51YXRpb24pLCB1bnN1cmUobm90TnVsbCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE51bGwsIGNvbnRpbnVhdGlvbik7CkBAIC00ODY2LDkgKzQ4NzgsMjIgQEAgcHJpdmF0ZToKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKIAotICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9J
bnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQp
KSk7CisgICAgICAgIHJldHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91
dCwgd2FzdGVmdWxPdXQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldEludDMyKG1f
b3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisg
ICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
RXhjZXB0Q2FzdGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTUwNTQsOCArNTA3OSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUt
PmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBz
ZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRp
dmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBu
dWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwobGVuZ3RoLCBtX291dC5jb25zdEludDY0KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworICAgICAgICAgICAgICAgIHNldElu
dDMyKG1fb3V0LmNhc3RUb0ludDMyKGxlbmd0aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2NCw2ICs1MDkwLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFz
SW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ub2RlLT5hcnJheU1vZGUo
KS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQu
bG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZv
aWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC04MTY5LDk4ICs4MjAyLDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5
cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAg
ICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFu
Y2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAg
ICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1
ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nh
c2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwot
Ci0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNo
bChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJy
YXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgK
LSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0
cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBM
VmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUg
c3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwK
LSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwK
LSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFw
cy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXpl
KTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVS
ZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFy
YW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFt
c1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlm
CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIo
bV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3Rv
cmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGZhc3RS
ZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBl
KSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAgICBj
YXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFs
bG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZPUl9F
QUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBF
X0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5
cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9i
amVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAg
ICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5j
b25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVu
Y2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNo
b3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKLQotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7
Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwog
Ci0gICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNs
b3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAo
Y29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRo
OjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxs
R2VuZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRB
cnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwot
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93
UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsK
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0g
ICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5
cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLQorI2VuZGlmCiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTog
ewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKIApAQCAtODI3Nyw3ICs4MjMzLDEwMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJh
eVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2
NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1f
b3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6
OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHko
c21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNz
dW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEg
MzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+
KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisgICAgICAgIExWYWx1ZSBzaXpl
ID0gbV9vdXQuY2FzdFRvSW50MzIoc2l6ZTY0Qml0cyk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVT
aXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291
dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBp
ZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNp
emUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBt
X291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
fnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVl
IGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9
IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRX
b3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8s
CisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291
dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAg
ICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQor
ICAgICAgICB7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9FeHRQdHIo
c2l6ZSk7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFw
cGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBw
ZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIp
KTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1sw
XS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50
aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVT
dG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0UmVz
dWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7Cisj
ZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAj
IyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxK
UyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBc
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9F
WENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAgICBm
YXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1f
b3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFn
ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Cisg
ICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJ
bnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBt
X291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9
IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRp
b24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFy
cmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgp
KSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlv
bnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJp
dHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE1NTkxLDcgKzE1NjQyLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRh
KCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBMVmFsdWUg
aW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRl
eFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0
LDcgKzE1Nzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1f
bm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnpl
cm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJh
eUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2Fk
NjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
OwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7
CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVj
ayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6
ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3Mjg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBk
b1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02NEUp
CiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAgICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQu
bG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZh
bHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZElu
c3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBw
b2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9u
TmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJu
IGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZh
bHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNl
LCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZh
bHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDk0ZjdhZmUxMWE5MS4uN2E1NjA3NTY1ZDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC03OSwyMyArNzksMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRj
aCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBz
dGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQz
Mih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3Ro
SW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAg
ICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNoaWZ0NjQo
VHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICBq
aXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5z
Y3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkgewotICAg
ICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlwZWRBcnJh
eXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KLSAgICAg
ICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkp
LCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBz
aW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5n
dGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0MzIoVHJ1
c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAgICB9Ci0K
ICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAg
ICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNiw4ICsx
MzUsMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5ib3hJ
bnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hG
UFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOwor
I2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ3ZGY3
Y2I4ZTg3NS4uNWQ2YjBhODVhNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaSwg
dmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBp
LCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MSwxNyArMjMzOSwxNyBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6
b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7Ci0g
ICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVp
bnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsK
LSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5k
ZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgo
aSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhi
YXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChh
cnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAg
IGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkp
KQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAg
ICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5
KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAg
ICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKQEAgLTIzNzEs
OCArMjM2OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdl
dChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051bWJlcigp
ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYwMDQ0ZS4uZTc2ZGFk
YTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNN
X0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNkZWZp
bmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQp
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDJlZmI3MWM0YTY0Li5h
Mzg4NDI2M2IxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtMTA0Niw4ICsxMDQ2LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUK
ICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBl
bHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5H
ZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5k
ZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50
cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBm
YWxzZTsKIApAQCAtMTE2OSwxNCArMTE2OSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAg
ICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUp
KQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7
Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhR
dWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGMzNWU0NTQ0MTEwNi4uNWVkZWE4M2IwNmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVjdHVy
ZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5
Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdFX1RZUEVEX0FSUkFZ
UworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVBy
b2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFIG9yIFJJ
U0NWNjQKQEAgLTEzMDAsNyArMTMwNCw3IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNl
bGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6
bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNybyBn
ZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCittYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwg
aW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VU
eXBlZEFycmF5LCBzbG93UGF0aCkKICAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBo
YXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZy
b250LgogICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBlW2Jhc2VdLCB0MgogICAgIHN1YmkgRmlyc3RU
eXBlZEFycmF5VHlwZSwgdDIKQEAgLTEzMTEsMTMgKzEzMTUsMjIgQEAgbWFjcm8gZ2V0QnlWYWxU
eXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0
QnlWYWwsIHMKICAgICBpZiBBUk02NEUKICAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKICAgICAg
ICAgY29uc3Qgc2NyYXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X2xlbmd0aFtiYXNlXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQ
YXRoCisgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVu
Z3RoCisgICAgICAgIGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgZWxzaWYgSlNW
QUxVRTY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVu
ZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVy
IHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xl
bmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3Jh
dGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRo
ZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAor
ICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICBicWJlcSBpbmRleCwgU21hbGxUeXBl
ZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxUeXBlZEFycmF5CisgICAgICAgIHNldExhcmdlVHlwZWRB
cnJheSgpCisuc21hbGxUeXBlZEFycmF5OgorICAgIGVuZAorCiAgICAgbG9hZHAgSlNBcnJheUJ1
ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2VdLCB0MwogICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5n
dGgsIGJhc2UsIHNjcmF0Y2gpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZjNkOTdjYTRmN2NiLi4z
NjMyMzcxNDFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRl
eGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZh
bFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlW
YWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5k
ZXggZmJkYmE2OGUwZjMwLi44MjM1N2ZhYzMzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3
MTMsMTYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmluaXNoR2V0QnlWYWwo
c2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlT
CisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAgICBzdG9yZWIg
MSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVk
QXJyYXlbdDVdCisgICAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VU
eXBlZEFycmF5KCkKKyAgICAgICAgICAgIGNyYXNoKCkKKyAgICAgICAgZW5kCisgICAgZW5kCisK
ICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3NjMsNyAr
MTc3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEs
IGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93
KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5p
c2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAK
IC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRf
YnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
CmluZGV4IGM5YjhmMmE3MTkxZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8U2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3Ry
dWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAotU2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3Ry
dWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1
Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpAQCAt
NjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKEFy
cmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlzKTsK
IH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBk
ZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAsIG1f
c2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lkIEFy
cmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
Cit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
CiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwgc2l6
ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0g
bnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUgLyBu
dW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZX0JV
RkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsKKyAg
ICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVzLmhh
c092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZFUl9T
SVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2l6
ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRpb25T
aXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5C
eXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRp
b25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRo
aW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZl
ciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlw
ZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUlu
Qnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQog
ICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRhLCAw
LCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7Cisg
ICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1
Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAg
LTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJh
eUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJ
bkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVy
ID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVm
ZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUo
b3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUo
c291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBA
QCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50
cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4g
dGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9t
IHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6
OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJv
bUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QK
IC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5
cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBk
aWZmZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20g
dGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEg
JiYgIUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAg
ICBHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcg
QEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29u
dGVudHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVt
ZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6
ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90
aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29u
dGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwg
QXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RG
TW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlh
bGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXpl
LCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBi
eXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1
dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkp
OwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBp
ZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5
KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4g
YnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGlj
eSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250
ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwpA
QCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNv
bnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZh
bHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCkK
IHsKICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAx
LDkgKzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1
bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWdu
ZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90IEFy
cmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25l
ZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVuZ3Ro
ID0gYnl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3Vy
cmVudExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJy
ZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENs
YW1wZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVk
IGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25z
dAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7
CisgICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAg
YXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJl
c3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLjg5YTBiOWM4YTkx
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzksNyArMzksMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBDUFUoQUREUkVTUzY0KQor
I2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxzZQorLy8gQmVj
YXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMgb2Yg
YXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMu
CisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1
aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1
bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRo
ZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNh
cmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgog
CiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNTgsNyBAQCB1c2luZyBQ
YWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1
YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAg
IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUlu
Qnl0ZXMpOyB9CkBAIC02MCwxNCArNjcsMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlw
ZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAg
ICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90
IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRl
cywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJD
b250ZW50cyYmKTsKQEAgLTc5LDcgKzg2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAg
dW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9Cisg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQog
ICAgIAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAg
IApAQCAtOTQsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAg
ICB9OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlB
bGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5p
dGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZv
aWQgdHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExMiwyOCBA
QCBwcml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7
CisgICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1
YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJy
YXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVf
dCBieXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAg
IGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5
dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsK
ICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2lu
LCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlC
dWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5
QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBj
b25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBp
bigpOwpAQCAtMTYxLDEyICsxNjgsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVz
dHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lk
KiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBj
b25zdCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihB
cnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRv
dWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVl
KGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIHNp
emVfdCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBz
aXplX3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7CiAK
ICAgICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMTk5LDcgQEAgY29u
c3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRz
LmRhdGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAor
c2l6ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9j
b250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxMiw3IEBAIGJvb2wgQXJyYXlC
dWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1h
dGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBz
Y2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1
cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgp
KTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAog
dm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDczNzIyNzQ1MzRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmll
dy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJB
cnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChi
eXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9i
eXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVP
ZmZzZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRl
T2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uZTcxYjA2MWZlNzE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
KCkgY29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBt
X2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERl
dGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBt
X2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0
byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZl
cmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUp
CisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9m
ZnNldCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1l
bnRTaXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdp
dmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4K
LSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYg
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90
IHNpemUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9m
IGFuIEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlT
dWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgc2l6
ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVu
c2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNp
emU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWlu
aW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1
ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAg
ICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAg
aW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0
KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRl
T2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGlu
ZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwo
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNl
dCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29s
IHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0
aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAot
ICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAg
dW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVy
b1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAK
ICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBh
cnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMg
ZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAg
IGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9m
ZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVs
ZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXplX3Qg
Km9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2Yo
VCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgq
b2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVM
ZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZz
ZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxl
bmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAo
YnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVj
a2VkPHNpemVfdD4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9m
ZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9m
ZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1
c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpv
ZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAq
b2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmlu
Z0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsK
ICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1F
bGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYg
Q1BVKEpTVkFMVUU2NCkKKyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisg
ICAgdWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNEZXRh
Y2hhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgc2l6ZV90IG1fYnl0
ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mg
b2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0x
NjAsODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZm
ZXI7CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
IGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldElt
cGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYg
KGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5
LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFy
cmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5n
ZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW4oYnl0ZU9mZnNl
dCwgYXJyYXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJy
YXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFC
eXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRl
TGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9m
ZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAg
aWYgKCFpc1N1bVNtYWxsZXJUaGFuKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVu
Z3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFz
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJh
c2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRh
Qnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBi
eXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0
ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVP
ZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAg
IGlmICghaXNTdW1TbWFsbGVyVGhhbihieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxl
bmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4
X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAg
ICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3Ro
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5n
ZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wg
QXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
cmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0g
ICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAg
ICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1T
bWFsbGVyVGhhbihieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChiYXNlICsg
Ynl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICBpbnQg
c3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5z
aWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCArPSBh
cnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAgIGlm
IChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAwKQot
ICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFy
cmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFydCkK
LSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFy
dCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVmZmVyVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAK
aW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nlc3NJbmRleFZh
bHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVCh0eXBlZEFy
cmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKKwog
ICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0
IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBkY2MyZjUwNjRh
ZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURhdGFW
aWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0
aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZSgKLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKIH0K
IAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
OworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIxNDQuLjM0MDI2
NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcgZmluYWwgOiBw
dWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRU
eXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlC
dWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsK
ICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNl
dCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBnZXQo
c2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIp
CiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsg
c2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWduZWQm
IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAg
VCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0PFQ+
KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8fCAq
c3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVlLCBi
b29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2b2lkIHNldChz
aXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChv
ZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIERhdGFW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRl
TGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBiZTdlNmMw
NTM0ZmEuLmY0OTM3MGZjYWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTUgKzMzLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVyaWNUeXBlZEFy
cmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiB0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVu
Z3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KGJhc2VBZGRyZXNzKCkp
OyB9CiAgICAgCkBAIC02NSwyNiArNjUsMjYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgemVy
b0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdAorICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4g
Ynl0ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAot
ICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAg
ICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5s
ZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQg
c2V0KHNpemVfdCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAg
ICAgICAgIGRhdGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUp
OwogICAgIH0KIAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKHNpemVfdCBpbmRl
eCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwog
ICAgICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CkBAIC0xMDAsMTYgKzEwMCw5IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBj
b3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0
aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAgICYmIG9m
ZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAg
ICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAgICAgIHJldHVybiBp
c1N1bVNtYWxsZXJUaGFuKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAg
ICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUo
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsK
QEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAo
SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBh
ZTViZGQ4YzZhMzEuLjU0Mjk4MGFlNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5
VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92
ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
CitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0g
dHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcg
KzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVh
dGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcg
KzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxl
bmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFi
dWZmZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25z
dCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAg
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgp
OwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEwMSw3IEBAIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8g
cmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2
IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciks
IDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0
YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWdu
ZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBl
bmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciog
YnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAg
ICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVP
ZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIs
IG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJy
YXlCdWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAKaW5kZXggODllYWViZDNjMmNjLi5mMDc0MGNiNmQ0NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8g
PSB7CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3Ry
dWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IHZvaWQqIHZlY3RvcikKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVj
dG9yKHZlY3RvciwgbGVuZ3RoKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQs
NyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCgKIH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWlu
dDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsCiAgICAgSW5p
dGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwg
bV9sZW5ndGgobGVuZ3RoKQpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0
aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgp
IC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZDxzaXplX3Q+IHNpemUgPSBsZW5ndGg7CisgICAg
c2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0la
RSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAg
bV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1p
dGl2ZSwgc2l6ZSksIGxlbmd0aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNh
Z2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgp
OwogICAgIGlmICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBa
ZXJvRmlsbCkKICAgICAgICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2
bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSAqIGVsZW1lbnRTaXplKTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKHNpemUudmFsdWUoKSk7CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAg
ICAgbV9tb2RlID0gT3ZlcnNpemVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJy
YXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAog
CiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBtX3N0
cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUo
V2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3
OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCisg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAg
OiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBt
X21vZGUoRGF0YVZpZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNp
emVfdCBlbGVtZW50U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRh
W3R5cGUgLSBJbnQ4QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6ZV90IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3Ro
KCkgY29uc3QKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1
bHQgPSBsZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJm
bG93IGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQg
dGhlIGV4dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0
dXJuIGxlbmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1
ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3
LDcgKzI3NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRX
YXN0ZU1lbW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
dm0pOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IHRo
aXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0
VHlwZWRBcnJheTogewpAQCAtMzE2LDcgKzMyMyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIGlmICghYnVmZmVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhp
cy0+Ynl0ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwor
ICAgIHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkg
ewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
aAppbmRleCBkZDAxZjdmODJhNTMuLmRhNmRkMGJkNzUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNp
bmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQs
IHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTEx
NywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHNpemVfdCBsZW5n
dGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAg
ICAgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAgICAgcmVzdWx0ICo9
IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAt
IDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hl
Y2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVj
dGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJv
RmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgs
IHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9k
ZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMgb25seSBmb3IgY29u
c3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVzZWQgYnkgdGhlIEpJVCdzIHNsb3cg
cGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCB1aW50MzJfdCBs
ZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0
dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKICAgICAgICAgCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBWTSYsIFN0
cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcg
eyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAg
U3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CiAgICAgICAg
IAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cnVjdHVyZTsg
fQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFycmF5TW9kZSBtb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkg
Y29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBAIC0xNjIsNyArMTY0LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogICAgICAgICB1
c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFn
Q2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwotICAgICAgICB1aW50MzJf
dCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgICAgICBUeXBlZEFycmF5
TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CiAgICAgfTsKQEAg
LTE5Myw4ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQo
KTsKICAgICBpbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJl
bnRseSgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7
IH0KLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25z
dDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAg
cHJvdGVjdGVkOgogICAgIEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7
CiAKICAgICBWZWN0b3JQdHIgbV92ZWN0b3I7Ci0gICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAg
c2l6ZV90IG1fbGVuZ3RoOwogICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4
IDM0ZWEyMTQ2MGEwZC4uOTkyMmZmZGI1N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDEzICs2OSwxNSBAQCBpbmxp
bmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5h
bWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQor
CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKwogICAgIGlm
IChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJ
bnQzMigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRl
eCA2ZmFiNDY1ZGQzYjkuLmRmZDZhNTExZDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpT
RGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZl
ciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZp
ZXc6OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0
YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZpZXc6OnNldChK
U0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCkKIHsKICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1
ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpT
VmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJj
Nzg1ZTQ3NjExYS4uZWMyYWY2OTgyMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTQXJyYXlCdWZmZXJWaWV3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGVsZW1lbnRTaXplID0gMTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZWRBcnJheUNvbnRl
bnRUeXBlIGNvbnRlbnRUeXBlID0gVHlwZWRBcnJheUNvbnRlbnRUeXBlOjpOb25lOwogCkBAIC00
NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LAorICAgICAgICBz
aXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9u
J3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFj
YXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29s
IHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMg
SlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxl
bmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwg
c2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFy
ZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1
bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1
MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJl
IGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAg
IHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2Jh
bE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwot
ICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJy
YXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVu
Z3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5n
dGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRz
IGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRh
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFW
aWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3Qg
Ynl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3Qs
ICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXRE
YXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAog
ICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXpl
ID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+
IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBsaXR0bGVF
bmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvQm9vbGVhbihnbG9iYWxP
YmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRh
Vmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hl
ZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmll
dy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7
CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKaW5kZXggYzIyYzU1YTBkODFkLi42YWJkMmE0MWIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAi
VGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZlRnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01NSwxMCAr
NTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZvKiBnZXRCaWdVaW50NjRB
cnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVyZSogUyAgICAgLy8gZnJvbSBKU0NlbGwK
IC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20gSlNPYmplY3QKIC8vICAgICBFbGVtZW50
VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAgICBzaXplX3QgTAogLy8gICAgIFR5cGVk
QXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIg
cG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKKy8vIFRoZXNlIGZpZWxkcyB0YWtlIHVw
IGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQogLy8gaXQg
dGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1YWxseSB1bnVzZWQgYnV0IG1heSBzdG9y
ZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAKLSAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVX
aXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0
aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0
aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZl
Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZl
Y3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRp
YWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBs
KTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUq
LCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBp
bXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9m
KG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAg
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRWZWN0b3IoKSBjb25zdApAQCAtMTIy
LDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5k
cyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBK
U09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5Lgot
ICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBj
YW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
aW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAg
ICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25z
dAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJl
cigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBt
X2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3RvcigpW2ldOwogICAgIH0KICAgICAK
LSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIEpTVmFs
dWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVl
KGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVl
KHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHR5
cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2ts
eShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUu
aXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwgdG9O
YXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBz
ZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVy
biB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9Cisg
ICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAg
ICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0
aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9O
YXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVl
V2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9
CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlj
a2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4g
b2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9s
ZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZz
ZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbihv
ZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNl
dFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUK
ICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJv
b2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBv
biBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRo
cm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNl
dChKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0Kiwgc2l6ZV90IG9iamVj
dE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxl
KTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5
U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBl
PiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2ls
bCB0aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAg
ICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0g
ICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAgIHNpemVfdCBvYmplY3RPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMg
dGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2lu
ZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBl
ZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkr
KykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAg
ICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaAppbmRleCA0NTAyMzg3OTJkMTAuLjFlYjNkMTc4NjFmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUg
IlR5cGVkQXJyYXlzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDcsNyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rv
cigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0
aW9uQ29udGV4dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyAr
NzksNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgotSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTk5LDcgKzEwMCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC0xNDUsNyArMTQ2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxp
ZGF0ZVJhbmdlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTE1OSw4ICsxNjAsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2
YWxpZGF0ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVu
YW1lIE90aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBv
dGhlciwKLSAgICB1bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlw
ZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQs
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIHNpemVf
dCBvdGhlck9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtMjE4LDcgKzIxOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVm
ZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5nQnVmZmVyKCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXpl
ID09IG90aGVyRWxlbWVudFNpemUgJiYgdmVjdG9yKCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAg
ICAgICB8fCB0eXBlID09IENvcHlUeXBlOjpMZWZ0VG9SaWdodCkgewotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRp
dmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBs
YXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldElu
ZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIy
OSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAKICAgICAvLyBOb3cgd2UgZWl0aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBm
aXJzdCB3ZSB0cnkgdG8gY292ZXIgKDJCKS4KICAgICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJF
bGVtZW50U2l6ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0
SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBP
dGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAg
ICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0
KSkpOwpAQCAtMjM4LDExICsyMzksMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVk
IGFuIGludGVybWVkaWF0ZSB0cmFuc2ZlciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZl
Y3Rvcjx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlLCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICBmb3IgKHNpemVfdCBp
ID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgIHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFw
dG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0
SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgIGZvciAoc2l6ZV90IGkgPSBsZW5n
dGg7IGktLTspCiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsg
aSwgdHJhbnNmZXJCdWZmZXJbaV0pOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0
ICsyNTEsMTQgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0
aFNwZWNpZmljVHlwZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9i
amVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHNp
emVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNz
SW5mbyh2bSk7CiAgICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6
dHlwZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0
IG1lbWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIg
ZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUu
CiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVy
aWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxl
bmd0aCwgb3RoZXItPmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0zMTMsOCArMzE0LDEwIEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1
dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChn
bG9iYWxPYmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBnZXQoKSBmb3Igbm93IHByb2Jh
Ymx5IGRvZXMgbm90IGRvIHRoZSByaWdodCB0aGluZyBmb3IgaW5kaWNlcyBhYm92ZSBVSU5UX01B
WC4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dW5zaWduZWQ+KGkgKyBv
YmplY3RPZmZzZXQpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVl
KTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFz
dWNjZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRj
MGViZDFmNjE2NS4uYTk3NDczNzNjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlv
bihKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVBy
b2ZpbGU7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRl
cm5hbEZ1bmN0aW9uOwpAQCAtMjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lO
TElORSBib29sIHB1dEJ5SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
ICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYg
KGNhblNldEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAg
c2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRy
eVNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBib29sIGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0Owot
ICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7
CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJh
eVByb2ZpbGUqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAg
ICAgICAKLSAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAor
CisgICAgLy8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0
SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVs
bHB0cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
dGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2Fu
R2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNDExLDM1ICs0MTEsNzMgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gZ2V0KGdsb2JhbE9iamVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lk
IHNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAg
ICAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
KQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZN
JiwgdW5zaWduZWQsIEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJuIHRydWUgdG8gaW5kaWNhdGUg
c3VjY2VzcworICAgIC8vIFVzZSB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0
aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5
U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9m
aWxlKik7CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKICAgICB7CiAg
ICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAg
IHN3aXRjaCAoaW5kZXhpbmdNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJ
TkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1cm4gY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheShpLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheShpLCB2LCBhcnJheVByb2ZpbGUpOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lE
RURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNh
c2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9X
UklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxF
X0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lO
VDMyX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGlmICghdi5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJs
ZU9yQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZBTExUSFJP
VUdIOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVu
Z3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnV0dGVy
Zmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsK
KyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAg
ICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzTnVtYmVy
KCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJm
b3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOwor
ICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgY29udmVy
dERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gdmFsdWU7CisgICAgICAg
ICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAg
IGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgog
ICAgICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBp
IDwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBp
LCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIE5vbkFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KS0+dmVjdG9yTGVuZ3RoKCkKLSAgICAgICAgICAgICAgICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlT
dG9yYWdlKCktPm1fdmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYg
KGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQorICAgICAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBz
ZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2ZTFiYjFiNTlm
MWUuLjBjZjUwYjk5NTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAg
ICAgfQogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNk
ZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJy
YXlUeXBlIDpcCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJh
eSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VB
Q0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlf
VFlQRSkKLSN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFy
cmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJh
eSgpOworI2Vsc2UKKyAgICAodm9pZClhcnJheVByb2ZpbGU7CisjZW5kaWYKIAotaW5saW5lIEpT
VmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkg
Y29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZ
X1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcg
KzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQog
fQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlT
dG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAg
IEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2Uo
KTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsK
KyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAg
IGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAg
ICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5z
ZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVBy
b2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5
UHJvZmlsZSkgZG8ge1wKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlw
ZWRBcnJheU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisj
ZWxzZQorI2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRve1wK
KyAgICAodm9pZClhcnJheVByb2ZpbGU7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2VuZGlmCisj
ZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCisgICAgY2FzZSBuYW1lICMjIEFy
cmF5VHlwZSA6IHtcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFt
ZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+Y2FuU2V0SW5k
ZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisgICAgICAgIHR5
cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFURV9BUlJBWV9Q
Uk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQor
ICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZ
UEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisjdW5kZWYgVVBE
QVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVy
dHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewog
I2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+
Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFs
dWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pT
U3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRk
Li4yYTg2MzYzMWFhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNv
dW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8
IDMyKSAvIHBhZ2VTaXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VD
b3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJWkUgLyBwYWdl
U2l6ZSk7CiAKICAgICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLjkzZjA2YzlkNWJjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXpl
b2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3Vu
ZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5l
c3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNp
c2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252
ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUg
JiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3
ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQs
IFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMo
U291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWdu
ZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdh
dGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRh
cmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVy
IHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwg
d2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6
bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBm
YWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNh
bWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBp
bkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJj
ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lv
bi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZh
bHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAv
LyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3Ry
aWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFy
Z2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0
cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAv
LyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBp
bmxpbmUgY29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0
dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGlu
ZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25z
dGV4cHIgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7
CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4u
IEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNo
ZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuKFQgYSwgVCBiLCBUIGJvdW5kKQorewor
ICAgIENoZWNrZWQ8VD4gc3VtID0gYTsKKyAgICBzdW0gKz0gYjsKKyAgICByZXR1cm4gIXN1bS5o
YXNPdmVyZmxvd2VkKCkgJiYgc3VtLnZhbHVlKCkgPCBib3VuZDsKK30KKwogfQogCiB1c2luZyBX
VEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6OmRp
ZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6OnBy
b2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5nIFdURjo6aXNT
dW1TbWFsbGVyVGhhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDUxNzM3MjE3YTU1MS4uZGNiMDhl
ZGVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTE0Nyw2ICsxNDcsMTEgQEAKICNkZWZpbmUg
VVNFX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKEpTVkFMVUU2NCkKKy8vIFdoZXRoZXIg
dG8gc3VwcG9ydCB0eXBlZCBhcnJheXMgPiAyR0IKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FS
UkFZUyAxCisjZW5kaWYKKwogLyogRklYTUU6IFRoaXMgbmFtZSBzaG91bGQgYmUgbW9yZSBzcGVj
aWZpYyBpZiBpdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBDYWxsRnJhbWUqICovCiAvKiBVc2UgX19i
dWlsdGluX2ZyYW1lX2FkZHJlc3MoMSkgdG8gZ2V0IENhbGxGcmFtZSogKi8KICNpZiBDT01QSUxF
UihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IGNiN2U4
NGQ0NTM4My4uYjE4ZDhmZDZhMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBkZXN0
aW5hdGlvbiwKICAgICBpZiAoYnVmZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVy
T2Zmc2V0OworICAgIHNpemVfdCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAg
ICAgY291bnQgPSBzdGQ6Om1pbihkZXN0aW5hdGlvbi5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwog
ICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBjaGFubmVsRGF0YS0+ZGF0YSgpOwpAQCAtMjI2
LDcgKzIyNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVs
KFJlZjxGbG9hdDMyQXJyYXk+JiYgc291cmNlLCB1bnNpZ25lCiAgICAgaWYgKGJ1ZmZlck9mZnNl
dCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVk
IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3QgY291bnQgPSBk
YXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oc291cmNlLmdl
dCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IHNvdXJj
ZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5hOTIzYWM0NDgwMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
LmNwcApAQCAtMTk2LDggKzE5Niw3IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZy
ZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAgICBkb0ZGVEFuYWx5
c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGZyb20gbGluZWFyIG1hZ25p
dHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0
aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjpt
aW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3Qg
bGVuZ3RoID0gc3RkOjptaW4obWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpLCBkZXN0aW5hdGlvbkFy
cmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3Vi
bGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEg
OiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91
YmxlIG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw3ICsyMjYsNyBAQCB2b2lk
IFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBk
ZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0g
ICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgZmZ0U2l6
ZSA9IHRoaXMtPmZmdFNpemUoKTsKICAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6
ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAg
ICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElu
cHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CkBAIC0yNTEs
NyArMjUwLDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEo
VWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXpl
X3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKICAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjpt
aW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CiAgICAgaWYgKGxlbmd0aCA+
IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6
ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjU0ZjIxMTg1ZWUyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0x
MjYzLDggKzEyNjMsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdyaXRlKEltYWdlRGF0
YVRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7CiAgICAgICAgICAg
ICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEt
PmRhdGEoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRh
dGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVja2VkPHVp
bnQzMl90PiBkYXRhTGVuZ3RoID0gZGF0YS0+ZGF0YSgpLmxlbmd0aCgpOworICAgICAgICAgICAg
ICAgIHdyaXRlKGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEo
KS5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC0xMzExLDggKzEzMTIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRhZyk7Ci0gICAgICAg
ICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAg
ICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVja2VkPHVp
bnQzMl90PiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAg
ICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgpOwog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi5lNzky
MDQyYWQ2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNw
cApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29y
ZTo6QmxvYiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwogICAg
IGlmICghYnl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNy
ZWF0ZSgwVSwgMSksIDAsIDApOworICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KDBVKSwgMSksIDAsIDApOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8QmxvYkxvYWRlcj4o
W3RoaXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li5hNmVmNGUzYWZmNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTYzLDcgKzYz
LDEwIEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1cm5W
YWx1ZSwgViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNzKQog
ICAgIHsKICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFsdWUg
PSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlh
biwgJnJlYWRTdGF0dXMpOworICAgICAgICBzaXplX3QgYWN0dWFsT2Zmc2V0OworICAgICAgICBU
IHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFubmVzcyA9
PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJ
bkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9IGFjdHVh
bE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCg==
</data>
<flag name="review"
          id="463950"
          type_id="1"
          status="-"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="463944"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440136</attachid>
            <date>2021-10-04 18:11:28 -0700</date>
            <delta_ts>2021-10-05 13:36:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>194779</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRhNGFiOTMuLmVjMzJiNzIy
MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRv
IGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRk
cmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBw
dWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwyMSArMzExLDIxIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBh
c0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkK
KyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVk
SW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyBy
ZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcg
KzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAg
IDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjks
MTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1
c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZf
NjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzkwLDE1ICsz
OTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51
bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZh
bHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRy
dXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAg
ICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1
ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwx
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAog
ICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhw
bGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02
NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVz
dGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9
OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFu
ZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQxLi5lNjc2N2M2YTlhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0K
KwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZf
NjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRp
ZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIg
aW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRm
b3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29u
ZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQg
ZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0
YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsK
KyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAg
ICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29u
c3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRp
bmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUg
YSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAg
ICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQz
Ml90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50
LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQo
Y29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAg
IH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CmluZGV4IDQyNTA5MDNiYzMyMi4uMTc5NmI2NTFiYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDgg
KzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1Jl
Z2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25h
YmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2
NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMz
MDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2go
Y29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwog
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0
Y2YyMjQwZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIs
MTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQs
IGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRy
TGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRl
QXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhH
UFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNj
cmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0
aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAppbmRleCBjY2UwZDAxZjQwMTcuLmQ3NzQ2OTk5YmUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lz
dGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+
PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8g
SW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBkMWFlM2I1NTM1NjUuLmQ3ZGYx
ZTkzZjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtMTE5MSwxMiArMTE5MSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlH
UFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpKTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIC8vIFRoZSBs
ZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0
aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7
CisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxI
ZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZWxzZQog
ICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzdGF0
ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2VuZGlmCiAKICAgICAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CkBAIC0xNjMwLDkg
KzE2MzUsMTYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
ICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRz
IGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2Zp
bGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgc3RhdGUu
ZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JF
cXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2Fk
MzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBv
ZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KICAg
ICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAg
ICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5
MTY3OTQ4NDNiMC4uOTkzMWIxMGY4MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJy
YXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVz
ZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJl
IGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJl
IGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRo
ZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2
LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5k
ZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0y
MDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgLy8gQWNjZXNzaW5nIHR5cGVkIGFycmF5cyBsYXJnZXIgdGhhbiB0aGF0IHRl
bmRzIHRvIGJlIG1vcmUgY29tcGxpY2F0ZWQgYXMgd2UgY2FuJ3QgZm9yY2UgY29udmVydCBldmVy
eXRoaW5nIHRvIGludDMyX3QuCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IHN1Y2ggbGFyZ2UgdHlw
ZWQgYXJyYXlzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB7IG1fbWF5
QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJh
eShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUJlTGFyZ2VU
eXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAg
ICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAm
bV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlN
b2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJl
c3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KQEAgLTI0
NCw2ICsyNTQsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OyAvLyBUaGlz
IGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2Fz
ZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVu
ZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1
c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlz
IGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgog
ICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9OworI2VuZGlm
CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBt
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1G
aXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NiwxMyBAQCBzdGF0aWNfYXNzZXJ0KHNp
emVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGUg
ewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0OworICAgIGV4
cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
ICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7CkBAIC0y
ODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3VzZXNPcmln
aW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
ICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJyYXlQcm9maWxl
Lm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVk
QXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE2LDExIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
b3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMg
eyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJy
YXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5rZWRBcnJheVBy
b2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCBiMWRmY2EyNzQ5YzEuLjA0MmIwN2I4OGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzQ4
Niw2ICszNDg2LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7
CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051
bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7
CkBAIC0zODIxLDYgKzM4MzIsMTkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKHZp
ZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXQgPSB2
aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNl
dCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
aWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZl
Mjc1MzEwNGJkMy4uMDU5YmEzZjZkY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2
ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2Rl
LT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAg
ICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBzaG91bGQgbm90
IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAg
ICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZlY3RvcigpOwog
ICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSk7IApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4IDZlNGZlOWFm
YTNlYi4uMDQxYWRiNzg2MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5l
KAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFjdGlvbigpKTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpKQorICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkK
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAg
IAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMgb2JqZWN0IGJl
aGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYgKzI5NCw3IEBA
IEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdV
aW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9ubHkgcHJlc2Vy
dmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBhbmQgbm90IEdl
dEJ5VmFsIGFzIHdlbGwuCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsKSB7CiAg
ICAgICAgICAgICBpZiAoZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBP
dXRPZkJvdW5kcykgfHwgIWlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHlw
ZWRBcnJheVJlc3VsdCh3aXRoU3BlY3VsYXRpb24oQXJyYXk6Ok91dE9mQm91bmRzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAppbmRleCBhMDI2YWFkMTg5M2IuLmRm
NzVjNzg5MGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCkBA
IC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24g
PSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6
OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBBcnJheTo6V3JpdGU7CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBleHBsaWNpdCBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkFjdGlvbiBhY3Rp
b24pCkBAIC0xMzYsNiArMTM3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3Vs
YXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0g
QXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTQ1LDE1ICsxNDcsMTcgQEAgcHVibGljOgogICAgICAg
ICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNC
eXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24g
PSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNl
OwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCisgICAgQXJyYXlNb2Rl
KEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpB
Y3Rpb24gYWN0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2UpCiAgICAgewog
ICAgICAgICB1LmFzQnl0ZXMudHlwZSA9IHR5cGU7CiAgICAgICAgIHUuYXNCeXRlcy5hcnJheUNs
YXNzID0gYXJyYXlDbGFzczsKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gc3BlY3Vs
YXRpb247CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAgICAg
ICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFy
Z2VUeXBlZEFycmF5ID0gbWF5QmVMYXJnZVR5cGVkQXJyYXk7CiAgICAgfQogICAgIAogICAgIEFy
cmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6
OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNjMsNiAr
MTY3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6
SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAg
ICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJl
TGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAogICAgIEFycmF5OjpUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6VHlwZT4odS5hc0J5dGVzLnR5
cGUpOyB9CkBAIC0xNzAsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEFycmF5OjpTcGVjdWxhdGlv
biBzcGVjdWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpTcGVjdWxh
dGlvbj4odS5hc0J5dGVzLnNwZWN1bGF0aW9uKTsgfQogICAgIEFycmF5OjpDb252ZXJzaW9uIGNv
bnZlcnNpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6Q29udmVyc2lvbj4o
dS5hc0J5dGVzLmNvbnZlcnNpb24pOyB9CiAgICAgQXJyYXk6OkFjdGlvbiBhY3Rpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6QWN0aW9uPih1LmFzQnl0ZXMuYWN0aW9uKTsg
fQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSBjb25zdCB7IHJldHVybiB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KICAgICAKICAgICB1bnNpZ25lZCBhc1dvcmQoKSBj
b25zdCB7IHJldHVybiB1LmFzV29yZDsgfQogICAgIApAQCAtMTc5LDM1ICsxODUsNTAgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXJyYXlNb2RlIGZyb21PYnNlcnZlZChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2ZpbGUqLCBBcnJheTo6QWN0aW9uLCBib29s
IG1ha2VTYWZlKTsKLSAgICAKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0
eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb24oQXJy
YXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24o
KSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoQXJyYXlDbGFzcyhBcnJh
eTo6Q2xhc3MgYXJyYXlDbGFzcykgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoQ29udmVyc2lv
bihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25G
cm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBl
QW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJz
aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKTsKKyAgICB9CisKKyAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3NBbmRTcGVj
dWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBB
cnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkp
IGNvbnN0CiAgICAgewotICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsK
KyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9u
LCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSk7CisgICAgfQog
CisgICAgc3RhdGljIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpCisgICAgewogICAgICAgICBpZiAobWFrZVNhZmUpCi0gICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOworICAgICAgICAgICAgcmV0dXJuIEFy
cmF5OjpPdXRPZkJvdW5kczsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hv
bGUobG9ja2VyKSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6VG9Ib2xlOwor
ICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRpb24pOworICAgICAgICAgICAgcmV0dXJu
IEFycmF5OjpJbkJvdW5kczsKICAgICB9Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5
UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiB3aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wg
bWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNz
OwotCiAgICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKHByb2ZpbGUt
PnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdp
bmFsQXJyYXkoKSkgewogICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHBy
b2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpOwpAQCAtMjIxLDIzICsyNDIsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRo
U3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKLSAgICB9
Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5
TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJh
eU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252
ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkp
OworCisgICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisKKyAgICAgICAgYm9vbCBs
YXJnZVR5cGVkQXJyYXkgPSBwcm9maWxlLT5tYXlCZUxhcmdlVHlwZWRBcnJheShsb2NrZXIpOwor
CisgICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJn
ZVR5cGVkQXJyYXkobXlBcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgbGFyZ2VUeXBlZEFycmF5KTsK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSB1bnVzZWRJ
bmRleFNwZWN1bGF0ZWRUeXBlID0gU3BlY0ludDMyT25seTsKQEAgLTUyNiw3ICs1MzYsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpCiAgICAgICAgICAg
ICAmJiBhcnJheUNsYXNzKCkgPT0gb3RoZXIuYXJyYXlDbGFzcygpCiAgICAgICAgICAgICAmJiBz
cGVjdWxhdGlvbigpID09IG90aGVyLnNwZWN1bGF0aW9uKCkKLSAgICAgICAgICAgICYmIGNvbnZl
cnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCk7CisgICAgICAgICAgICAmJiBjb252ZXJzaW9u
KCkgPT0gb3RoZXIuY29udmVyc2lvbigpCisgICAgICAgICAgICAmJiBtYXlCZUxhcmdlVHlwZWRB
cnJheSgpID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUmIG90aGVyKSBjb25zdApAQCAtNTc5LDcg
KzU5MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50OF90IGFycmF5Q2xhc3M7CiAgICAg
ICAgICAgICB1aW50OF90IHNwZWN1bGF0aW9uOwogICAgICAgICAgICAgdWludDhfdCBjb252ZXJz
aW9uIDogNDsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogNDsKKyAgICAgICAgICAgIHVp
bnQ4X3QgYWN0aW9uIDogMTsKKyAgICAgICAgICAgIHVpbnQ4X3QgbWF5QmVMYXJnZVR5cGVkQXJy
YXkgOiAxOwogICAgICAgICB9IGFzQnl0ZXM7CiAgICAgICAgIHVuc2lnbmVkIGFzV29yZDsKICAg
ICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDg4MTFiODlmMjRhNy4uM2Q3OWYyNGU3ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgwNiw4ICszODA2LDE2
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdl
dCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeVZhcmlhbnQmIHZh
cmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
CiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0aWNfYXNzZXJ0KGVuYWJs
ZUludDUyKCkpOworI2VuZGlmCisKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsK
ICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CisjaWYgIVVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIxLDI2ICszODI5LDMyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGU7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRB
cnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoTm9kZSA9
IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKCFp
c0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5
cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCkt
PnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTIsMTMgKzM4NjYsMjAgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6Okdl
bmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdl
dEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5n
dGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0
aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFy
cmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODcwLDcgKzM4OTEsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMK
ICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAg
ICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShh
cnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjU0OGJkMGVlZTllZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk6CiAg
ICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
IGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRB
cnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOwogICAgICAgICByZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYsMTQgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7Cisg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQXJyYXlM
ZW5ndGhMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAg
ICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNo
IChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXgg
YzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgp
CiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29u
c3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0
N2E5Ny4uNjA5ZmYwODU3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2Fz
ZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0Ogor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5
M2VlZTZjYS4uMTk2NWQ0Mzg5NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQog
ICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAg
ICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAg
ICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJh
eSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
bmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4g
T3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhh
dmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6
R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDIxIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5
OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNl
IEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJy
YXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIC8vaWYgKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMSktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9kZSgp
Lm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIC8v
ZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzEyMDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihp
bmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUo
KS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCku
aXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5t
YXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhh
c0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApA
QCAtMTI2Niw3ICsxMjgzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpV
aW50MTZBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9pZiAoY2hpbGQy
LT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFu
RWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkMy0+c2hvdWxkU3Bl
Y3VsYXRlSW50NTIoKSkKQEAgLTEyNzcsNyArMTI5NywxMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rmxv
YXQ2NEFycmF5OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICAgICAgLy9pZiAoY2hpbGQyLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJh
eU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAg
ICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAg
ICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKQEAgLTE3MTcsMTIgKzE3NDAs
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6
IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0yMTQ5LDYgKzIxNzYsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpLnJlZmluZShtX2dyYXBoLCBub2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGlj
dGlvbigpLCBBcnJheU1vZGU6OnVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAg
ICAgQVNTRVJUKGFycmF5TW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUpOworICAgICAgICAgICAgYmxlc3NBcnJheU9w
ZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgRWRnZSgpLCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVl
ZHNTdG9yYWdlKTsKKworICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorI2Vsc2UKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25v
d25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3MzIs
NyArMjc4MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAg
ICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZp
ZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vaWYgKG5vZGUtPmNoaWxkMigpLT5z
aG91bGRTcGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIC8vZWxzZSAvLyBGSVhNRTogbm90IGNsZWFyIHdoYXQgd2Ugc2hv
dWxkIGRvIGhlcmUgaWYgdGhlIGluZGV4IGlzIHNvbWV0aGluZyBjcmF6eQorICAgICAgICAgICAg
Ly8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4o
bm9kZS0+Y2hpbGQzKCkpOwogCkBAIC0yNzU4LDcgKzI4MDksMTAgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBjYXNlIERhdGFWaWV3U2V0OiB7CiAgICAgICAgICAgICBmaXhFZGdlPERhdGFWaWV3T2Jq
ZWN0VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAg
Ly9pZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIo
KSB8fCAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsK
KyAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5V
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAgICAgICAgICAgCkBAIC00MDk2
LDE0ICs0MTUwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGls
ZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRB
cnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1v
ZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAg
IHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDgg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBp
cyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcg
Y29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhl
ciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3
aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQg
aWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGlu
IG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBt
YXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2Vz
IG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlz
IGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1h
eSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZS5jcHAKaW5kZXggMWJhYTFjOGJjZjUxLi40M2I1ZDEwMTJlMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2UuY3BwCkBAIC0xNDk5LDYgKzE0OTksNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7
CiAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25zaGlwKG5vZGUsIG1femVybywg
UmVsYXRpb25zaGlwOjpHcmVhdGVyVGhhbiwgLTEpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAyYWY3OTcwNjhhOWMuLmQxM2QzN2YwMmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTY1LDYgKzE5NjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBjYXNlIEFycmF5UG9w
OgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAgICAgIGNh
c2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAgICAgICAgIGNhc2UgQXJyYXlJ
bmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgogCiAgICAgICAgIGNhc2UgQXJy
YXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBI
YXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJ
bkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4uNzI2NGRjMmY1NjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNjEsOCArMjYxLDExIEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aVB1dEJ5T2Zm
c2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNldCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgZm9y
IFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVzIHRoYXQgY2FuIGhhdmUgYSBs
ZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8gXAorICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9y
TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDY5YWNmNTE5YzBi
YS4uZDVkYTM0YTUxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAg
fQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5k
ZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhR
dWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRl
eFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBA
IC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxT
dHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQ
VVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNoYXIqIG5ld1R5cGVk
QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVj
dHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2
ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzaXpl
X3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2
ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3Jl
YXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJy
YXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIq
PihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0Ns
YXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRl
IDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0
cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTkyNCw3ICsxOTI0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkp
OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcg
KzE5ODgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFt
cGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMjAsNyArMjAyMCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50
MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpu
dWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTIsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsbwogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzPEpTQmlnSW50NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCmluZGV4IDg0NGMxOWIzMTE0MS4uODBkZjgxZmRmMDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcg
QEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJm
bHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hh
ciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Fy
cmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVj
dHVyZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjBkMDQ0ZjVmNWMwLi40Nzg3MDNh
YzEwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODYsNiArOTg2LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uNWJkMzc3ZGFmODk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzczLDYgKzM3Myw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGI0YzhmODYwYjUxNC4uODgyZDc3ZDBmZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzI0NSwxNiArMzI0NSwyOCBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJ
VDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiBub2RlLCBHUFJSZQogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXco
CiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5t
X3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWlu
dDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2
aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5j
aGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25z
dGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGlu
ZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1t
NjQobGVuZ3RoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIGluZGV4R1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAg
ICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKQEAgLTc5NjAsNyArNzk3Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywg
R1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkg
ewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVu
dGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0
aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAg
VU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODM0MiwxMiArODM1NCwxOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
U291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0
R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTExLDEwICsxMTEy
OSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXpl
KE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlU
eXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgp
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1
cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5n
ZXQoKSk7Ci0gICAgCisKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBz
bG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRm
b3JtcworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNpemVHUFIpOworI2Vu
ZGlmCisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBl
ZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSogbm9kZSwgVHlwZWRB
cnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBH
UFJSZWcgc2l6ZUdQUikKK3sKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQ
UlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OwpAQCAtMTExMzAsNiArMTExNTgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRy
dXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpKTsKKyAgICAvLyBX
ZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUg
aXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90
PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOwogICAgIAogICAgIG1faml0Lm1v
dmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMy
KGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTExODUs
OSArMTEyMTUsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShOb2RlKiBub2RlKQogICAgIG1faml0LnN0b3JlUHRyKAogICAgICAgICBzdG9yYWdl
R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBt
X2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0
ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE1
OSw2ICsxNDE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVk
QXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNh
c2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3Vt
ZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5Li5hZGM4MDZhYTIyOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEz
MDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3
U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwot
ICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2Rl
KiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsK
ICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lm
IFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBh
cmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBp
bGVHZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAKICAg
ICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzNSw2ICsxNDQyLDkgQEAgcHVibGljOgogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAg
ICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIGluZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25z
dCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZv
cm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNW
YWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZp
eCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxl
ZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmlj
YWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgog
Y2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1f
Z3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRo
ZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4
dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBp
cyBpbiB0aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBj
bGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmVmYmNlZGRiYzBhLi40ZWQ3NTlmMTkwZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoK
ICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJy
YXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBl
IHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAo
aXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXko
bm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0
aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKKyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFu
IDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAg
ICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2
MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MjogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVH
ZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlMTM1ZmQ1MzQ4ZTgu
LmNlNDAyY2MyMGM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUq
IG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBl
ZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJp
Y3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNp
emVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVn
aXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSogbm9k
ZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFy
cmF5VmlldygpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKyAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOwor
ICAgIHN0YXRpY19hc3NlcnQoTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDwgKDF1bGwgPDwgNTIpLCAi
dGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIHNpemUgb2YgYSB0eXBlZCBhcnJheSB3b24ndCBmaXQg
aW4gYW4gSW50NTIiKTsKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHZlY3Rvcih0aGlzKTsKKyAgICBH
UFJUZW1wb3JhcnkgZGF0YSh0aGlzKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKyAgICBHUFJSZWcgdmVjdG9yR1BSID0gdmVjdG9yLmdwcigpOworICAgIEdQUlJlZyBkYXRh
R1BSID0gZGF0YS5ncHIoKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSB2ZWN0b3JHUFIpOworICAg
IEFTU0VSVChiYXNlR1BSICE9IGRhdGFHUFIpOworICAgIEFTU0VSVCh2ZWN0b3JHUFIgIT0gZGF0
YUdQUik7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOworCisgICAgSklU
Q29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwKKyAgICAgICAg
VHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBudWxsVmVj
dG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmVjdG9yR1BSLCBUcnVz
dGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKTsKKworICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2FnZVdpdGhvdXRVbnRhZ2dp
bmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAgY2FnZVR5cGVkQXJyYXlTdG9y
YWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwg
YXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNhZ2luZy4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTE1CisgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1ZmZlckdQUiwgQXJyYXlC
dWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICBt
X2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRpZgorCisgICAgbV9qaXQuc3Vi
UHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0g
bV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1f
aml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZtX2ppdCk7CisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIpOworCisgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNTRVJUKCFKU0FycmF5QnVmZmVy
Vmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNl
bmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9k
ZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAtNDM3NSw2ICs0NDU4LDE0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVu
Z3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0lu
dDUyOgorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGNvbXBpbGVHZXRBcnJh
eUxlbmd0aEFzSW50NTIobm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlk
OiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTQ0OTMsNiArNDU4NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJv
dG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4Myw3ICs1NjgzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUg
PiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUg
LSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwor
ICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7
CiAKQEAgLTU3ODQsNyArNTg4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7
CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0
KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA1ZjUxZjIy
NTEwNGYuLjFlMTQwMDUwNGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzksMTAgKzI3OSwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAg
ICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAg
ICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKQEAgLTM1OSw2ICszNjEsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEyNDhjOWZhZDY3Li5jOTkwZDU5
Y2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTE3MCw2ICsxNzAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAg
Y2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgU3Rv
cmVCYXJyaWVyOgpAQCAtMzkxLDYgKzM5Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVu
dHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0M2QyNmU4M2U5
NjguLjhhYjkyN2UyY2U4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTAyNSw2ICsxMDI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsK
ICAgICAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgY2Fz
ZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNzUsNiArMTE4MCwxMyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIo
KTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAg
ICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC00ODI4LDkgKzQ4NDAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1f
b3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIExW
YWx1ZSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCkKICAg
ICB7Ci0gICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsg
ICAgCisgICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
IAogICAgICAgICBMQmFzaWNCbG9jayB3YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwog
ICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQ4NDYs
NyArNDg1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8od2FzdGVmdWxDYXNlLCBub3ROdWxsKTsKIAogICAgICAgICBMVmFsdWUgdmVj
dG9yID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3Zl
Y3Rvcik7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNv
bnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwgCisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJy
YXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250
aW51YXRpb24pLCB1bnN1cmUobm90TnVsbCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE51bGwsIGNvbnRpbnVhdGlvbik7CkBAIC00ODY2LDkgKzQ4NzgsMjIgQEAgcHJpdmF0ZToKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKIAotICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9J
bnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQp
KSk7CisgICAgICAgIHJldHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91
dCwgd2FzdGVmdWxPdXQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldEludDMyKG1f
b3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisg
ICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
RXhjZXB0Q2FzdGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTUwNTQsOCArNTA3OSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUt
PmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBz
ZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRp
dmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBu
dWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwobGVuZ3RoLCBtX291dC5jb25zdEludDY0KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworICAgICAgICAgICAgICAgIHNldElu
dDMyKG1fb3V0LmNhc3RUb0ludDMyKGxlbmd0aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2NCw2ICs1MDkwLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFz
SW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ub2RlLT5hcnJheU1vZGUo
KS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQu
bG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZv
aWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC04MTY5LDk4ICs4MjAyLDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5
cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAg
ICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFu
Y2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAg
ICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1
ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nh
c2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwot
Ci0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNo
bChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJy
YXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgK
LSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0
cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBM
VmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUg
c3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwK
LSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwK
LSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFw
cy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXpl
KTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVS
ZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFy
YW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFt
c1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlm
CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIo
bV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3Rv
cmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGZhc3RS
ZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBl
KSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAgICBj
YXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFs
bG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZPUl9F
QUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBF
X0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5
cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9i
amVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAg
ICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5j
b25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVu
Y2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNo
b3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKLQotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7
Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwog
Ci0gICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNs
b3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAo
Y29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRo
OjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxs
R2VuZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRB
cnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwot
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93
UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsK
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0g
ICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5
cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLQorI2VuZGlmCiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTog
ewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKIApAQCAtODI3Nyw3ICs4MjMzLDEwMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJh
eVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2
NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1f
b3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6
OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHko
c21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNz
dW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEg
MzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+
KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisKKyAgICAgICAgTFZhbHVlIGJ5
dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChzaXplNjRCaXRzLCBtX291dC5jb25zdElu
dDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBpZiAoZWxlbWVu
dFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291
dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25z
dEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19j
YXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRv
ciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRl
SGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRXb3JkcygKKyAg
ICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCisgICAgICAg
ICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdElu
dFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAgICAgICAgbV9o
ZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgICAgICB7
CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNo
cG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNv
bWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNp
emU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsK
KyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
ICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5n
cHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNh
dGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9y
YWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0
VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7CisjZGVm
aW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAjIyBu
YW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMj
bmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENM
VURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9BUlJB
WV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAgICBmYXN0
UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0
LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAg
ICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29u
c3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUg
PSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAg
ICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1
ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9j
YXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewor
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBl
ZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdl
dCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2
NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQg
PSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVz
dWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNv
bXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgb2Jq
ZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE1NTkxLDcgKzE1NjQwLDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdE
YXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQu
bG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShk
YXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBMVmFs
dWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChk
YXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChp
bmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1
NzM0LDcgKzE1NzgzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9
IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0
Lnplcm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5s
b2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpOwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRl
eCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9D
aGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRl
U2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3Mjg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0
byBkb1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02
NEUpCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAg
ICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9v
dXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAg
TFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9h
ZEluc3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRl
ciBwb2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMy
Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0
dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUo
TFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChi
YXNlLCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAg
TFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDk0ZjdhZmUxMWE5MS4uN2E1NjA3NTY1
ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03OSwyMyArNzksMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpl
bWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3
aXRjaCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6
IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BS
LCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGpp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJ
bnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVu
Z3RoSW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUo
KS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7Cisg
ICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNoaWZ0
NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAg
ICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0
ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkgewot
ICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlwZWRB
cnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KLSAg
ICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUodHlw
ZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVy
ZSBzaW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVM
ZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0MzIo
VHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAgICB9
Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAg
ICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNiw4
ICsxMzUsMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2lj
R2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUoVHJ1
c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9uZS5s
aW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5i
b3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0
Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3Mp
OworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ3
ZGY3Y2I4ZTg3NS4uNWQ2YjBhODVhNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlW
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFs
dWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1
ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
YmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShp
LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwg
aSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZt
LCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAg
ICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MSwxNyArMjMzOSwxNyBA
QCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0
ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7
Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAg
IHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkp
IHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0
SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5k
ZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmlu
ZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlm
IChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJv
dW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsK
KyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlj
a2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAog
ICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKQEAgLTIz
NzEsOCArMjM2OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVl
LmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051bWJl
cigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYwMDQ0ZS4uZTc2
ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVf
QVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNk
ZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNT
NjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDJlZmI3MWM0YTY0
Li5hMzg4NDI2M2IxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtMTA0Niw4ICsxMDQ2LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAg
fSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0
SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0
LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMg
PSBmYWxzZTsKIApAQCAtMTE2OSwxNCArMTE2OSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RN
b2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7
CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNP
YmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFs
dWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1
ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5k
ZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAg
ICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGds
b2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9F
TkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGMzNWU0NTQ0MTEwNi4uNWVkZWE4M2IwNmFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVj
dHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRy
b3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdFX1RZUEVEX0FS
UkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJh
eVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFIG9y
IFJJU0NWNjQKQEAgLTEzMDAsNyArMTMwNCw3IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQs
IGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpTQ2Vs
bDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNy
byBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5p
c2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCittYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFz
ZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFy
Z2VUeXBlZEFycmF5LCBzbG93UGF0aCkKICAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZl
biBoYXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVw
IGZyb250LgogICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBlW2Jhc2VdLCB0MgogICAgIHN1YmkgRmly
c3RUeXBlZEFycmF5VHlwZSwgdDIKQEAgLTEzMTEsMTMgKzEzMTUsMjIgQEAgbWFjcm8gZ2V0QnlW
YWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91Ymxl
R2V0QnlWYWwsIHMKICAgICBpZiBBUk02NEUKICAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKICAg
ICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3
OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNs
b3dQYXRoCisgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwg
bGVuZ3RoCisgICAgICAgIGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgZWxzaWYg
SlNWQUxVRTY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5
IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90
aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBz
Y3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNl
IHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5k
ZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbmQK
IAorICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICBicWJlcSBpbmRleCwgU21hbGxU
eXBlZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxUeXBlZEFycmF5CisgICAgICAgIHNldExhcmdlVHlw
ZWRBcnJheSgpCisuc21hbGxUeXBlZEFycmF5OgorICAgIGVuZAorCiAgICAgbG9hZHAgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2VdLCB0MwogICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBs
ZW5ndGgsIGJhc2UsIHNjcmF0Y2gpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZjNkOTdjYTRmN2Ni
Li4zNjMyMzcxNDFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJ
bmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRH
ZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRC
eVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0
QnlWYWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6
CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
aW5kZXggZmJkYmE2OGUwZjMwLi44MjM1N2ZhYzMzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEzLDYg
KzE3MTMsMTYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFs
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmluaXNoR2V0QnlW
YWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisgICAgaWYgTEFSR0VfVFlQRURfQVJS
QVlTCisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAgICBzdG9y
ZWIgMSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5
cGVkQXJyYXlbdDVdCisgICAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICAgbWFjcm8gc2V0TGFy
Z2VUeXBlZEFycmF5KCkKKyAgICAgICAgICAgIGNyYXNoKCkKKyAgICAgICAgZW5kCisgICAgZW5k
CisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3NjMs
NyArMTc3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAu
b3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwg
dDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cp
CiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9n
ZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCmluZGV4IGM5YjhmMmE3MTkxZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8
U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAot
U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRl
c3RydWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVz
dHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpA
QCAtNjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRz
KEFycmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlz
KTsKIH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24m
JiBkZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAs
IG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lk
IEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0K
IAotdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwg
c2l6ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXpl
ID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUg
LyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsK
KyAgICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVz
Lmhhc092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
c2l6ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRp
b25TaXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXpl
SW5CeXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9j
YXRpb25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29t
ZXRoaW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1
ZmZlciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9j
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRh
VHlwZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6
ZUluQnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVu
dHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZQogICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRh
LCAwLCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7
CisgICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVz
dHJ1Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0K
QEAgLTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChB
cnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3Np
emVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVf
dCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVm
ZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICgh
YnVmZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVh
dGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVh
dGUoc291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYs
NyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250
ZW50cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8g
LSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQg
aW4gdGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBm
cm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRl
ZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNh
Z2U6OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRl
RnJvbUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2Fn
ZURlc3RydWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVu
Z3QKIC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9m
IHR5cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8g
ICBkaWZmZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZy
b20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0
ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0
cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRh
dGEgJiYgIUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAg
ICAgICBHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3
LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0
IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
Y29udGVudHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlh
bGl6ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRl
KG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQg
Ynl0ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVy
Q29udGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwg
MSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYs
MTcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwo
V1RGTW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShu
dW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5p
dGlhbGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5
QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwo
QXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVf
dCBieXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAg
IGF1dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRz
KSkpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAg
ICBpZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVt
Y3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1
cm4gYnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBj
b250ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kp
OwpAQCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZl
ckNvbnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFt
cFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBB
cnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdo
dCkKIHsKICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAt
MzAxLDkgKzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4
LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5z
aWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90
IEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVu
Z3RoID0gYnl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0g
Y3VycmVudExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBj
dXJyZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0
aENsYW1wZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2ln
bmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBj
b25zdAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6
IDA7CisgICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAg
ICAgYXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAg
IHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLjg5YTBiOWM4
YTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzksNyArMzksMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBDUFUoQUREUkVTUzY0
KQorI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxzZQorLy8g
QmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMg
b2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9y
bXMuCisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJl
IHF1aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFu
aXB1bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGlu
IHRoZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25l
IGNhcmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRp
ZgogCiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNTgsNyBAQCB1c2lu
ZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFy
ZWRUYXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAog
ICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6
ZUluQnl0ZXMpOyB9CkBAIC02MCwxNCArNjcsMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRh
VHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsK
ICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6
ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5C
eXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZm
ZXJDb250ZW50cyYmKTsKQEAgLTc5LDcgKzg2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0g
ICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9
CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsg
fQogICAgIAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQog
ICAgIApAQCAtOTQsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUK
ICAgICB9OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0
cnlBbGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAg
IHZvaWQgdHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExMiwy
OCBAQCBwcml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0
ZXM7CisgICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6
IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3Ro
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUo
QXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+
IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qg
Ynl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lk
KiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNp
emVfdCBieXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRB
cnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVB
cnJheUJ1ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwog
ICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVk
IGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25z
dDsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2Rl
KEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJl
Z2luLCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJy
YXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVn
aW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFy
cmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5k
KSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1
bnBpbigpOwpAQCAtMTYxLDEyICsxNjgsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdl
RGVzdHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2
b2lkKiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0
ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYm
LCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFy
cmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZl
cihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4
KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZh
bHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5l
IHNpemVfdCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGlu
ZSBzaXplX3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7
CiAKICAgICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMTk5LDcgQEAg
Y29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
bnRzLmRhdGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25z
dAorc2l6ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jb250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxMiw3IEBAIGJvb2wgQXJy
YXlCdWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0
aW1hdGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0
byBzY2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICBy
ZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0
aCgpKTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0K
IAogdm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDczNzIyNzQ1
MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6
ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNl
dChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwg
bV9ieXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5
dGVPZmZzZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChi
eXRlT2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uN2NmYzQxZjY0MDgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0KCkgY29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVy
biBtX2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNl
dERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVy
biBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBl
ciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29s
IHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNp
emUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0
ZU9mZnNldCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVs
ZW1lbnRTaXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBh
IGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5n
ZS4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZl
ciYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6
ZV90IHNpemUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdl
IG9mIGFuIEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJp
ZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAg
ICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAg
c2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0
ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAv
IHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0g
Ynl0ZU9mZnNldCkgLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVt
YWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJh
eUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsK
ICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXco
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0g
ICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zm
c2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBi
eXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlu
bGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUlt
cGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9m
ZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBi
b29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxl
bmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3Ro
KAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAg
ICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wg
emVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7
CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhp
cyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0
ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAg
ICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0
ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51
bUVsZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXpl
X3QgKm9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAg
IHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXpl
b2YoVCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlm
ICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5
dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpv
ZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0
ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMg
PSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBD
aGVja2VkPHNpemVfdD4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3Rl
ZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0
ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBh
ZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAg
ICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgc2l6ZV90IHJlbWFp
bmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihU
KTsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpu
dW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7Cisj
aWYgQ1BVKEpTVkFMVUU2NCkKKyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNl
CisgICAgdWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNE
ZXRhY2hhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgc2l6ZV90IG1f
Ynl0ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJl
c3Mgb2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBA
IC0xNjAsODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZp
ZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNl
dEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAg
aWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFy
cmF5LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCAr
IGFycmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiBy
YW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFs
KGJ5dGVPZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVP
ZmZzZXQsIGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
Citib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVP
ZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVu
Z3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0
aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVy
ZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5
dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAK
ICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkp
OwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1w
bCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRl
T2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0
YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFC
eXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0
IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0
LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5
dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBB
cnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90
IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVM
ZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxl
bmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBv
dmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgcmFu
Z2VCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNl
QWRkcmVzcygpKTsKICAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxl
bmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxj
dWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBh
cnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0gICAgaWYg
KHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChzdGFydCA8
IDApCi0gICAgICAgIHN0YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kICs9
IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVuZCA9IGFy
cmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0OwotICAg
ICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5ndGggPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogdXNpbmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCmluZGV4IDY4ODNhMTdjNDcyZC4uZDM2MjQ1
MGEyZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNz
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcApAQCAtMTIwLDggKzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0b21p
Y0FjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAgICAg
ICAgIGFjY2Vzc0luZGV4ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwg
ImFjY2Vzc0luZGV4Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwog
ICAgIH0KLSAgICAKLSAgICBBU1NFUlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlw
ZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nl
c3MuIl9zKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRhVmlldy5jcHAKaW5kZXggZGNjMmY1MDY0YWYyLi5mYmM5ODQ3ZDJkNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMyLDIw
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0
aCkKK0RhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXco
V1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0
YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5n
dGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZmZXIp
LCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6
OmNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9
IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIp
LCAwLCBieXRlTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmgKaW5kZXggZGEwNmI0YmIyMTQ0Li4zNDAyNjU0MTAzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBw
dWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRl
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUo
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7
CiAgICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7
CiAgICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9i
amVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29s
KiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgZ2V0KHNpemVfdCBvZmZzZXQsIGJvb2wgbGl0dGxl
RW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1
cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkg
ewpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVuc2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFu
LCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgcmVhZChzaXplX3QmIG9mZnNldCwgYm9v
bCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBU
IHJlc3VsdCA9IHRoaXMtPnRlbXBsYXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3Rh
dHVzKTsKICAgICAgICAgaWYgKCFzdGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQg
c2V0KHVuc2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0
YXR1cyA9IG51bGxwdHIpCisgICAgdm9pZCBzZXQoc2l6ZV90IG9mZnNldCwgVCB2YWx1ZSwgYm9v
bCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBp
ZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxl
bmd0aCgpKSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYmU3ZTZjMDUzNGZhLi5lZTFmZmQyZjI4NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJy
YXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5
Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
Y3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVf
dCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsK
ICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6
ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApAQCAtNjUsMjYgKzY1LDI2
IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2UoMCwgbGVu
Z3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBzaXplX3Qg
bGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBp
dGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4g
ZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgs
IGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChzaXplX3QgaW5kZXgsIGRvdWJsZSB2
YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhdID0gQWRh
cHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIHNldE5h
dGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QK
KyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
dmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IHZh
bHVlOwpAQCAtMTAwLDE2ICsxMDAsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNoZWNrSW5ib3Vu
ZERhdGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CiAgICAgewotICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIChvZmZz
ZXQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA8PSBsZW5ndGgKLSAg
ICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3Vu
dCA+PSBvZmZzZXQpOworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zm
c2V0LCBjb3VudCwgdGhpcy0+bGVuZ3RoKCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7Ci0gICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAg
ewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzExMSw3IEBA
IHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpT
R2xvYmFsT2JqZWN0KikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uNTQyOTgw
YWU2NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQor
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZz
ZXQsIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NF
UlQoKGxlbmd0aCAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KLVJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5
Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7
CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0LDcgKzc1
LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQp
CkBAIC04NSw3ICs4Niw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xMDAsNyArMTAxLDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEw
OSw3ICsxMTAsNyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAg
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkK
ICAgICByZXR1cm4gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBz
dGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsK
LSAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCks
ICZvZmZzZXQsICZsZW5ndGgpOwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNo
YXJlZEJ1ZmZlcigpOwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVt
RWxlbWVudHM8QWRhcHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAm
bGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwot
fQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4
OWVhZWJkM2MyY2MuLmYwNzQwY2I2ZDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25z
dCBDbGFzc0luZm8gSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAg
IDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgp
CiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgK
LSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQz
Ml90IGVsZW1lbnRTaXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBsZW5ndGgsIHNpemVfdCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1vZGUgbW9k
ZSkKICAgICA6IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBA
IC04MSwxOCArODEsMTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6
OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBE
b24ndCBhbGxvdyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAgIGlmIChs
ZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6ZSkKKyAg
ICBDaGVja2VkPHNpemVfdD4gc2l6ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9IGVsZW1lbnRTaXpl
OworICAgIGlmIChzaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5
cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3Ro
KTsKKworICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIHNpemUudmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3Rv
cikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBt
ZW1zZXQodmVjdG9yKCksIDAsIHNpemUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFN
ZW1vcnlBbGxvY2F0ZWQoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUp
OworICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsK
ICAgICAKICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6
ZVR5cGVkQXJyYXk7CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0
cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3
OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwK
LSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkK
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkp
CkBAIC0xMTQsNyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVj
dHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUp
CkBAIC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpT
VHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5
cGVdOwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0
CitzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFT
U0VSVF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAg
IHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUo
KTsKKyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVj
a2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNo
ZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVt
ZW50U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVy
Vmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlC
dWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0
ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwog
CiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0z
MTYsNyArMzIzLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6
OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9
IHRoaXMtPmxlbmd0aCgpOwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlko
dHlwZSkgXAogICAgIGNhc2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1
My4uZGE2ZGQwYmQ3NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdl
ZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAg
ICAgc3RhdGljIHZvaWQqIG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0
YXRpYyBzaXplX3Qgc2l6ZU9mKHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUp
CisgICAgc3RhdGljIHNpemVfdCBzaXplT2Yoc2l6ZV90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVu
dFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3Ro
KSAqIGVsZW1lbnRTaXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAg
ICAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVf
dD4gcmVzdWx0ID0gbGVuZ3RoOworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAg
ICAgIHJlc3VsdCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC52YWx1ZSgpICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQog
CiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5l
Q2FwYWNpdHkpCkBAIC0xMzYsMjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgog
ICAgICAgICBlbnVtIEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6
ZSB9OwogICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dChWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNp
emUsIEluaXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgs
IHNpemVfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAg
ICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBl
ZCBhcnJheXMuIEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25z
dHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9y
KTsKKyAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29u
c3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgp
OwogICAgICAgICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAg
ICAgIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHNpemVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAgICAgICAgIAogICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9CiAg
ICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVs
bChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9sZW5ndGg7IH0KKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVybiBtX2J1
dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgIHVzaW5nIFZlY3RvclR5cGUgPSBD
YWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgICAg
IFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgICAg
ICBzaXplX3QgbV9sZW5ndGg7CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKICAgICAg
ICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAgICB9OwpAQCAtMTkzLDggKzE5NSw4IEBAIHB1
YmxpYzoKICAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwogICAgIGlubGluZSBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGgoKSBjb25zdDsKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQXJy
YXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3RvclB0ciBt
X3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9sZW5ndGg7CiAg
ICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi45OTIy
ZmZkYjU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaApAQCAtNjksMTMgKzY5LDE1IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVl
Ojp0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9y
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVn
YXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAoaXNJbnQzMigp
KQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworCiAgICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmco
ZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZk
NmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENv
bnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRh
VmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcq
IEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVB
Q0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpT
RGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2ln
bmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6
ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJ
bmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3
OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5lYzJhZjY5
ODIzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNBcnJheUJ1ZmZlclZp
ZXc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50
U2l6ZSA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZWxlbWVudFNpemUgPSAxOwog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBUeXBlZEFycmF5Q29udGVudFR5cGUgY29udGVudFR5cGUg
PSBUeXBlZEFycmF5Q29udGVudFR5cGU6Ok5vbmU7CiAKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZpZXcqIGNy
ZWF0ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsCisgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoKTsK
ICAgICAKICAgICAvLyBEdW1teSBtZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3b3JrOyB0
aGVzZSBhcmUganVzdCBpbiBwbGFjZSB0bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1wbGF0ZSBz
cGVjaWFsaXphdGlvbiB3ZSBkbyBlbHNld2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
Ym9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNl
dChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCBsZW5n
dGgpOworICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUp
OwogICAgIAogICAgIEFycmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1By
b3RvdHlwZS5jcHAKaW5kZXggOTQ5MDYyNDdlYTY1Li5lMGZiYzUyZjg3NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTM2LDExICsxMzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFW
aWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAg
ICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNl
dCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVu
dFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1l
bnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50
U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBs
aXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihn
bG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlm
IChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBk
ZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBk
YXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVu
Z3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4g
Ynl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApAQCAt
MTgyLDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2Vp
dmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xv
YmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNv
bnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwpA
QCAtMTk1LDcgKzE5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRp
YW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMikudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0LDcgKzIw
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJV
bmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3Mp
OwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBz
aXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNp
emUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
T3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4
MWQuLmVhMWVmOWMxM2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5j
bHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19FWFBPUlRf
UFJJVkFURSBjb25zdCBDbGFzc0luZm8qIGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZvKCk7CiAv
LyAgICAgU3RydWN0dXJlKiBTICAgICAvLyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRlcmZseSog
QiAgICAgLy8gZnJvbSBKU09iamVjdAogLy8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAgICAgdWlu
dDMyX3QgTAorLy8gICAgIHNpemVfdCBMCiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8v
IFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRz
LiBGSVhNRTogTWFrZQorLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBv
aW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAv
LwogLy8gQiBpcyB1c3VhbGx5IHVudXNlZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwg
Im92ZXJmbG93IiBkYXRhIGZvcgpAQCAtMTAzLDE0ICsxMDQsMTQgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKTsKIAotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwot
ICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0aWMg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0Kiwg
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAotICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KICAgICBz
aXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKiB0eXBlZFZlY3RvcigpIGNvbnN0CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+
KHZlY3RvcigpKTsKICAgICB9CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0
CisgICAgYm9vbCBpbkJvdW5kcyhzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBpIDwgbV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQg
dG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3Vw
cG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRl
eFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShz
aXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFw
dG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhR
dWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJ
bmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2Fu
Q29udmVydFRvSlNRdWlja2x5OwogICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoc2l6ZV90
IGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAg
cmV0dXJuIHR5cGVkVmVjdG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHko
c2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVl
KG51bGxwdHIsIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAK
LSAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZl
VmFsdWUoc2l6ZV90IGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZh
bHVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAg
ICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFw
dG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBpLCBKU1ZhbHVl
IGpzVmFsdWUpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwog
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSAr
MTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3Rh
dGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVl
PEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5
cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1
ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0
Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNW
YWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0
aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgp
CiAgICAgewpAQCAtMTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgK
LSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAg
Ly8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZz
ZXQ7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGxlbmd0
aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNrbHksIGV4
Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAvLyBhcHBy
b3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVS
YW5nZShKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYg
aXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNl
cHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpT
T2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBl
IHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9i
amVjdCosIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0Kiwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6
ZV90IGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAgICAKICAg
ICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJ
bXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5
cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJvdyBvbiBl
cnJvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAgICAgYm9vbCBzZXRX
aXRoU3BlY2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNl
dCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0gICAgICAgIHVuc2ln
bmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3Ro
ZXJBZGFwdG9yPiosCisgICAgICAgIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgs
IENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMgdGhhdCBmbG9hdGlu
ZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBvcmRlcmluZzoK
ICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXJpZnlBcnJh
eSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBlZFZlY3RvcigpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAgICAgICAgYXJyYXlb
aV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCA0NTAyMzg3OTJkMTAuLjFlYjNkMTc4NjFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlz
LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDcs
NyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3RvcigKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQg
bGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBj
b250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyArNzksNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTk5LDcg
KzEwMCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0g
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNDUsNyAr
MTQ2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1OSw4ICsxNjAs
OCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdl
KAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRh
cHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zm
c2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKLSAgICB1
bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIHNpemVfdCBvdGhlck9mZnNl
dCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtMjE4LDcgKzIxOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVmZmVyKCkgIT0gb3Ro
ZXItPmV4aXN0aW5nQnVmZmVyKCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXplID09IG90aGVyRWxl
bWVudFNpemUgJiYgdmVjdG9yKCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAgICAgICB8fCB0eXBl
ID09IENvcHlUeXBlOjpMZWZ0VG9SaWdodCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAg
ICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRU
bzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIGJvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAK
ICAgICAvLyBOb3cgd2UgZWl0aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBmaXJzdCB3ZSB0cnkg
dG8gY292ZXIgKDJCKS4KICAgICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSkg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5
VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6
OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXIt
PmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjM4
LDExICsyMzksMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
V2l0aFNwZWNpZmljVHlwZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGludGVybWVk
aWF0ZSB0cmFuc2ZlciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZlY3Rvcjx0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlLCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBp
LS07KSB7CiAgICAgICAgIHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFwdG9yOjp0ZW1wbGF0
ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5
QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gbGVuZ3RoOyBpLS07KQorICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspCiAg
ICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsgaSwgdHJhbnNmZXJC
dWZmZXJbaV0pOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0ICsyNTEsMTQgQEAg
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlw
ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9iamVjdE9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHNpemVfdCBvYmplY3RP
ZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNzSW5mbyh2bSk7CiAg
ICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6dHlwZVZhbHVlKSB7
Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbWNweSBzaW5j
ZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3
ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCiAgICAgICAgIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5
Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxlbmd0aCwgb3RoZXIt
Pmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0zMTMsOCArMzE0LDEwIEBAIGJvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3cs
IHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICAvLyBnZXQoKSBmb3Igbm93IHByb2JhYmx5IGRvZXMgbm90
IGRvIHRoZSByaWdodCB0aGluZyBmb3IgaW5kaWNlcyBhYm92ZSBVSU5UX01BWC4KKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQp
KTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBib29sIHN1Y2Nl
c3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVlKTsKICAgICAgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRjMGViZDFmNjE2NS4u
YTk3NDczNzNjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
QEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZh
bHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVByb2ZpbGU7CiBjbGFz
cyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9u
OwpAQCAtMjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIHB1
dEJ5SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogICAgIHsKICAgICAg
ICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKGNhblNldEluZGV4
UXVpY2tseShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAgc2V0SW5kZXhRdWlj
a2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRyeVNldEluZGV4UXVp
Y2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRo
aXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAg
IH0KIApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGNhbkdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OwotICAgIEpTVmFsdWUg
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7CisgICAgSlNWYWx1
ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJheVByb2ZpbGUqID0g
bnVsbHB0cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWdu
ZWQgaSkgY29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKLSAgICBK
U1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorCisgICAgLy8gVXNl
cyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlw
ZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikgY29uc3QK
ICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVy
Zmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBB
TExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2FuR2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDExLDM1ICs0MTEsNzMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0KGds
b2JhbE9iamVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JU
eXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lkIHNldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAgICAKLSAgICBib29s
IGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQg
c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiwgdW5zaWduZWQs
IEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJuIHRydWUgdG8gaW5kaWNhdGUgc3VjY2VzcworICAg
IC8vIFVzZSB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxh
cmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CisgICAg
Ym9vbCB0cnlTZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5k
ZXhpbmdNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0g
ICAgICAgICAgICByZXR1cm4gY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2YWx1
ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShp
LCB2LCBhcnJheVByb2ZpbGUpOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRB
QkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VC
TEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNf
SU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5H
X1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc0lu
dDMyKCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZU9yQ29udGlndW91
c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgICAg
IGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0
dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgdm0uaGVhcC53cml0
ZUJhcnJpZXIodGhpcywgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAg
ICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzTnVtYmVyKCkpIHsKKyAgICAg
ICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5k
ZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOworICAgICAgICAgICAg
aWYgKHZhbHVlICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29u
dGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gdmFsdWU7CisgICAgICAgICAgICBpZiAoaSA+
PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+
c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNl
IEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9y
TGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2V0
SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAg
ICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVu
Z3RoKCkKLSAgICAgICAgICAgICAgICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1f
dmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGlzQ29weU9uV3Jp
dGUoaW5kZXhpbmdNb2RlKCkpKQorICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5hcnJh
eVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCkt
Pm1fdmVjdG9yW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChp
c0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHko
Vk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2ZTFiYjFiNTlmMWUuLjBjZjUwYjk5
NTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpjYW5HZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgfQogfQogCi1p
bmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6Omdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNkZWZpbmUgQ0FTRV9U
WVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDpcCi0g
ICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKS0+
Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJS
QVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKLSN1bmRl
ZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgaWYgKGkgPiBB
cnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFycmF5UHJvZmlsZSkK
KyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpOworI2Vsc2UK
KyAgICAodm9pZClhcnJheVByb2ZpbGU7CisjZW5kaWYKIAotaW5saW5lIEpTVmFsdWUgSlNPYmpl
Y3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKLXsKICAg
ICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkg
XAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcgKzUwNiw1MCBAQCBp
bmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogfQotICAgIAorCitp
bmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhp
bmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAgIEFycmF5U3RvcmFn
ZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKKyAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICBKU1ZhbHVl
IG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAgIGlmICghb2xkKSB7
CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAgICAgICAgaWYgKGkg
Pj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgoaSAr
IDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8g
e1wKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExl
bmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5
QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZWxzZQorI2RlZmlu
ZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRve1wKKyAgICAodm9pZClh
cnJheVByb2ZpbGU7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2VuZGlmCisjZGVmaW5lIENBU0Vf
VFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCisgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtc
CisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAq
Pih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGks
IHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNl
dEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFy
cmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNI
X1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZ
UEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BS
T0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBp
bmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXgg
Y2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhR
dWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
b2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2Up
ICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi4yYTg2MzYzMWFh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTk2
LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYWdl
U2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8IDMyKSAvIHBhZ2VT
aXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJWkUgLyBwYWdlU2l6ZSk7CiAKICAg
ICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaApp
bmRleCBmZjE1NjVmMTFkZWQuLmIyN2IwOGU1OWU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+
PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5C
b3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhT
b3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGlj
aXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRl
c3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFy
Z2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0
cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAg
ICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwg
YWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0g
c3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHND
aGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFs
c2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2
YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAg
ICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFz
IFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0
cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAg
ICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0
aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAg
ICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+
IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29u
c3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3Jl
YXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyAr
MTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1
Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3Vy
Y2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAg
ICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMg
c2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRl
ciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVv
ZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMg
dW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49
IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291
cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3Rl
eHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0No
ZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZl
cnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBj
b252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFp
c0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYs
NiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wg
cHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0
PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBD
aGVja2VkPFQ+IHN1bSA9IGE7CisgICAgc3VtICs9IGI7CisgICAgcmV0dXJuICFzdW0uaGFzT3Zl
cmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDw9IGJvdW5kOworfQorCiB9CiAKIHVzaW5nIFdURjo6
QXNzZXJ0Tm9PdmVyZmxvdzsKQEAgLTEwMTcsMyArMTAyNCw0IEBAIHVzaW5nIFdURjo6ZGlmZmVy
ZW5jZU92ZXJmbG93czsKIHVzaW5nIFdURjo6aXNJbkJvdW5kczsKIHVzaW5nIFdURjo6cHJvZHVj
dE92ZXJmbG93czsKIHVzaW5nIFdURjo6c3VtT3ZlcmZsb3dzOwordXNpbmcgV1RGOjppc1N1bVNt
YWxsZXJUaGFuT3JFcXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDUxNzM3MjE3YTU1MS4uZGNi
MDhlZGVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTE0Nyw2ICsxNDcsMTEgQEAKICNkZWZp
bmUgVVNFX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKEpTVkFMVUU2NCkKKy8vIFdoZXRo
ZXIgdG8gc3VwcG9ydCB0eXBlZCBhcnJheXMgPiAyR0IKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVE
X0FSUkFZUyAxCisjZW5kaWYKKwogLyogRklYTUU6IFRoaXMgbmFtZSBzaG91bGQgYmUgbW9yZSBz
cGVjaWZpYyBpZiBpdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBDYWxsRnJhbWUqICovCiAvKiBVc2Ug
X19idWlsdGluX2ZyYW1lX2FkZHJlc3MoMSkgdG8gZ2V0IENhbGxGcmFtZSogKi8KICNpZiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IGNi
N2U4NGQ0NTM4My4uYjE4ZDhmZDZhMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBk
ZXN0aW5hdGlvbiwKICAgICBpZiAoYnVmZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVm
ZmVyT2Zmc2V0OworICAgIHNpemVfdCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7
CiAgICAgY291bnQgPSBzdGQ6Om1pbihkZXN0aW5hdGlvbi5nZXQoKS5sZW5ndGgoKSwgY291bnQp
OwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBjaGFubmVsRGF0YS0+ZGF0YSgpOwpAQCAt
MjI2LDcgKzIyNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFu
bmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgc291cmNlLCB1bnNpZ25lCiAgICAgaWYgKGJ1ZmZlck9m
ZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2ln
bmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3QgY291bnQg
PSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oc291cmNl
LmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IHNv
dXJjZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5hOTIzYWM0NDgwMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcApAQCAtMTk2LDggKzE5Niw3IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0
ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAgICBkb0ZGVEFu
YWx5c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGZyb20gbGluZWFyIG1h
Z25pdHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVuc2lnbmVkIHNvdXJjZUxl
bmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3Rk
OjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXpl
X3QgbGVuZ3RoID0gc3RkOjptaW4obWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpLCBkZXN0aW5hdGlv
bkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBk
b3VibGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/
IDEgOiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3Qg
ZG91YmxlIG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw3ICsyMjYsNyBAQCB2
b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5
JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
Ci0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgZmZ0
U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKICAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0
U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsK
ICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09
IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CkBAIC0y
NTEsNyArMjUwLDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRh
dGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBz
aXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKICAgICBzaXplX3QgbGVuZ3RoID0gc3Rk
OjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CiAgICAgaWYgKGxlbmd0
aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIu
c2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNp
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjU0ZjIxMTg1ZWUyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC0xMjYzLDggKzEyNjMsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdyaXRlKEltYWdl
RGF0YVRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7CiAgICAgICAg
ICAgICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRh
dGEtPmRhdGEoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgp
LmRhdGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVja2Vk
PHVpbnQzMl90PiBkYXRhTGVuZ3RoID0gZGF0YS0+ZGF0YSgpLmxlbmd0aCgpOworICAgICAgICAg
ICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRh
dGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNv
bG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CkBAIC0xMzExLDggKzEzMTIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRhZyk7Ci0gICAg
ICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAg
ICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRh
KCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVja2Vk
PHVpbnQzMl90PiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgp
OwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi5l
NzkyMDQyYWQ2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1Nl
bmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2Vi
Q29yZTo6QmxvYiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwog
ICAgIGlmICghYnl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6
OmNyZWF0ZSgwVSwgMSksIDAsIDApOworICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KDBVKSwgMSksIDAsIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8QmxvYkxvYWRl
cj4oW3RoaXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li5hNmVmNGUzYWZmNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTYzLDcg
KzYzLDEwIEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1
cm5WYWx1ZSwgViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNz
KQogICAgIHsKICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFs
dWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVu
ZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBzaXplX3QgYWN0dWFsT2Zmc2V0OworICAgICAg
ICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFubmVz
cyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9IGFj
dHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCg==
</data>
<flag name="commit-queue"
          id="463978"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440258</attachid>
            <date>2021-10-05 13:36:52 -0700</date>
            <delta_ts>2021-10-05 16:40:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>215428</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
Y2UwMDcxMzQ2YjE4Li41ODQ2MTliNDM0YjQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMTAtMDUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdGVzdHMgdXNlZCB0byBzaW1w
bHkgZXhwZWN0IGFuIE9PTSBhdCAyR0IuCisgICAgICAgIFRoZXkgbm93IGV4cGVjdCBzdWNjZXNz
IGF0IDRHQiwgYW5kIGZhaWx1cmUgYXQgNEdCKzEuCisgICAgICAgIFRoZSBleGNlcHRpb25zIHRo
ZXkgZXhwZWN0IGFyZSBub3cgbW9yZSBzcGVjaWZpYywgYXMgcHJldmlvdXNseSB0aGVyZSB3YXMg
YSByb3VuZGluZyBpc3N1ZSB0aGF0IHdhcyBjYXVzaW5nIHRoZSBzcGVjaWZpYyBleGNlcHRpb25z
IG5vdCB0byBiZSB0aHJvd24gKHJlc3VsdGluZyBpbiB0aGUgZ2VuZXJpYyBPT00gZXhjZXB0aW9u
IGxhdGVyIGluIHRoZSBjb2RlKS4KKyAgICAgICAgRmluYWxseSBJIG1hZGUgdGhlbSBvbmx5IHJ1
biBvbiA2NC1iaXQgcGxhdGZvcm1zIHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgdHlwZWQgYXJyYXlz
ID49MkdCIG9uIDMyLWJpdHMsIGFuZCBJIG1hZGUgdGhlbSBvbmx5IHJ1biBpbiBvbmUgY29uZmln
dXJhdGlvbiBzaW5jZSB0aGV5IGNhbiB0YWtlIGEgbGl0dGxlIGJpdCBvZiB0aW1lLgorCisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qczoKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIHN0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qczoKKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9iaWctd2FzbS1tZW1vcnkuanM6CisgICAgICAgICh0
ZXN0KToKKwogMjAyMS0xMC0wNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlIGltcGxlbWVudGF0aW9uIG9mIF9fcHJv
dG9fXyBuZWVkcyB0byBoYW5kbGUgZ2V0X2J5X2lkX3dpdGhfdGhpcwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzIGIvSlNUZXN0cy9zdHJl
c3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCmluZGV4IGViNDgwMjcxYWEyZS4uZjg2
NTg5MzM2ZGNhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jv
dy1uby1tYXguanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8t
bWF4LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBz
a2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFy
Y2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVz
dCgpIHsKIApAQCAtMjQsMTkgKzI1LDI1IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2
YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgeworICAgIGxldCBtYXhTaXplID0gMHgxMDAwMDsKKyAg
ICB7CiAgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlh
bDogMHgxMDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworICAgICAgICBtZW1v
cnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcg
VWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQg
MCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1
bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFy
IG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Cisg
ICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDAgKyAxKTsKKyAgICAgICAgdmFyIHJl
c3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0g
dHJ1ZTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJh
bmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJS
YW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkuZ3JvdyBleHBlY3RzIHRoZSBncm93biBzaXpl
IHRvIGJlIGEgdmFsaWQgcGFnZSBjb3VudCIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0K
LQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9y
IjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcwppbmRleCAxMWFhNWU1ZDI1
NzEuLmRiZWYwNGQ5NjVmNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVt
b3J5LWdyb3cuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMK
QEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYg
JG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0
dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewog
CkBAIC0yNCwxOSArMjUsMjYgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9
IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiAweDgwMDAgfSk7Ci0gICAgICAgIG1l
bW9yeS5ncm93KDB4NzAwMCk7CisKKyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgewor
ICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4
MTAwMCwgbWF4aW11bTogbWF4U2l6ZSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAt
IDB4MTAwMCk7CiAgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5
LmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAg
IHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2Vi
QXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplKzEgfSk7
CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgKyAxIC0gMHgxMDAwKTsKKyAgICAgICAgdmFy
IHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9r
ID0gdHJ1ZTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0g
IlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9
ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ21heGltdW0nIHBhZ2UgY291bnQgaXMg
dG9vIGxhcmdlIikKICAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQog
ICAgICAgICB0aHJvdyAiRXJyb3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
d2FzbS1tZW1vcnkuanMKaW5kZXggZDhlN2ZiNjliNGJhLi44MGZmMDZiMjY3YWQgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctd2FzbS1tZW1vcnkuanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5
TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0g
ImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1bHQoKQog
CiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxNyArMjUsMjEgQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0Fy
cmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXN1
bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcikpOworICAgIGxldCBtYXhTaXplID0g
MHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXko
bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IG1heFNpemUsIG1heGltdW06IG1heFNp
emUgfSkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKICAgICAgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisgICAgfQor
CisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogbWF4U2l6
ZSsxLCBtYXhpbXVtOiBtYXhTaXplKzEgfSkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsK
ICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJy
b3I6IE91dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVy
cm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdl
IikKICAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0
aHJvdyAiRXJyb3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwppbmRleCA0ZjUyMmJiMzBhYWUuLmU5YWY1MDc4OTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQ2IEBACisyMDIxLTEwLTA1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jp
c3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAg
ICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2hpbGUgaW5jcmVhc2luZyBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgdG8g
NEdCIHdhcyBlYXN5LCBpdCB3YXMgbm90IHJlbW90ZWx5IHRoZSBvbmx5IHRoaW5nIHJlcXVpcmVk
IHRvIGdldCB0aGlzIHRvIHdvcms6CisgICAgICAgIC0gNEdCIGlzIG5vdCByZXByZXNlbnRhYmxl
IGluIGEgdWludDMyX3QsIHNvIEkgY2hhbmdlZCBhbGwgbGVuZ3RoIG9mIEFycmF5QnVmZmVyL1R5
cGVkQXJyYXkvZXRjLi4gdG8gYmVpbmcgc2l6ZV90CisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVp
cmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9G
VEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBh
dm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGlu
IHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJh
eSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50
NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51
bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZU
TCwgc2VlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MiBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyIGZvciBleGFtcGxlcworICAgICAgICAtIEkgbW9kaWZpZWQgdGhlIHJ1bnRpbWUgZnVu
Y3Rpb25zIGZvciBHZXRCeVZhbC9QdXRCeVZhbC9EYXRhVmlld0dldC9EYXRhVmlld1NldC9BdG9t
aWNzWFhYIHRvIGFjY2VwdCBub24tSW50MzIgaW5kaWNlcywgc2luY2UgZm9yIHtJbnQ4L1VJbnQ4
L1VJbnQ4Q2xhbXBlZH1BcnJheSwgYSBtYXhpbXVtIHNpemUgb2YgNEdCIGltcGxpZXMgaW5kaWNl
cyA+IDJCLgorICAgICAgICAtIEkgYWRkZWQgYSAibWF5QmVMYXJnZVR5cGVkQXJyYXkiIGJpdCB0
byBBcnJheVByb2ZpbGUvVW5saW5rZWRBcnJheVByb2ZpbGUvREZHOjpBcnJheU1vZGUgdG8gdHJh
Y2sgd2hldGhlciBzdWNoIGEgbm9uLUludDMyIGluZGV4IHdhcyBzZWVuIHRvIGFsbG93IHByb3Bl
ciBzcGVjdWxhdGlvbiBhbmQgc3BlY2lhbGl6YXRpb24gb2YgZmFzdCBwYXRocyBpbiB0aGUgREZH
L0ZUTC4KKyAgICAgICAgICAgIEkgdGhlbiB1cGRhdGVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyB1
c2VkIGJ5IHRoZSBzbG93IHBhdGhzIHRvIGNvcnJlY3RseSB1cGRhdGUgaXQuCisKKyAgICAgICAg
VW5mb3J0dW5hdGVseSBJIHJhbiBvdXQgb2YgdGltZSB0byBhZGQgdGhlc2Ugc3BlY3VsYXRpb25z
L3VwZGF0ZSB0aGUgZmFzdCBwYXRocy4KKyAgICAgICAgU28gdGhlIGZvbGxvd2luZyB3aWxsIGhh
dmUgdG8gd2FpdCBmb3IgYSBmb2xsb3ctdXAgcGF0Y2g6CisgICAgICAgIC0gQWNjZXB0aW5nIGxh
cmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aCBvZiBHZXRCeVZhbCBpbiB0aGUgTExJbnQKKyAg
ICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRocyBnZW5lcmF0
ZWQgYnkgQWNjZXNzQ2FzZS9Qb2x5bW9ycGhpY0FjY2VzcworICAgICAgICAtIEFjY2VwdGluZyBs
YXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGhzIGdlbmVyYXRlZCBieSB0aGUgREZHL0ZUTCBm
b3IgZWFjaCBvZiBHZXRCeVZhbC9QdXRCeVZhbC9EYXRhVmlld0dldC9EYXRhVmlld1NldC9BdG9t
aWNzWFhYCisKKyAgICAgICAgVGhlIGN1cnJlbnQgcGF0Y2ggaXMgZnVuY3Rpb25hbCwgaXQgd2ls
bCBqdXN0IGhhdmUgZHJlYWRmdWwgcGVyZm9ybWFuY2UgaWYgdHJ5aW5nIHRvIHVzZSBpbmRpY2Vz
ID4yQiBpbiBhIHtJbnQ4L1VJbnQ4L1VJbnQ4Q2xhbXBlZH1BcnJheS4KKworICAgICAgICBPdGhl
ciBtaW5vciBjaGFuZ2VzIGluIHRoaXMgcGF0Y2g6CisgICAgICAgIC0gRml4ZWQgYW4gdW5kZWZp
bmVkIGJlaGF2aW9yIGluIEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbCB3aGVyZSBtZW1jcHkg
Y291bGQgYmUgY2FsbGVkIG9uIG51bGxwdHIgKHRoZSBzcGVjIGV4cGxpY2l0bHkgYmFucyB0aGlz
IGV2ZW4gd2hlbiBsZW5ndGggaXMgMCkKKyAgICAgICAgLSBSZXBsYWNlZCBzb21lIHJlcGV0aXRp
dmUgYW5kIGVycm9yLXByb25lIGJvdW5kcyBjaGVja2luZyBieSBjYWxscyB0byBXVEY6OmlzU3Vt
U21hbGxlclRoYW5PckVxdWFsLCB3aGljaCBpcyBjbGVhcmVyLCBzaG9ydGVyLCBhbmQgcmV1c2Ug
Q2hlY2tlZEFyaXRobWV0aWMgZmFjaWxpdGllcyB0byBhdm9pZCBvdmVyZmxvdyBpc3N1ZXMuCisg
ICAgICAgIC0gRml4ZWQgYSB2YXJpZXR5IG9mIG9ic29sZXRlIGNvbW1lbnRzCisgICAgICAgIC0g
QWRkZWQgc3VwcG9ydCBmb3IgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgICAgICAgICAgKHRoZXJlIHdhcyBhbHJlYWR5
IHN1cHBvcnQgZm9yIHRoZSBzYW1lIGJ1dCB3aXRoIFRydXN0ZWRJbW02NCkKKyAgICAgICAgLSBN
YWRlIHZhcmlvdXMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciBmdW5jdGlvbiBjb25zdGV4cHIgYXMg
cGFydCBvZiB0aGUgcHJldmlvdXMgcG9pbnQKKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyOjpUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cjo6YXNJbnRwdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyOjphc1B0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6SW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyOjphc1RydXN0ZWRJbW1QdHIpOgorICAgICAgICAoSlND
OjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzI6OlRydXN0ZWRJbW0zMik6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTMyOjpJbW0zMik6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTMyOjphc1RydXN0ZWRJbW0zMiBj
b25zdCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02
NDo6VHJ1c3RlZEltbTY0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
SW1tNjQ6OkltbTY0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1t
NjQ6OmFzVHJ1c3RlZEltbTY0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjo6Y2FuQmxpbmQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpicmFuY2g2NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2g2NCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjRFOjp1bnRhZ0FycmF5UHRyTGVuZ3RoNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0aDMyKTogRGVsZXRlZC4KKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmNhbkJsaW5kKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVX
aXRoR3VhcmQpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlQcm9maWxlOjptYXlCZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQXJyYXlQcm9maWxlOjpVbmxpbmtlZEFycmF5UHJvZmlsZSk6CisgICAgICAg
IChKU0M6OlVubGlua2VkQXJyYXlQcm9maWxlOjp1cGRhdGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6cmVmaW5lIGNv
bnN0KToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QXJyYXlNb2RlOjpBcnJheU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6bWF5
QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6
d2l0aFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1
bGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhDb252ZXJz
aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlQW5kQ29u
dmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlD
bGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OkFycmF5TW9kZTo6c3BlY3VsYXRpb25Gcm9tUHJvZmlsZSk6CisgICAgICAg
IChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhBcnJheUNsYXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0NvbW1vbi5oOgorICAgICAgICAoSlNDOjpERkc6OmVuYWJsZUludDUyKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNvbnZlcnRUb0dl
dEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpwcmVwZW5kR2V0
QXJyYXlMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHZW5lcmF0aW9uSW5mby5o
OgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9y
YWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZElu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRB
cnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUlu
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aEludDUyU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hv
aXN0aW5nUGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tzKToKKyAgICAgICAg
KEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudEFycmF5
Q2hlY2tzKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRFeGNlcHRDYXN0aW5nUmVzdWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRB
cnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRBcnJheUxlbmd0aEFzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAg
KiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25O
ZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRz
OjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50
czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
OjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0
aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAg
IChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3
OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5n
ZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFu
ZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6
OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5
cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1v
cnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBs
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
Vmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFW
aWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6c2V0KToKKyAgICAgICAgKEpTQzo6SlNE
YXRhVmlldzo6c2V0SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omdl
dERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UpOgor
ICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNw
ZWNpZmljVHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnB1dEJ5SW5kZXhJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5
R2V0SW5kZXhRdWlja2x5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldElu
ZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHkp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4
aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JU
eXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOgorICAgICAgICAoSlNDOjpnZXRCeVZhbFdpdGhJbmRleCk6CisgICAgICAgICogd2FzbS9X
YXNtUGFnZUNvdW50Lmg6CisKIDIwMjEtMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGlzcGxheSByZXR1cm4gdmFsdWVzIGluIG5pY2VyIHdheSBpbiB0
aGUganNjIFJFUEwgYW5kIGFkZCBhIHByZXR0eVByaW50IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKaW5kZXggNDNmNzg0YTRhYjkzLi5lYzMyYjcyMjFjODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0yOTgsOSArMjk4LDkgQEAgcHVibGljOgogICAgIC8vIGluIGEgY2xhc3Mg
cmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZmZXJlbnRpYXRl
CiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3NlcyB0byBtZW1v
cnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGljIFRydXN0ZWRJ
bW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVz
dGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRy
KGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZElt
bVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAg
ICAgICAgewogICAgICAgICB9CkBAIC0zMTEsMjEgKzMxMSwyMSBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpudWxs
cHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHN0ZDo6bnVs
bHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVk
SW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgaW50cHRy
X3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRwdHIoKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV92
YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAgICAgIGNvbnN0
ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzM1LDEyICszMzUsMTIgQEAgcHVi
bGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0cgogICAgIHsK
LSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBs
aWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBU
cnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUcnVz
dGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNv
bnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9
CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTM1OCw3ICszNTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzY5LDE3ICszNjksMTcgQEAg
cHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7Ci0g
ICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIo
dmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBl
eHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIo
cHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdCBUcnVzdGVk
SW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
Y29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJl
dHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIHB1Ymxp
YzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZyb20gYWNjaWRl
bnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMuCiAgICAgc3Ry
dWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tNjQoKSB7
IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAgICAKLSAgICAg
ICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDogbV92
YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQo
VHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1t
NjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRy
KCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDA5LDE3ICs0MDksMTcgQEAgcHVibGljOgog
CiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7Ci0gICAgICAg
IGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQodmFsdWUp
CiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwg
Q1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQor
ICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAg
ICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlm
Ci0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBjb25zdCB7IHJl
dHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1Ry
dXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAgICAKICAgICAv
LyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMKQEAgLTEwODYs
OSArMTA4Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAgIHN0YXRpYyBi
b29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQgY2xhc3MgRGF0
YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCmluZGV4IGQ3ZmUzYTgxZTM0MS4uZTY3NjdjNmE5YTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMzksNiAr
MTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoTXVs
MzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4Nl82NCkgfHwg
Q1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBNYWNyb0Fzc2Vt
YmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
OjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmxzaGlmdDMyOwpA
QCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAmJiAhQ1BVKEFS
TTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3RvcmU2NChp
bW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8gQ1BVKFg4Nl82
NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwg
Q1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsKICAgICB9CiAK
KyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMgZG9uJ3QgbmVl
ZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiwgUmVnaXN0
ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUuCisgICAgLy8g
V2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJlY2F1c2UgaXQg
dXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwgZXRjLi4gd2hp
Y2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVtcCBicmFuY2g2
NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tNjQgcmlnaHQp
CisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAgICAgICAgICBp
ZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBs
b2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50KHJpZ2h0KSwg
c2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCByZWdp
c3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAgLy8gcGxhY2Ug
YSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBub3BDb3VudCA9
IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQorICAgICAgICAg
ICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJp
Z2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBicmFuY2g2
NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisjZW5kaWYgLy8g
Q1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA0MjUwOTAz
YmMzMjIuLjE3OTZiNjUxYmM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3RlciA9IEFSTTY0
UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBpbXBsZW1lbnRh
dGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBz
dGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBz
aG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
Pj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZm
ZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYgKzMzMDUsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25k
LCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJp
Z2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNmLi4w
NzY2Mjk4MmQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRy
TGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRl
QXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJl
c3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewog
ICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAg
bG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRh
dGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJ
bnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwg
dmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2Nl
MGQwMWY0MDE3Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsx
MDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9p
bnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBS
ZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAg
Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGlj
IGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWlu
dDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMg
Ym9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGht
ZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li5kN2RmMWU5M2YwZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTExOTEs
MTIgKzExOTEsMTcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKIAogICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBzdGF0ZS51LnByb3BlcnR5R1BSOwogCi0gICAgICAg
IAogICAgICAgICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFsbFRocm91
Z2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkp
KSk7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6
ZV90LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgor
ICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdGF0
ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UKICAgICAgICAgaml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0
Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVy
dHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpAQCAtMTYzMCw5ICsxNjM1LDE2IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5r
KCZqaXQpOwogICAgICAgICB9CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAvLyBUaGUg
bGVuZ3RoIGlzIGEgc2l6ZV90LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24g
dGhlIHBsYXRmb3JtLgorICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIp
OworICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0
IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNo
LmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5
R1BSLCBzY3JhdGNoR1BSKSk7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHNjcmF0Y2hHUFIpOwogICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxl
IHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCiAgICAgICAgIHN0YXRlLmZh
aWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCA2OTE2Nzk0ODQzYjAuLjk5
MzFiMTBmODAwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZTsKIAog
Ly8gVGhpcyBpcyBhIGJpdGZpZWxkIHdoZXJlIGVhY2ggYml0IHJlcHJlc2VudHMgYW4gdHlwZSBv
ZiBhcnJheSBhY2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4uCiAvLyBUaGVyZSBhcmUgMTkgaW5kZXhp
bmcgdHlwZXMgdGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMuCi0vLyBUaGVyZSBhcmUgOSB0eXBlZCBh
cnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYgdG8gMjUuCisvLyBUaGVyZSBhcmUgMTEgdHlw
ZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2LTIwIGFuZCAyNi0zMS4KIHR5cGVkZWYg
dW5zaWduZWQgQXJyYXlNb2RlczsKIAogLy8gVGhlIHBvc3NpYmxlIEluZGV4aW5nVHlwZXMgYXJl
IGxpbWl0ZWQgd2l0aGluICgwIC0gMTYsIDIxLCAyMywgMjUpLgpAQCAtMjA1LDcgKzIwNSwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICwgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nKGZhbHNlKQog
ICAgIHsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIC8v
IEFjY2Vzc2luZyB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gdGhhdCB0ZW5kcyB0byBiZSBtb3Jl
IGNvbXBsaWNhdGVkIGFzIHdlIGNhbid0IGZvcmNlIGNvbnZlcnQgZXZlcnl0aGluZyB0byBpbnQz
Ml90LgorICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBzdWNoIGxhcmdlIHR5cGVkIGFycmF5cyBvbiA2
NC1iaXQgcGxhdGZvcm1zLgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc19zbWFsbFR5
cGVkQXJyYXlNYXhMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsK
KyAgICB2b2lkIHNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFy
cmF5ID0gdHJ1ZTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQor
I2Vsc2UKKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIFN0cnVjdHVyZUlE
KiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRDsgfQogICAgIEFycmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVy
biAmbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRv
SG9sZSgpIHsgcmV0dXJuICZtX21heVN0b3JlVG9Ib2xlOyB9CkBAIC0yNDQsNiArMjU0LDkgQEAg
cHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQgeyAwIH07CiAg
ICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsgLy8gVGhpcyBmbGFnIG1heSBiZWNv
bWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBl
bmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4aW5n
IHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRleGlu
ZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBub3cg
anVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1fb3V0
T2ZCb3VuZHMgeyBmYWxzZSB9OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgYm9v
bCBtX21heUJlTGFyZ2VUeXBlZEFycmF5IHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgOiAxOwogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5n
IDogMTsKQEAgLTI1Myw3ICsyNjYsMTMgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9m
aWxlKSA9PSAxMik7CiAKIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlIHsKIHB1YmxpYzoKLSAg
ICBVbmxpbmtlZEFycmF5UHJvZmlsZSgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBVbmxpbmtl
ZEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
dHJ1ZSkKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAsIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoZmFsc2UpCisjZW5kaWYKKyAgICB7CisgICAgfQogCiAgICAgdm9pZCB1cGRh
dGUoQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGUpCiAgICAgewpAQCAtMjgwLDYgKzI5OSwxMyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXMgPSBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVj
dHVyZXM7CisKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBpZiAobV9tYXlC
ZUxhcmdlVHlwZWRBcnJheSkKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VU
eXBlZEFycmF5ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9tYXlCZUxhcmdl
VHlwZWRBcnJheSA9IGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5OworI2VuZGlm
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjkwLDcgKzMxNiwxMSBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIHsgdHJ1ZSB9OworICAg
IGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgYm9vbCBtX21heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKKyNlbmRp
ZgogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVubGlua2VkQXJyYXlQcm9maWxlKSA8PSA4KTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggYjFkZmNhMjc0OWMx
Li4wNDJiMDdiODhhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTM0ODYsNiArMzQ4NiwxNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyog
dmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KAorICAgICAgICAgICAgZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkpOworICAgICAgICBpZiAo
dmlldykgeworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIodmlldy0+bGVu
Z3RoKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHNldE5vbkNl
bGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50NTJBbnkpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICBzZXROb25DZWxsVHlwZUZv
ck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzgyMSw2ICsz
ODMyLDE5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNl
dENvbmN1cnJlbnRseSgpOworICAgICAgICAgICAgaWYgKGJ5dGVPZmZzZXQpIHsKKyAgICAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50NTJBbnkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICgodmFsdWUubV90
eXBlICYmICEodmFsdWUubV90eXBlICYgflNwZWNPYmplY3QpKSAmJiB2YWx1ZS5tX3N0cnVjdHVy
ZS5pc0Zpbml0ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA2ZTI3NTMxMDRiZDMuLjA1
OWJhM2Y2ZGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0zMjUsNiArMzI1LDExIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQxKCksIG5v
ZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG5vZGUg
aXMgb25seSB1c2VkIGZvciBUeXBlZEFycmF5cywgc28gc2hvdWxkIG5vdCBiZSByZWxldmFudCBm
b3IgYXJndW1lbnRzIGVsaW1pbmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2Rl
LT5jaGlsZDIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
ICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgICAgICAgICAg
Qml0VmVjdG9yKiBiaXRWZWN0b3IgPSBub2RlLT5iaXRWZWN0b3IoKTsKICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50ID0gbV9ncmFwaC5p
c1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpOyAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAppbmRleCA2ZTRmZTlhZmEzZWIuLjA0MWFkYjc4
NjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcApAQCAt
MjA5LDcgKzIwOSw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6Rm9yY2VFeGl0LCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAot
ICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSkKKyAgICBpZiAoIWlzSW50MzJTcGVj
dWxhdGlvbihpbmRleCkgJiYgIW1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCiAgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIGFjdGlvbigpKTsKICAgICAKICAgICAvLyBJZiB3
ZSBoYWQgZXhpdGVkIGJlY2F1c2Ugb2YgYW4gZXhvdGljIG9iamVjdCBiZWhhdmlvciwgdGhlbiBk
b24ndCB0cnkgdG8gc3BlY2lhbGl6ZS4KQEAgLTI5NCw2ICsyOTQsNyBAQCBBcnJheU1vZGUgQXJy
YXlNb2RlOjpyZWZpbmUoCiAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgogICAgIGNhc2Ug
QXJyYXk6OkJpZ0ludDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnVWludDY0QXJyYXk6Cisg
ICAgICAgIC8vIEZJWE1FOiBubyBpZGVhIHdoeSB3ZSBvbmx5IHByZXNlcnZlIHRoaXMgb3V0LW9m
LWJvdW5kcyBpbmZvcm1hdGlvbiBmb3IgUHV0QnlWYWwgYW5kIG5vdCBHZXRCeVZhbCBhcyB3ZWxs
LgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkgewogICAgICAgICAgICAgaWYg
KGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3V0T2ZCb3VuZHMpIHx8
ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlSZXN1bHQo
d2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNiLi5kZjc1Yzc4OTBkNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtMTI3LDYgKzEyNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91
bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAg
ICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAgICAgICB1LmFzQnl0ZXMubWF5
QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgQXJy
YXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTM2LDYg
KzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6
OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwog
ICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5
QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFy
cmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6QWN0aW9uIGFj
dGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
Ci0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZl
cnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0
eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwg
Ym9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgdS5hc0J5
dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFzcyA9IGFycmF5Q2xh
c3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uOwogICAgICAg
ICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5h
Y3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9
IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6
OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJzaW9uIGNv
bnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAg
ICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRl
cy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJh
eSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRlcy50eXBlKTsgfQpAQCAtMTcw
LDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3BlY3VsYXRpb24+KHUuYXNCeXRl
cy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNpb24+KHUuYXNCeXRlcy5jb252
ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlvbik7IH0KKyAgICBib29sIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5hc0J5dGVzLm1heUJlTGFyZ2VU
eXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3JkKCkgY29uc3QgeyByZXR1cm4g
dS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7Ci0g
ICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxh
dGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsK
KyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlv
biBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRp
b24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAg
IH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6OkNsYXNzIGFycmF5
Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZl
cnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUo
dHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigp
KTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwog
ICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9v
bCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24o
QXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxh
dGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7Cisg
ICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRNYXlC
ZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0
aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBjb25zdAogICAgIHsK
LSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CisgICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigp
LCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAorICAgIHN0YXRpYyBB
cnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKQor
ICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9
IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6T3V0T2ZCb3Vu
ZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCi0g
ICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBteVNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhTcGVj
dWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6SW5Cb3Vu
ZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9m
aWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2Zp
bGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd2l0aFNwZWN1
bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSkp
OworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25z
dAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKLQogICAgICAgICBp
ZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsK
ICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZl
ZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAgIAotICAgIEFy
cmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZl
cnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aENvbnZl
cnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNv
bnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBl
QW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJz
aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKKworICAgICAgICBB
cnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJvb2wgbGFyZ2VUeXBlZEFycmF5
ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKKworICAgICAgICByZXR1
cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KG15
QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51c2VkSW5kZXhTcGVjdWxhdGVk
VHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAgICAgICAgJiYgYXJyYXlDbGFz
cygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAgJiYgc3BlY3VsYXRpb24oKSA9
PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3Ro
ZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNv
bnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhl
ci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3OSw3ICs1OTAsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwogICAgICAgICAgICAgdWludDhf
dCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29udmVyc2lvbiA6IDQ7Ci0gICAg
ICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6
IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICAg
ICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7CiAgICAgfSB1OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4ODEx
Yjg5ZjI0YTcuLjNkNzlmMjRlN2U4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDYsOCArMzgwNiwxNiBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIE9wZXJhbmQgcmVz
dWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0
aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogeworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljX2Fzc2VydChlbmFibGVJbnQ1MigpKTsKKyNl
bmRpZgorCiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBl
ZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogeworI2lmICFVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2lu
KCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzgyMSwyNiArMzgy
OSwzMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFu
ZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5
VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIE5vZGUqIGxl
bmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFy
cmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBOb2Rl
KiBsZW5ndGhOb2RlOworICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
KQorICAgICAgICAgICAgbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9w
SW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9k
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdl
dEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpS
ZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKICAgICAgICAgLy8gT3VyIEFycmF5TW9kZSBzaG91
bGRuJ3QgY2F1c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0byBleGl0IHdp
dGhvdXQgZWZmZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBhZGRUb0dy
YXBoKEV4aXRPSyk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAgICAgICAgIHNl
dChyZXN1bHQsIGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAotICAgICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBl
ZCBhcnJheXMgd2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAvLyB0aGF0IG92
ZXJmbG93cyBpbnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25zdGFudChqc051
bWJlcihsb2dTaXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhCaXRM
U2hpZnQsIGxlbmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBjYW5ub3QgdXNl
IGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUgYSBieXRlTGVu
Z3RoIHRoYXQgb3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6ZSA9IGpzQ29u
c3RhbnQoanNOdW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRv
R3JhcGgoQXJpdGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODUyLDEzICszODY2LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwg
T3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNO
b2RlKSk7CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAg
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJy
YXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxl
bmd0aEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNX
b3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgfQogCiAg
ICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJpbnNpYzogeworI2lmICFVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVj
a3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVy
ZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAt
Mzg3MCw3ICszODkxLDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dl
dHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBB
U1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAg
ICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZv
KEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7
CisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAg
ICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8o
QXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJh
eTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThk
ZDNmZGU5Nzc5Li41NDhiZDBlZWU5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgICAgIGNhc2UgRW51bWVyYXRvckhhc093blByb3BlcnR5OgogICAgICAgICBjYXNlIEdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rv
ckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGly
ZWN0OgpAQCAtMTMzMyw2ICsxMzM0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0Ogor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICByZWFkKE1p
c2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0
TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTQ0NCw2ICsxNDQ2LDE0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1Mjogewor
ICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICByZWFkKE1p
c2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKEFycmF5TGVuZ3RoTG9jLCBNaXNj
RmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIEFycmF5TW9k
ZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CiAgICAgICAgIHN3aXRjaCAobW9kZS50eXBlKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCmluZGV4IGM2NmZiMjIzOWY4Zi4u
YWZkYzEwYThhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKQEAgLTky
LDcgKzkyLDcgQEAgaW5saW5lIGJvb2wgdmFsaWRhdGlvbkVuYWJsZWQoKQogI2VuZGlmCiB9CiAK
LWlubGluZSBib29sIGVuYWJsZUludDUyKCkKK2lubGluZSBib29sIGNvbnN0ZXhwciBlbmFibGVJ
bnQ1MigpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjYwOWZmMDg1
Nzc4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTk3LDEw
ICsxOTcsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JM
ZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgIGNhc2UgU3RyaW5nQ29kZVBv
aW50QXQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAg
IGNhc2UgUHV0U3RydWN0dXJlOgogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA4ZTFiOTNlZWU2Y2EuLjc4M2Fm
OGJhODRlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTA0Myw2ICsxMDQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgJiYg
aXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikKICAgICAgICAgICAgICAg
ICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNTcGVjaWZpYygpCiAgICAgICAgICAgICAgICAg
ICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKQorICAgICAgICAgICAgICAgICAg
ICAmJiAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKQogICAgICAgICAg
ICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMs
IE92ZXJmbG93KSkgewogCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTEwNzMsNyArMTA3NCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhpdDogewogICAgICAgICAgICAgICAgIC8v
IERvbid0IGZvcmNlIE9TUiBiZWNhdXNlIHdlIGhhdmUgb25seSBzZWVuIE93blN0cnVjdHVyZU1v
ZGUuCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFdFIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdh
eSB0byBkbyB0aGlzLi4uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZl
IGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4uCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gRW51bWVyYXRvckdldEJ5VmFsKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRB
cnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0aFR5cGUoQXJyYXk6OkdlbmVyaWMpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzMsNiArMTEzNCwxOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJpbmdVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBBcnJheTo6SW50OEFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MTZBcnJh
eToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNl
IEFycmF5OjpVaW50OEFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDhDbGFtcGVk
QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MTZBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQz
MkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDAp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDEpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOwpAQCAtMTE4NCw2ICsxMTk3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oaW5kZXhTcGVjdWxh
dGlvbikKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNTcGVjaWZp
YygpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMo
KQorICAgICAgICAgICAgICAgICAgICAmJiAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5
cGVkQXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgewogCiAgICAgICAgICAgICAgICAgICAg
IE5vZGUqIG5ld0luZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTEyNzcsNyAr
MTI5MSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5
OgogICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9pZiAoY2hpbGQyLT5zaG91bGRT
cGVjdWxhdGVJbnQzMigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJh
eSgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOworICAg
ICAgICAgICAgICAgIC8vZWxzZQorICAgICAgICAgICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJS
ZXBVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShj
aGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6
Q29udGlndW91czoKQEAgLTE3MTcsMTIgKzE3MzQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5n
QUJhZFRpbWUobm9kZSk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZs
YWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1
MigpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMTQ5LDYgKzIxNzAsMjcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICAg
ICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZShtX2dyYXBo
LCBub2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpLCBBcnJheU1vZGU6OnVudXNlZElu
ZGV4U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKGFycmF5TW9kZS5pc1NvbWVU
eXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1v
ZGUpOworICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgRWRn
ZSgpLCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKKworICAgICAgICAgICAg
Zml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50
NTI6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3NTgsNyArMjgwMCwxMCBAQCBwcml2YXRlOgogCiAg
ICAgICAgIGNhc2UgRGF0YVZpZXdTZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZpZXdP
YmplY3RVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgICAg
ICAvL2lmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5zaG91bGRTcGVjdWxhdGVJbnQz
MigpIHx8ICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpKQorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkp
OworICAgICAgICAgICAgLy9lbHNlCisgICAgICAgICAgICAvLyAgICBmaXhFZGdlPEludDUyUmVw
VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAgIGlmIChtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVh
blVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CiAgICAgICAgICAgICAKQEAgLTQw
OTYsMTQgKzQxNDEsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIG5vZGUtPmNo
aWxkMigpID0gRWRnZShzdG9yYWdlKTsKICAgICB9Ci0gICAgCi0gICAgTm9kZSogcHJlcGVuZEdl
dEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2luLCBOb2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFy
cmF5TW9kZSkKLSAgICB7Ci0gICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5
TW9kZSwgb3JpZ2luLCBjaGlsZCwgbnVsbHB0ciwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKLSAgICAg
ICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG9yaWdpbiwKLSAgICAgICAg
ICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGNoaWxkLCBLbm93bkNlbGxVc2Up
LCBFZGdlKHN0b3JhZ2UpKTsKLSAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRUb0hhc0luZGV4ZWRQ
cm9wZXJ0eShOb2RlKiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdGlvbkluZm8uaAppbmRleCA0ZmFmOTQ5YTc4NjAuLjJkODZlYjc1NzM5YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaApAQCAtMzks
OCArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBUaGlzIGNsYXNz
IGlzIHVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGxpdmUgdmFsdWVzIGR1cmlu
ZyBjb2RlIGdlbmVyYXRpb24uCiAvLyBDYW4gcHJvdmlkZSBpbmZvcm1hdGlvbiBhcyB0byB3aGV0
aGVyIGEgdmFsdWUgaXMgaW4gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBpZiBzbyB3aGljaCwKIC8v
IHdoZXRoZXIgYSB2YWx1ZSBoYXMgYmVlbiBzcGlsbGVkIHRvIHRoZSBSZWdpc3RlckZpbGUsIGFu
ZCBpZiBzbyBtYXkgYmUgYWJsZSB0byBwcm92aWRlCi0vLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQg
aW4gbWVtb3J5IChhbGwgdmFsdWVzIGFyZSBzcGlsbGVkIGluIGEgYm94ZWQgZm9ybSwgYnV0IHdl
IG1heSBiZQotLy8gYWJsZSB0byB0cmFjayB0aGUgdHlwZSBvZiBib3gpLCBhbmQgdHJhY2tzIGhv
dyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCisvLyBkZXRhaWxzIG9m
IHRoZSBmb3JtYXQgaW4gbWVtb3J5LCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVz
ZXMgb2YgYSB2YWx1ZSByZW1haW4sCiAvLyBzbyB0aGF0IHdlIGtub3cgd2hlbiB0aGUgdmFsdWUg
aXMgZGVhZCBhbmQgdGhlIG1hY2hpbmUgcmVnaXN0ZXJzIGFzc29jaWF0ZWQgd2l0aCBpdAogLy8g
bWF5IGJlIHJlbGVhc2VkLgogY2xhc3MgR2VuZXJhdGlvbkluZm8gewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjQzYjVkMTAxMmUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZS5jcHAKQEAgLTE0OTksNiArMTQ5OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6
IHsKICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hpcChSZWxhdGlvbnNoaXAobm9kZSwgbV96ZXJv
LCBSZWxhdGlvbnNoaXA6OkdyZWF0ZXJUaGFuLCAtMSkpOwogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4uZDEzZDM3ZjAy
ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUsNiArMTk2NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2UgQXJyYXlQ
b3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICAgICAg
Y2FzZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZToKICAgICAgICAgY2FzZSBBcnJh
eUluZGV4T2Y6CkBAIC0yMDA0LDYgKzIwMDUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgY2FzZSBB
cnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1cm4gMjsKIAogICAgICAgICBjYXNl
IEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNl
IEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li43MjY0ZGMyZjU2NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlP
ZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlM
ZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBm
b3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBh
IGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRzLiAqLyBcCisgICAgbWFjcm8oR2V0
QXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhHZXRWZWN0
b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTIsIE5vZGVSZXN1bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFNjb3BlLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1h
Y3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNjlhY2Y1MTlj
MGJhLi5kNWRhMzRhNTE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcApAQCAtOTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBw
dXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFsdWUKICAg
ICB9CiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJ
bmRleFF1aWNrbHkoaW5kZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRl
eFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRyeVNldElu
ZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQogCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTE3NSw3ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsQ2Vs
bFN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
MzJfdCBzaXplLCBjaGFyKiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Q1BVUmVnaXN0ZXIgc2l6ZSwgY2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTgzLDExICsxODEsMTMgQEAgY2hhciogbmV3VHlw
ZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHIKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0
aXZlIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKworICAgIHNp
emVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpOworCiAgICAgaWYg
KHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpj
cmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSwgdW50YWdB
cnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVuc2lnbmVkU2l6ZSkpKTsK
IAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3
Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSkpKTsKIH0KIAogdGVtcGxh
dGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAoVk0qIHZtUG9pbnRlciwg
U3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2
ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YmFsTwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTQwLDcgKzE5NDAsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1
bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MTZBcnJh
eT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0
KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
MTk1Niw3ICsxOTU2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5ODgs
NyArMTk4OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENs
YW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKCiAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNVaW50OENsYW1wZWRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRW
YWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIw
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMjAzNiw3ICsyMDM2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Miw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJy
YXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9w
dCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNp
emVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKaW5kZXggODQ0YzE5YjMxMTQxLi44MGRmODFmZGYwNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xMTksMjcgKzExOSwy
NyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5LCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKgogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdFbXB0eUFycmF5LCBjaGFyKiwgKFZNKiwgU3RydWN0dXJlKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kSGludCwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGludDMyX3QsIEJ1dHRl
cmZseSopKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJf
dCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90
LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
c2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJ
bnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpT
VmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qs
IGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNo
YXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3Ry
dWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQwNDRmNWY1YzAuLjQ3ODcw
M2FjMTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2ICs5ODYsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQ1MkFueSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVB
dDoKICAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAgICAgICAgICAgc2V0UHJl
ZGljdGlvbihTcGVjSW50MzJPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2Li41YmQzNzdkYWY4OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNzMsNiArMzcz
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNh
c2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiAr
Mzg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hl
ZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAg
ICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYjRjOGY4NjBiNTE0Li44ODJkNzdkMGZm
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0zMjQ1LDE2ICszMjQ1LDI4IEBAIEpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZl
SklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlCiAgICAg
SlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2ppdC5ncmFwaCgpLnRyeUdldEZvbGRhYmxlVmll
dygKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCkp
Lm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKICAgICBpZiAodmlldykgewotICAgICAgICB1
aW50MzJfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHZpZXctPmxlbmd0aCgpOwogICAgICAgICBOb2RlKiBpbmRleE5vZGUgPSBtX2ppdC5ncmFwaCgp
LmNoaWxkKG5vZGUsIDEpLm5vZGUoKTsKLSAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNJbnQzMkNv
bnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwgbGVuZ3RoKQorICAgICAgICBpZiAo
aW5kZXhOb2RlLT5pc0FueUludENvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwg
bGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIEpJVENvbXBpbGVyOjpKdW1wKCk7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJ
bW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fz
c2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZWxzZQog
ICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgaW5kZXhHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiBub2Rl
LCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKQpAQCAtNzk2MCw3ICs3OTcyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVn
LCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0o
KSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQu
dW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVB
dXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAg
ICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MzQyLDEyICs4MzU0LDE4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKICAgICAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFs
dWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6
bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1
bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTExMTEsMTAgKzEx
MTI5LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJh
eVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBo
KCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29u
Y3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJl
LmdldCgpKTsKLSAgICAKKwogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7Ci0gICAgCisK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8vIFRoZSBvcGVyYXRpb25zIHdlIGNhbGwgb24gdGhl
IHNsb3cgcGF0aCBleHBlY3QgYSBDUFVSZWdpc3Rlciwgc28gaW50NjRfdCBvbiA2NCBiaXQgcGxh
dGZvcm1zCisgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2l6ZUdQUiwgc2l6ZUdQUik7Cisj
ZW5kaWYKKworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5
cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBl
ZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUs
IEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAg
R1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CkBAIC0xMTEzMCw2ICsxMTE1OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwg
VHJ1c3RlZEltbTMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSkpOworICAgIC8v
IFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6
ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMy
X3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CiAgICAgCiAgICAgbV9qaXQu
bW92ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKICAgICBtX2ppdC5sc2hpZnQzMihUcnVzdGVkSW1t
MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSwgc2NyYXRjaEdQUik7CkBAIC0xMTE4
NSw5ICsxMTIxNSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVQdHIoCiAgICAgICAgIHN0b3Jh
Z2VHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
KTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgc2l6ZUdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgVHJ1
c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAgLTE0
MTU5LDYgKzE0MTk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY29tcGlsZU5ld1R5
cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7CisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBjb21waWxlTmV3VHlw
ZWRBcnJheVdpdGhJbnQ1MlNpemUobm9kZSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJn
dW1lbnQuanNWYWx1ZVJlZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCBiNjUxNWQ4YjcyMTkuLmFkYzgwNmFhMjI4YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMDAsOSAr
MTMwMCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFs
aWRSYWRpeENvbnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKICAgICB2b2lkIGNvbXBpbGVO
ZXdTdHJpbmdPYmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld1N5bWJvbChOb2RlKik7
Ci0gICAgCisKKyAgICB2b2lkIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5v
ZGUqLCBUeXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIp
OwogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKik7Ci0gICAgCisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5
V2l0aEludDUyU2l6ZShOb2RlKik7CisjZW5kaWYKKwogICAgIHZvaWQgY29tcGlsZUludDMyQ29t
cGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZv
aWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24pOwogI2lmIFVTRShCSUdJTlQzMikKQEAgLTEzNzMsNiArMTM3Nyw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxUaGlzKE5vZGUqKTsKIAogICAgIHZvaWQgY29t
cGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKik7CisjZW5kaWYKIAog
ICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQ2hlY2tJZGVudChOb2RlKik7CkBAIC0xNDM1LDYgKzE0NDIsOSBAQCBwdWJsaWM6CiAgICAg
SklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFjaGVkSWZPdXRPZkJvdW5k
cyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzKTsK
ICAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJlZyBiYXNlR1BS
LCBHUFJSZWcgaW5kZXhHUFIpOwogICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0KE5vZGUqKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGls
ZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKik7CisjZW5kaWYKICAgICB2b2lk
IGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNv
bnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRh
Rm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwg
VHlwZWRBcnJheVR5cGUpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJy
YXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxK
U1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJl
Zml4KTsKQEAgLTI0MjcsNyArMjQzNyw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJ
bnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3Mg
bGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KKy8vIEdpdmVzIHlvdSBhIGNhbm9u
aWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxMiwgbG93IGJpdHMgemVybyku
CiBjbGFzcyBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgpAQCAtMjQ3NSw3ICsyNDg1LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcg
bV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4g
dGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24t
ZXh0ZW5kZWQpLgorLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2Fk
IGlzIGluIHRoZSBsb3cgNTIgYml0cywgaGlnaCAxMiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4K
IGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2ZWZiY2VkZGJjMGEuLjRlZDc1OWYxOTBk
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0yMTM0LDYgKzIxMzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8
SgogICAgICAgICBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50cyhub2RlLCBwcmVmaXgp
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OiB7CisgICAgICAgIEFTU0VSVChub2RlLT5h
cnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKICAgICAgICAgVHlwZWRBcnJheVR5
cGUgdHlwZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgICAgIGlm
IChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJh
eShub2RlLCB0eXBlLCBwcmVmaXgpOwpAQCAtMzUzOCw2ICszNTM5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVu
Z3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0lu
dDUyOgorICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRo
YW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAg
ICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MjAsNiAr
MzYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGls
ZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGUxMzVmZDUzNDhl
OC4uY2U0MDJjYzIwYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjk0LDYgKzI2OTQsODkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxz
dGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9k
ZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBhdXRvIHR5
cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1bGF0ZVN0
cmljdEludDUyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcg
c2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5S
ZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBu
b2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVk
QXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwor
ICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7
CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1Miks
ICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZp
dCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAg
IEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRh
dGFHUFIgPSBkYXRhLmdwcigpOworICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7Cisg
ICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7CisgICAgQVNTRVJUKHZlY3RvckdQUiAhPSBk
YXRhR1BSKTsKKworICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CisKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBlbXB0eUJ5dGVPZmZzZXQgPSBtX2ppdC5icmFuY2gzMigKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpLAorICAgICAg
ICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxUeXBlZEFycmF5KSk7CisKKyAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZlZlY3RvcigpKSwgdmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIG51bGxW
ZWN0b3IgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCB2ZWN0b3JHUFIsIFRy
dXN0ZWRJbW1QdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpOworCisgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCBkYXRhR1BSKTsKKyAgICBtX2ppdC5jYWdlV2l0aG91dFVudGFn
Z2luZyhHaWdhY2FnZTo6SlNWYWx1ZSwgZGF0YUdQUik7CisKKyAgICBjYWdlVHlwZWRBcnJheVN0
b3JhZ2UoYmFzZUdQUiwgdmVjdG9yR1BSKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkp
LCBhcnJheUJ1ZmZlckdQUik7CisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgY2FnaW5nLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKKyAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFycmF5QnVmZmVyR1BSLCBBcnJh
eUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkpLCBkYXRhR1BSKTsKKyNpZiBDUFUoQVJNNjRFKQorICAg
IG1faml0LnJlbW92ZUFycmF5UHRyVGFnKGRhdGFHUFIpOworI2VuZGlmCisKKyAgICBtX2ppdC5z
dWJQdHIoZGF0YUdQUiwgdmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgIG51bGxWZWN0b3IubGluaygm
bV9qaXQpOworI2VuZGlmCisgICAgZW1wdHlCeXRlT2Zmc2V0LmxpbmsoJm1faml0KTsKKyAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZlY3RvckdQUik7CisKKyAgICBkb25l
LmxpbmsoJm1faml0KTsKKyNpZiAhQ1BVKEFSTTY0RSkKKyAgICBBU1NFUlQoIUpTQXJyYXlCdWZm
ZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpOworICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwor
I2VuZGlmCisKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOworfQorI2Vu
ZGlmCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBO
b2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC00Mzc1LDYgKzQ0NTgsMTQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlM
ZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFz
SW50NTI6CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgY29tcGlsZUdldEFy
cmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5
SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtNDQ5Myw2ICs0NTg0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQ
cm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTgzLDcgKzU2ODMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnpl
cm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6
ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6
ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7
CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEp
KTsKIApAQCAtNTc4NCw3ICs1ODg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQy
KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRk
NjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBK
U1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFm
MjI1MTA0Zi4uMWUxNDAwNTA0Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAg
ICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0Rl
dGFjaGVkOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
ICAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgICAgICAg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAg
ICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgpAQCAtMzU5LDYgKzM2MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNl
IFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgICAg
ICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
aGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLmM5OTBk
NTljYmE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBj
YXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAg
ICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBT
dG9yZUJhcnJpZXI6CkBAIC0zOTEsNiArMzkyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3Vt
ZW50czoKICAgICBjYXNlIENQVUludHJpbnNpYzoKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDQzZDI2ZTgz
ZTk2OC4uNGZjZTUxMjI0ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC0xMDI1LDYgKzEwMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aCgp
OwogICAgICAgICAgICAgYnJlYWs7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICBjb21waWxlR2V0QXJy
YXlMZW5ndGhBc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgwLDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxl
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MigpOworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgog
ICAgICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTQ4MjgsOSArNDg0MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5pc051bGwo
bV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3RvcikpKTsK
ICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAg
TFZhbHVlIGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdENhc3RpbmdSZXN1bHQoKQog
ICAgIHsKLSAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OyAgICAKKyAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OwogCiAgICAgICAgIExCYXNpY0Jsb2NrIHdhc3RlZnVsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGwgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNDg0
Niw3ICs0ODU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyh3YXN0ZWZ1bENhc2UsIG5vdE51bGwpOwogCiAgICAgICAgIExWYWx1ZSB2
ZWN0b3IgPSBtX291dC5sb2FkUHRyKGJhc2VQdHIsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3RvciwgbV9vdXQu
Y29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLCAKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3RvciwgbV9vdXQuY29uc3RJbnRQdHIoSlNB
cnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLAogICAgICAgICAgICAgdW5zdXJlKGNv
bnRpbnVhdGlvbiksIHVuc3VyZShub3ROdWxsKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
bm90TnVsbCwgY29udGludWF0aW9uKTsKQEAgLTQ4NjYsOSArNDg3OCwyMiBAQCBwcml2YXRlOgog
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RU
b0ludDMyKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxsVmVjdG9yT3V0LCB3YXN0ZWZ1bE91
dCkpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxsVmVjdG9y
T3V0LCB3YXN0ZWZ1bE91dCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdENhc3RpbmdSZXN1bHQoKTsKKyAgICAgICAgc2V0SW50MzIo
bV9vdXQuY2FzdFRvSW50MzIocmVzdWx0KSk7CisgICAgfQorI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCkK
KyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRFeGNlcHRDYXN0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldFN0cmljdEludDUyKHJlc3VsdCk7
CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCiAgICAg
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1MDc5LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSkgewotICAgICAgICAgICAgICAg
IHNldEludDMyKAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0
aCkpOworICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdh
dGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCks
IG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0
SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYgKzUwOTAsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
QXNJbnQ1MigpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX25vZGUtPmFycmF5TW9k
ZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291
dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
dm9pZCBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9u
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTgxNjksOTggKzgyMDIsMjEgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAg
ICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAg
ICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOwot
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0gICAgICAgICAgICBtX291dC5icmFuY2goCi0g
ICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQuY29uc3RJbnQzMihKU0FycmF5
QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAgICAgICAgIHJhcmVseShzbG93
Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7
Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAgICAgICAgICAgICAgbV9vdXQu
c2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNp
emUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRB
cnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5k
KAotICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50
UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19j
YXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAg
IExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIExWYWx1
ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAgICAgICAgICAgICBzdG9yYWdl
LAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAgICAgICAgICAgICAgICBtX291
dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkp
LAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAgICAgICAgICAgICAgICBtX2hl
YXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShBUk02NEUpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNp
emUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9v
dXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50
aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0
ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3Io
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBw
YXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFy
YW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0gICAgICAgICAgICB9Ci0jZW5k
aWYKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQuc2lnbkV4dDMyVG82NChsb3dJbnQz
MihtX25vZGUtPmNoaWxkMSgpKSk7CiAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVT
dG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgZmFz
dFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5
cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKLSAgICAgICAgICAg
IGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0g
YWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clpl
cm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgRk9S
X0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZ
UEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAgICAgICAgICAgIGNhc2Ug
VHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRl
T2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2Up
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdl
LCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAg
ICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0
LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG11dGF0b3JG
ZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwotCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9u
KTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5
cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRB
cnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgICAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7
CiAKLSAgICAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgICAgICAgICBMVmFsdWUg
c2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAgICAgICAgIFs9LCAmdm1d
IChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1Bh
dGg6OkdlbmVyYXRvcj4gewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNh
bGxHZW5lcmF0b3Iodm0sCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBl
ZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9jYXRpb25zWzBdLmRpcmVj
dEdQUigpLCBnbG9iYWxPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQ
UigpLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsK
LSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHNpemUsIHN0b3JhZ2VWYWx1ZSk7
Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNs
b3dSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkp
OwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
LSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1
bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUo
dHlwZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAgY2FzZSBVbnR5cGVkVXNl
OiB7CiAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOwogCkBAIC04Mjc3LDcgKzgyMzMsMTAwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemUoVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFsdWUgc2l6
ZTY0Qml0cykKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3Io
bV9vdXQuaW50UHRyWmVybyk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAg
bV9vdXQuYWJvdmUoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQ2NChKU0FycmF5QnVmZmVyVmll
dzo6ZmFzdFNpemVMaW1pdCkpLAorICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxs
eShzbWFsbEVub3VnaENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOworICAgICAgICAvLyBXZSBh
c3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUgaXMg
YSAzMi1iaXQgbnVtYmVyLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJf
dD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKworICAgICAgICBMVmFsdWUg
Ynl0ZVNpemUgPQorICAgICAgICAgICAgbV9vdXQuc2hsKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0
SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7CisgICAgICAgIGlmIChlbGVt
ZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7CisgICAgICAgICAgICBieXRlU2l6ZSA9IG1f
b3V0LmJpdEFuZCgKKyAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNv
bnN0SW50UHRyKDcpKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KDcpKSk7CisgICAgICAgIH0KKworICAgICAgICBMVmFsdWUgYWxsb2Nh
dG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2Nh
dGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKKworICAgICAgICBzcGxhdFdvcmRzKAor
ICAgICAgICAgICAgc3RvcmFnZSwKKyAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKKyAgICAg
ICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0
SW50UHRyKDMpKSksCisgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCisgICAgICAgICAgICBt
X2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKKworI2lmIENQVShBUk02NEUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9vdXQucGF0
Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5k
U29tZVJlZ2lzdGVyKHN0b3JhZ2UpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQo
c2l6ZTY0Qml0cywgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3Rlcikp
OworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Cisg
ICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc3RvcmFnZSA9IGF1dGhlbnRp
Y2F0ZTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0
b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisKKyAgICAgICAgTFZhbHVlIGZhc3RSZXN1
bHRWYWx1ZSA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKKyNk
ZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKKyAgICAgICAgY2FzZSBUeXBlICMj
IG5hbWU6IFwKKyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpT
IyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VY
Q0xVRElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQorI3VuZGVmIFRZUEVEX0FS
UkFZX1RZUEVfQ0FTRQorICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKKyAgICAgICAgICAgIGZh
c3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9v
dXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdl
LCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKKyAg
ICAgICAgbV9vdXQuc3RvcmU2NChzaXplNjRCaXRzLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5j
b25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X21vZGUpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1
ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKwor
ICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZh
bHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxM
b2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAorICAg
ICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5
cGVkQXJyYXlUeXBlKSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCisg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUu
Z2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgIGxv
Y2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2l6
ZTY0Qml0cywgc3RvcmFnZVZhbHVlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RS
ZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZvaWQg
Y29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBv
YmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTQ2NTYsNiArMTQ3MDUsOCBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gYmFzZSBhbmQgdmFsdWUgYXJl
IDY0LWJpdHMsIGJlZ2luIGFuZCBlbmQgYXJlIDMyLWJpdHMKKyAgICAvLyBzdG9yZXMgdmFsdWUg
YXQgZXZlcnkgNjQtYml0cyB3b3JkIGJldHdlZW4gYmFzZStiZWdpbio4IGFuZCBiYXNlK2VuZCo4
CiAgICAgdm9pZCBzcGxhdFdvcmRzKExWYWx1ZSBiYXNlLCBMVmFsdWUgYmVnaW4sIExWYWx1ZSBl
bmQsIExWYWx1ZSB2YWx1ZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBoZWFwKQogICAgIHsKICAgICAg
ICAgY29uc3QgdWludDY0X3QgdW5yb2xsaW5nTGltaXQgPSAxMDsKQEAgLTE1NTkxLDcgKzE1NjQy
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0
YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIo
bV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdh
dGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAg
ICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAg
IGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0
LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsK
QEAgLTE1NzM0LDcgKzE1Nzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEg
ZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9
IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVh
cHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBt
X291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d19sZW5ndGgpOwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0
cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGlu
ZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0
YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3Mjg3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgYXV0byBkb1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQ
VShBUk02NEUpCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7
Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXpl
ID0gbV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE91dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6
CiAgICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1
cm4gbG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVk
UG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUg
bG9hZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQp
IHsgcmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVn
YXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxv
YWQ2NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7
CiAgICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IGY3ODZmNzY1MWE2MC4uNzNk
OTllMTcxNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNp
Y0VtaXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1p
dHRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04MywyMyArODMsMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAog
ICAgIHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRy
aW5zaWM6IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZh
bHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAg
ICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGpp
dC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5z
dWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlC
eXRlTGVuZ3RoSW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rh
dGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQ
Uik7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQu
bHNoaWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwor
ICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BS
LCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4g
MSkgewotICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2Ug
VHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQz
Mi4KLSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNp
emUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hp
ZnQgaGVyZSBzaW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZl
IGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNo
aWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAg
ICAgICB9Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2Vu
ZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEzMCw4ICsxMzksMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50
cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1v
dmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAg
ZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRl
LnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1
ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IGQ3ZGY3Y2I4ZTg3NS4uNWQ2YjBhODVhNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQg
cHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUs
IEpTVmFsdWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVp
Y2tseShpLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2ts
eSh2bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlj
a2x5KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAg
ICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MSwxNyArMjMz
OSwxNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQz
MigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Cisg
ICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VW
YWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+
Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBh
c1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAg
ICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRP
dXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7
CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAg
ICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50
MzJfdD4oaSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2ts
eShpKTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5k
ZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKIAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAK
QEAgLTIzNzEsOCArMjM2OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlW
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFz
ZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5p
c051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAg
IGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYwMDQ0
ZS4uZTc2ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5lIE9G
RkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQVShB
RERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDJlZmI3
MWM0YTY0Li5hMzg4NDI2M2IxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Niw4ICsxMDQ2LDggQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVj
dC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
b2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZC
b3VuZHMgPSBmYWxzZTsKIApAQCAtMTE2OSwxNCArMTE2OSwxMyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNT
dHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRl
eCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFs
dWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHko
aSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBp
LCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5
U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkK
ICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBM
TElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGRiYzQ3MDAzY2NiZi4uNGJmNDZhZjFl
NzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0
IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6
c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdFX1RZ
UEVEX0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhw
ciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3Qg
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJN
NjRFIG9yIFJJU0NWNjQKQEAgLTEzMDAsNyArMTMwNCw3IEBAIG1hY3JvIGFycmF5UHJvZmlsZShv
ZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRi
IEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAog
Ci1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFs
LCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCittYWNybyBnZXRCeVZhbFR5cGVkQXJy
YXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwg
c2V0TGFyZ2VUeXBlZEFycmF5LCBzbG93UGF0aCkKICAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYg
d2UgZXZlbiBoYXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBs
YXRlIHVwIGZyb250LgogICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBlW2Jhc2VdLCB0MgogICAgIHN1
YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKQEAgLTEzMTEsMTMgKzEzMTUsMjIgQEAgbWFjcm8g
Z2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNo
RG91YmxlR2V0QnlWYWwsIHMKICAgICBpZiBBUk02NEUKICAgICAgICAgY29uc3QgbGVuZ3RoID0g
dDYKICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZm
ZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIGluZGV4LCBsZW5n
dGgsIHNsb3dQYXRoCisgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFti
YXNlXSwgbGVuZ3RoCisgICAgICAgIGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAg
ZWxzaWYgSlNWQUxVRTY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRp
b25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2Vk
IG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJW
aWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3Ro
IGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBi
ZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlh
ZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAg
ICBlbmQKIAorICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICBicWJlcSBpbmRleCwg
U21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxUeXBlZEFycmF5CisgICAgICAgIHNldExh
cmdlVHlwZWRBcnJheSgpCisuc21hbGxUeXBlZEFycmF5OgorICAgIGVuZAorCiAgICAgbG9hZHAg
SlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2VdLCB0MwogICAgIGNhZ2VkUHJpbWl0aXZl
KHQzLCBsZW5ndGgsIGJhc2UsIHNjcmF0Y2gpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMzY2MTZh
Njk1YjBmLi41Y2FmMzE4YzNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNjY5LDcgKzE2Njks
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlW
YWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5p
c2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAg
ICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91
YmxlR2V0QnlWYWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZh
bFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KaW5kZXggZmJkYmE2OGUwZjMwLi44MjM1N2ZhYzMzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0x
NzEzLDYgKzE3MTMsMTYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmluaXNo
R2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisgICAgaWYgTEFSR0VfVFlQ
RURfQVJSQVlTCisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAg
ICBzdG9yZWIgMSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5QmVM
YXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICAgbWFjcm8g
c2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgICAgIGNyYXNoKCkKKyAgICAgICAgZW5kCisg
ICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBnZXQobV9iYXNlLCB0MikKQEAg
LTE3NjMsNyArMTc3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2go
KQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJh
eSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0
QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5
VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZh
bFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwCmluZGV4IGM5YjhmMmE3MTkxZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBA
QCBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdh
Y2FnZURlc3RydWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsK
IH0KIAotU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50
cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biYmIGRlc3RydWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAs
IG1fZGVzdHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhz
aXplKQpAQCAtNjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNv
bnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRv
KCp0aGlzKTsKIH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJiBkZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250
ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykK
ICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBA
QCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0g
MDsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGlj
eSBwb2xpY3kpCit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGlj
eSBwb2xpY3kpCiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUg
dG90YWwgc2l6ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90
YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3Rh
bFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFY
X0FSUkFZX0JVRkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVt
ZW50czsKKyAgICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJ
bkJ5dGVzLmhhc092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50
cykgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFs
bG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUg
PSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAg
IGFsbG9jYXRpb25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0
ZXMgc29tZXRoaW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQg
dGhlIGJ1ZmZlciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5
TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEg
PSBEYXRhVHlwZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0
YSwgc2l6ZUluQnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0
KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVy
Q29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZQogICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNl
dChkYXRhLCAwLCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUlu
Qnl0ZXM7CisgICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAg
IG1fZGVzdHJ1Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3Io
KTsKIH0KQEAgLTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJl
V2l0aChBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhl
ci5tX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1
dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAg
IGlmICghYnVmZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVy
OjpjcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0
IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0
cnlDcmVhdGUoc291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3
ICsyMDYsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZm
ZXJDb250ZW50cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9t
OgogLy8gLSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5
LiBCdXQgaW4gdGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQog
Ly8gICBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
QWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QgYnl0ZUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAo
R2lnYWNhZ2U6OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4g
Y3JlYXRlRnJvbUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVH
aWdhY2FnZURlc3RydWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3QKIC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcg
c2V0IG9mIHR5cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3Nl
ZAogLy8gICBkaWZmZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9j
YXRlIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVG
cm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVu
Z3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAg
aWYgKGRhdGEgJiYgIUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEp
KQogICAgICAgICBHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjks
NyArMjI3LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVz
KGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdU
Rk1vdmUoY29udGVudHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUp
CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0
ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJv
SW5pdGlhbGl6ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5
Q3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5
QnVmZmVyQ29udGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxl
bmd0aCwgMSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3
ICsyNDYsMTcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNv
bnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50
ZXJuYWwoV1RGTW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNy
ZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpE
b250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBv
bGljeSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVu
dEJ5dGVTaXplLCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcg
QEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFs
KEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNp
Z25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50
ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2Us
IHNpemVfdCBieXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2Up
OwogICAgIGF1dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNv
bnRlbnRzKSkpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3Ro
KTsKKyAgICBpZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAg
ICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAg
ICByZXR1cm4gYnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXph
dGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsK
ICAgICBjb250ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBw
b2xpY3kpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJh
eUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVy
OjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3Np
emVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVf
dCByaWdodCkKIHsKICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0
KQpAQCAtMzAxLDkgKzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRv
dWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0K
IAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAor
c2l6ZV90IEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAg
ICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJy
ZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGlu
ZGV4ID0gY3VycmVudExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4
LCAwLCBjdXJyZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNs
aWNlV2l0aENsYW1wZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0K
IAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4
KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3Qg
ZW5kKSBjb25zdAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBi
ZWdpbiA6IDA7CisgICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6
IDA7CiAgICAgYXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAg
ICAgICAgIHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLjg5
YTBiOWM4YTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzksNyArMzksMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBDUFUoQURE
UkVTUzY0KQorI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxz
ZQorLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUgaW4g
Ynl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBw
bGF0Zm9ybXMuCisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdv
dWxkIGJlIHF1aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUg
dG8gbWFuaXB1bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hv
dWxkIGluIHRoZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYg
YW55b25lIGNhcmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUK
KyNlbmRpZgogCiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNTgsNyBA
QCB1c2luZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHM+IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwog
ICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxs
KG1fc2l6ZUluQnl0ZXMpOyB9CkBAIC02MCwxNCArNjcsMTQgQEAgcHJpdmF0ZToKICAgICB1c2lu
ZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2Vk
UHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cisg
ICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRz
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1Ymxp
YzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBz
aXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUlu
Qnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJy
YXlCdWZmZXJDb250ZW50cyYmKTsKQEAgLTc5LDcgKzg2LDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkp
OyB9Ci0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5
dGVzOyB9CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5C
eXRlczsgfQogICAgIAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJl
ZDsgfQogICAgIApAQCAtOTQsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRp
YWxpemUKICAgICB9OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAg
dm9pZCB0cnlBbGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgp
OwogICAgIHZvaWQgdHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjgg
KzExMiwyOCBAQCBwcml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRy
PFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6
ZUluQnl0ZXM7CisgICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1
ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGlj
OgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRl
TGVuZ3RoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVu
Z3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVu
Z3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0
YSgpOwogICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVu
c2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgo
KSBjb25zdDsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJp
bmdNb2RlKEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0NCw3IEBAIHB1Ymxp
YzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91
YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWdu
ZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXpl
X3QgZW5kKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUg
dm9pZCB1bnBpbigpOwpAQCAtMTYxLDEyICsxNjgsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdp
Z2FjYWdlRGVzdHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBj
b25zdCB2b2lkKiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Cisg
ICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJh
eUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFt
cEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBj
bGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAg
aW5saW5lIHNpemVfdCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGlj
IGlubGluZSBzaXplX3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCBy
aWdodCk7CiAKICAgICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMTk5
LDcgQEAgY29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBt
X2NvbnRlbnRzLmRhdGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgo
KSBjb25zdAorc2l6ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9jb250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxMiw3IEBAIGJv
b2wgQXJyYXlCdWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NT
aXplRXN0aW1hdGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkg
d2FudCB0byBzY2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4K
LSAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0
ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgo
KTsKIH0KIAogdm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDcz
NzIyNzQ1MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJW
aWV3KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0
ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAg
ICAgICwgbV9ieXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVu
Z3RoKGJ5dGVPZmZzZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxl
bmd0aChieXRlT2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uN2NmYzQxZjY0
MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0KCkgY29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IHJldHVybiBtX2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHNldERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7
IHJldHVybiBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8v
IEhlbHBlciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRp
YyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6
ZV90IHNpemUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoYnl0ZU9mZnNldCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0
ICYgKGVsZW1lbnRTaXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkg
dGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhp
biByYW5nZS4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJh
eUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50
cywgc2l6ZV90IHNpemUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3Vi
LXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9v
bCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qg
Ynl0ZU9mZnNldCwgc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAg
ewotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAg
ICAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zm
c2V0KSAvIHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVu
Z3RoIC0gYnl0ZU9mZnNldCkgLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRz
ID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCop
ID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZl
clZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgp
OwogCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNp
emVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwot
ICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRh
dGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRS
YW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3Qg
Ynl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0
aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlu
bGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdl
Qnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5k
TGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwK
LSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5l
IGJvb2wgemVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxl
bmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZy
b20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIg
b2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMo
CiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFy
cmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWdu
ZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAg
ICBzaXplX3QgKm9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0g
ICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkg
LyBzaXplb2YoVCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAg
ICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVm
ZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNl
dCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZm
ZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxl
bWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAg
ICAgICBDaGVja2VkPHNpemVfdD4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBh
ZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFy
cmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQo
KSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAg
ICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgc2l6ZV90
IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNp
emVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVu
dHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDog
MzE7CisjaWYgQ1BVKEpTVkFMVUU2NCkKKyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsK
KyNlbHNlCisgICAgdWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29s
IG1faXNEZXRhY2hhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgc2l6
ZV90IG1fYnl0ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2ln
YWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhl
IGFkZHJlc3Mgb2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZz
ZXQuCkBAIC0xNjAsODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1
ZmZlclZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZp
ZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7
Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNl
dCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9m
ZnNldCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91
dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5P
ckVxdWFsKGJ5dGVPZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSAr
IGJ5dGVPZmZzZXQsIGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1w
bChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYg
KGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFC
eXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0
ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBv
ciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwg
ZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9CiAKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRy
ZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVu
Z3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJh
bmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsK
LSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0
ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCAr
IGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ug
b2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRl
T2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFz
ZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJ
bXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlm
IChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5n
ZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdl
Qnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNl
dCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNl
dCwgcmFuZ2VCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdl
Qnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3
OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNp
Z25lZCBhcnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0g
ICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChz
dGFydCA8IDApCi0gICAgICAgIHN0YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAg
ZW5kICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVu
ZCA9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0
OwotICAgICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5n
dGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogdXNpbmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCmluZGV4IDY4ODNhMTdjNDcyZC4u
ZDM2MjQ1MGEyZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
dG9taWNzT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcApAQCAtMTIwLDggKzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0
ZUF0b21pY0FjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJy
CiAgICAgICAgIGFjY2Vzc0luZGV4ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9i
amVjdCwgImFjY2Vzc0luZGV4Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IDApOwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXgg
Pj0gdHlwZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21p
YyBhY2Nlc3MuIl9zKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRhVmlldy5jcHAKaW5kZXggZGNjMmY1MDY0YWYyLi5mYmM5ODQ3ZDJkNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAg
KzMyLDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK0RhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZl
clZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBS
ZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5
dGVMZW5ndGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShi
dWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0
YVZpZXc6OmNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxl
bmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShi
dWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGFWaWV3LmgKaW5kZXggZGEwNmI0YmIyMTQ0Li4zNDAyNjU0MTAzMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmll
dyB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4g
Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBj
cmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxl
bmd0aCk7CiAgICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJik7CiAgICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0ds
b2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFu
LCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgZ2V0KHNpemVfdCBvZmZzZXQsIGJvb2wg
bGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYg
KHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5n
dGgoKSkgewpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVuc2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxl
RW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgcmVhZChzaXplX3QmIG9mZnNl
dCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAg
ICAgICBUIHJlc3VsdCA9IHRoaXMtPnRlbXBsYXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlh
biwgc3RhdHVzKTsKICAgICAgICAgaWYgKCFzdGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJv
b2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgdm9pZCBzZXQoc2l6ZV90IG9mZnNldCwgVCB2YWx1
ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAg
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4g
Ynl0ZUxlbmd0aCgpKSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYmU3ZTZjMDUzNGZhLi5lZTFmZmQyZjI4Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJs
aWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBh
cnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gdHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBh
cnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gY3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNp
emVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
KHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CiAgICAgCiAgICAgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApAQCAtNjUsMjYg
KzY1LDI2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2Uo
MCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBz
aXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBy
ZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWduZWQg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChzaXplX3QgaW5kZXgsIGRv
dWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhd
ID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lk
IHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkg
Y29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4
XSA9IHZhbHVlOwpAQCAtMTAwLDE2ICsxMDAsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNoZWNr
SW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CiAgICAgewot
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJu
IChvZmZzZXQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA8PSBsZW5n
dGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQg
KyBjb3VudCA+PSBvZmZzZXQpOworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwob2Zmc2V0LCBjb3VudCwgdGhpcy0+bGVuZ3RoKCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAg
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3Q7Ci0gICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFs
CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzEx
MSw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVj
dCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4u
NTQyOTgwYWU2NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAg
ICBBU1NFUlQoKGxlbmd0aCAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVu
Z3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVu
c2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVu
Z3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0
ID0gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0
LDcgKzc1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFy
ZXN1bHQpCkBAIC04NSw3ICs4Niw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlD
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsK
QEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAg
ICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5
KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgp
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxl
bmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVu
Z3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3Nz
aWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0
QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zm
c2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5n
dGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcq
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApp
bmRleCA4OWVhZWJkM2MyY2MuLmYwNzQwY2I2ZDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBA
QCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpT
QXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0
KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rv
cikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9y
KQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBs
ZW5ndGgpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQog
CiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgs
IHVpbnQzMl90IGVsZW1lbnRTaXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIHNpemVfdCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1v
ZGUgbW9kZSkKICAgICA6IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC04MSwxOCArODEsMTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBEb24ndCBhbGxvdyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAg
IGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6
ZSkKKyAgICBDaGVja2VkPHNpemVfdD4gc2l6ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9IGVsZW1l
bnRTaXplOworICAgIGlmIChzaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0
aCkgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZl
Y3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwg
bGVuZ3RoKTsKKworICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9j
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUudmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFt
X3ZlY3RvcikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAg
ICAgICBtZW1zZXQodmVjdG9yKCksIDAsIHNpemUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0
RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVu
dFNpemUpOworICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1
ZSgpKTsKICAgICAKICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBP
dmVyc2l6ZVR5cGVkQXJyYXk7CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6
OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1
ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgdW5z
aWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVj
dHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVk
QXJyYXkpCkBAIC0xMTQsNyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJl
KHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmll
d01vZGUpCkBAIC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRT
aXplKEpTVHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhB
cnJheVR5cGVdOwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgp
IGNvbnN0CitzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogewor
I2lmIEFTU0VSVF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgp
OworICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQu
dmFsdWUoKTsKKyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFk
eSBjaGVja2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2Fu
aXR5IGNoZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkg
KiBlbGVtZW50U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5
QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAg
QXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhp
cy0+Ynl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0
aCgpOwogCiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7
CkBAIC0zMTYsNyArMzIzLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZl
clZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0
KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxl
bmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZB
Q1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFm
N2Y4MmE1My4uZGE2ZGQwYmQ3NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIg
PSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+
OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAot
ICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVu
dFNpemUpCisgICAgc3RhdGljIHNpemVfdCBzaXplT2Yoc2l6ZV90IGxlbmd0aCwgdWludDMyX3Qg
ZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAg
ICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2Vk
PHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7
CisgICAgICAgIHJlc3VsdCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4g
aW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYsMjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVi
bGljOgogICAgICAgICBlbnVtIEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5p
dGlhbGl6ZSB9OwogICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0
aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxl
bWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBs
ZW5ndGgsIHNpemVfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwp
OwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFz
dCB0eXBlZCBhcnJheXMuIEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAg
ICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCog
dmVjdG9yKTsKKyAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBzaXplX3Qg
bGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBs
ZW5ndGgpOwogICAgICAgICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07
CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHNpemVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAgICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAgICAgICAgIAog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJl
OyB9CiAgICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1h
eUJlTnVsbChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVy
biBtX21vZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVy
biBtX2J1dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgIHVzaW5nIFZlY3RvclR5
cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAg
ICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAgIHVpbnQzMl90IG1fbGVuZ3RoOwor
ICAgICAgICBzaXplX3QgbV9sZW5ndGg7CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsK
ICAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAgICB9OwpAQCAtMTkzLDggKzE5NSw4
IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwogICAgIGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3Rv
clB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9sZW5n
dGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBk
Li45OTIyZmZkYjU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjksMTMgKzY5LDE1IEBAIGlubGluZSB1aW50MzJfdCBK
U1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIq
IGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3Qg
YmUgbmVnYXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAoaXNJ
bnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworCiAgICAgaWYgKGQgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNi
OS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYg
dm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAog
SlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAg
c2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0
YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRh
Vmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1i
b29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCos
IHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0
Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxF
X0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3
OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0Rh
dGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSkKIHsKICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5l
YzJhZjY5ODIzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNBcnJheUJ1
ZmZlclZpZXc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBl
bGVtZW50U2l6ZSA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZWxlbWVudFNpemUg
PSAxOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBUeXBlZEFycmF5Q29udGVudFR5cGUgY29udGVu
dFR5cGUgPSBUeXBlZEFycmF5Q29udGVudFR5cGU6Ok5vbmU7CiAKQEAgLTQ2LDE1ICs0NiwxNSBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsCisgICAgICAgIHNpemVfdCBieXRlTGVu
Z3RoKTsKICAgICAKICAgICAvLyBEdW1teSBtZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3
b3JrOyB0aGVzZSBhcmUganVzdCBpbiBwbGFjZSB0bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1w
bGF0ZSBzcGVjaWFsaXphdGlvbiB3ZSBkbyBlbHNld2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBi
b29sIHNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVf
dCBsZW5ndGgpOworICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpT
VmFsdWUpOwogICAgIAogICAgIEFycmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVy
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggOTQ5MDYyNDdlYTY1Li5lMGZiYzUyZjg3NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTM2LDExICsxMzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAo
IWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJf
cyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVP
ZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0
ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQg
ZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90
IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChl
bGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAg
ICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9v
bGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXRE
YXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMg
YmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmll
dy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zm
c2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsK
IApAQCAtMTgyLDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmll
dykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAg
IAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5k
ZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQi
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0
bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0
LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFj
aGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZp
ZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsK
KyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxl
bWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVu
dFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJj
NTVhMGQ4MWQuLmVhMWVmOWMxM2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgi
CiAjaW5jbHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19F
WFBPUlRfUFJJVkFURSBjb25zdCBDbGFzc0luZm8qIGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZv
KCk7CiAvLyAgICAgU3RydWN0dXJlKiBTICAgICAvLyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRl
cmZseSogQiAgICAgLy8gZnJvbSBKU09iamVjdAogLy8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAg
ICAgdWludDMyX3QgTAorLy8gICAgIHNpemVfdCBMCiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQog
Ly8KLS8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRo
IHdvcmRzLiBGSVhNRTogTWFrZQorLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBm
aXZlIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29y
ZHMhCiAvLwogLy8gQiBpcyB1c3VhbGx5IHVudXNlZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0
aW9uYWwgIm92ZXJmbG93IiBkYXRhIGZvcgpAQCAtMTAzLDE0ICsxMDQsMTQgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKIAotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0
b3IpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFs
aXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0
aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBz
dGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwog
ICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJl
KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAot
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0K
ICAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiB0eXBlZFZlY3RvcigpIGNvbnN0CkBAIC0xMjIsNDYgKzEyMyw0NiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSo+KHZlY3RvcigpKTsKICAgICB9CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkp
IGNvbnN0CisgICAgYm9vbCBpbkJvdW5kcyhzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUg
bWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAg
Ly8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5H
ZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVp
Y2tseShzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAm
JiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0
SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBj
YW5TZXRJbmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRv
cjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QK
KyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUo
c2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUg
Z2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1
aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9K
U1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRv
TmF0aXZlVmFsdWUoc2l6ZV90IGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAg
ewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtp
XSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBK
U1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsK
ICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1
ZTxBZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAg
ICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBpLCBK
U1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0x
NzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJv
bVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxl
bWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZy
b21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVX
aXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1
ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZh
bHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQg
c29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9s
ZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAg
ICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+
PSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQs
IGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNr
bHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAv
LyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFs
aWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJv
cjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBh
biBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZz
ZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENv
cHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNldChKU0ds
b2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0Kiwgc2l6ZV90IG9iamVjdE9mZnNl
dCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAg
ICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVk
VHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNo
YXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJv
dyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAgICAgYm9v
bCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0gICAgICAg
IHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAgIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBs
ZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMgdGhhdCBm
bG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBvcmRl
cmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXJp
ZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBlZFZlY3Rv
cigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAgICAgICAg
YXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaAppbmRleCA0NTAyMzg3OTJkMTAuLjFlYjNkMTc4NjFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUgIlR5cGVk
QXJyYXlzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDcsNyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6SlNHZW5l
cmljVHlwZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3RvcigKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5z
aWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29u
dGV4dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyArNzksNyBA
QCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgotSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTk5LDcgKzEwMCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVf
dCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0x
NDUsNyArMTQ2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJh
bmdlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1OSw4
ICsxNjAsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0
ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdp
dGhTcGVjaWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwK
LSAgICB1bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBl
KQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIHNpemVfdCBvdGhl
ck9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwpAQCAtMjE4LDcgKzIxOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVmZmVyKCkg
IT0gb3RoZXItPmV4aXN0aW5nQnVmZmVyKCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXplID09IG90
aGVyRWxlbWVudFNpemUgJiYgdmVjdG9yKCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAgICAgICB8
fCB0eXBlID09IENvcHlUeXBlOjpMZWZ0VG9SaWdodCkgewotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1
ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNv
bnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVp
Y2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIyOSw3IEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5
cGUoCiAKICAgICAvLyBOb3cgd2UgZWl0aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBmaXJzdCB3
ZSB0cnkgdG8gY292ZXIgKDJCKS4KICAgICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50
U2l6ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0SW5kZXhR
dWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFk
YXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAg
b3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpA
QCAtMjM4LDExICsyMzksMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGlu
dGVybWVkaWF0ZSB0cmFuc2ZlciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZlY3Rvcjx0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlLCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gbGVu
Z3RoOyBpLS07KSB7CiAgICAgICAgIHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFwdG9yOjp0
ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhR
dWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGkt
LTspCiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsgaSwgdHJh
bnNmZXJCdWZmZXJbaV0pOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0ICsyNTEs
MTQgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNp
ZmljVHlwZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9iamVjdE9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHNpemVfdCBv
YmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNzSW5mbyh2
bSk7CiAgICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6dHlwZVZh
bHVlKSB7Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbWNw
eSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBj
YXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCiAgICAg
ICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxlbmd0aCwg
b3RoZXItPmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0zMTMsOCArMzE0LDEwIEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdo
dCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxP
YmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBnZXQoKSBmb3Igbm93IHByb2JhYmx5IGRv
ZXMgbm90IGRvIHRoZSByaWdodCB0aGluZyBmb3IgaW5kaWNlcyBhYm92ZSBVSU5UX01BWC4KKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dW5zaWduZWQ+KGkgKyBvYmplY3RP
ZmZzZXQpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBib29s
IHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVlKTsKICAg
ICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRjMGViZDFm
NjE2NS4uYTk3NDczNzNjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1Zh
bHVlIHZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVByb2ZpbGU7
CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1
bmN0aW9uOwpAQCAtMjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIHB1dEJ5SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogICAgIHsK
ICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKGNhblNl
dEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAgc2V0SW5k
ZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRyeVNldElu
ZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5wdXRCeUlu
ZGV4KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwogICAgIH0KIApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29s
IGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OwotICAgIEpT
VmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7CisgICAg
SlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJheVByb2Zp
bGUqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHko
dW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAK
LSAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorCisgICAg
Ly8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxh
cmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhR
dWlja2x5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikg
Y29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+
YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2FuR2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDExLDM1ICs0MTEsNzMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
Z2V0KGdsb2JhbE9iamVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lkIHNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAgICAKLSAg
ICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAg
IHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiwgdW5z
aWduZWQsIEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJuIHRydWUgdG8gaW5kaWNhdGUgc3VjY2Vz
cworICAgIC8vIFVzZSB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5U2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7
CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRj
aCAoaW5kZXhpbmdNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQ
RVM6Ci0gICAgICAgICAgICByZXR1cm4gY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShp
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheShpLCB2LCBhcnJheVByb2ZpbGUpOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQUxM
X1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJM
RV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJ
R1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lO
REVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICgh
di5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZU9yQ29u
dGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdf
VFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnV0dGVyZmx5LT5j
b250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAg
ICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAg
ICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIodGhpcywgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsK
KyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzTnVtYmVyKCkpIHsK
KyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5n
U2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOworICAgICAg
ICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgY29udmVydERvdWJs
ZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1dHRlcmZs
eS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gdmFsdWU7CisgICAgICAgICAgICBp
ZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRl
cmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgogICAgICAg
ICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQ
dXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFn
ZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVj
dG9yTGVuZ3RoKCkKLSAgICAgICAgICAgICAgICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdl
KCktPm1fdmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGlzQ29w
eU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQorICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJyYXlTdG9y
YWdlKCktPm1fdmVjdG9yW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBzZXRJbmRl
eFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZXRJbmRleFF1
aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAgICAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2ZTFiYjFiNTlmMWUuLjBj
ZjUwYjk5NTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpj
YW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgfQog
fQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJh
eSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmpl
Y3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxl
KiBhcnJheVByb2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNkZWZpbmUg
Q0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBl
IDpcCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJheSAqPih0
aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfVFlQ
RURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkK
LSN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgaWYg
KGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFycmF5UHJv
ZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpOwor
I2Vsc2UKKyAgICAodm9pZClhcnJheVByb2ZpbGU7CisjZW5kaWYKIAotaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QK
LXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUo
bmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcgKzUwNiw1
MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1
bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogfQotICAg
IAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdl
SW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAgIEFycmF5
U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKKyAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICBK
U1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAgIGlmICgh
b2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAgICAgICAg
aWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5n
dGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUq
IGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmls
ZSkgZG8ge1wKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJh
eU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+
c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZWxzZQor
I2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRve1wKKyAgICAo
dm9pZClhcnJheVByb2ZpbGU7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2VuZGlmCisjZGVmaW5l
IENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCisgICAgY2FzZSBuYW1lICMjIEFycmF5VHlw
ZSA6IHtcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAjIyBB
cnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisgICAgICAgIHR5cGVkQXJy
YXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFURV9BUlJBWV9QUk9GSUxF
KGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZP
Ul9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FS
UkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisjdW5kZWYgVVBEQVRFX0FS
UkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFT
U0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
aW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0
SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
b2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVz
dWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5n
KGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi4yMzcw
ZDk4YjdhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdl
Q291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgK
QEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBwYWdlU2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8IDMyKSAv
IHBhZ2VTaXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJWkUgLyBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocGFnZVNpemUpKTsKIAogICAgIHVpbnQzMl90IG1fcGFnZUNvdW50OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYTg0ODAyZTg2MDNiLi5kMTE3NDRjYjUzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MjEtMTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAg
ICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBVU0Vf
TEFSR0VfVFlQRURfQVJSQVlTIGZsYWcgd2hpY2ggaXMgZXF1aXZhbGVudCB0byBVU0VfSlNWQUxV
RTY0LCBpdCBwcm92ZWQgdXNlZnVsIHRvIHRlc3QgdGhpbmdzIGFuZCBjYXRjaCBicmVha2FnZSBv
biAzMi1iaXQgcGxhdGZvcm1zIHdpdGhvdXQgcmVseWluZyBvbiBFV1MuCisgICAgICAgIEFsc28g
bWFkZSBzb21lIG9mIENoZWNrZWRBcml0aG1ldGljIGNvbnN0ZXhwciwgYW5kIGFkZGVkIGlzU3Vt
U21hbGxlclRoYW5PckVxdWFsIHNpbmNlIGl0IGlzIGEgY29tbW9ubHkgdXNlZCB0ZXN0IGluIEFy
cmF5QnVmZmVyIGFuZCBlYXN5IHRvIGdldCB3cm9uZyBpbiB0ZXJtcyBvZiBvdmVyZmxvdy4KKwor
ICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjppc0luQm91
bmRzKToKKyAgICAgICAgKFdURjo6Y29udmVydFNhZmVseSk6CisgICAgICAgIChXVEY6OmlzU3Vt
U21hbGxlclRoYW5PckVxdWFsKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKKwogMjAy
MS0xMC0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZv
bGxvdy11cCAjMjogV1RGOjpSZXRhaW5QdHI8PiBhbGxvd3MgYXNzaWdubWVudCBvZiB0d28gcG9p
bnRlciB0eXBlcyB0aGF0IGFyZSBub3QgYXNzaWduYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1l
dGljLmgKaW5kZXggZmYxNTY1ZjExZGVkLi5iMjdiMDhlNTllNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCwxNCArMTQ0LDE0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+PjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIGlzVGFyZ2V0QmlnZ2VyID0gc2l6ZW9mKFRh
cmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJvb2wgdGFyZ2V0U2lnbmVkID0gc3RkOjpudW1lcmlj
X2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQsIGJvb2wgc291cmNlU2lnbmVkID0gc3RkOjpudW1l
cmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWduZWQ+IHN0cnVjdCBCb3VuZHNDaGVja2VyOwogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRpYyBi
b29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5C
b3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNv
IGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24g
dG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPFRhcmdldD46Om1heCgpOwogICAgIH0KIH07CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBm
YWxzZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAg
IHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lv
biB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1pbigpIDw9IHZhbHVlICYmIHZh
bHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CkBAIC0xNTksNyArMTU5
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gV2hlbiBjb252ZXJ0aW5nIHZhbHVlIHRvIHVuc2lnbmVkIFNv
dXJjZSwgdmFsdWUgd2lsbCBiZWNvbWUgYSBiaWcgdmFsdWUgaWYgdmFsdWUgaXMgbmVnYXRpdmUu
CiAgICAgICAgIC8vIENhc3RlZCB2YWx1ZSB3aWxsIGJlY29tZSBiaWdnZXIgdGhhbiBUYXJnZXQ6
Om1heCBhcyBTb3VyY2UgaXMgYmlnZ2VyIHRoYW4gVGFyZ2V0LgpAQCAtMTY4LDcgKzE2OCw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5k
c0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIC8vIFRoZSB1bnNpZ25lZCBTb3VyY2UgdHlwZSBoYXMgZ3JlYXRlciBwcmVj
aXNpb24gdGhhbiB0aGUgdGFyZ2V0IHNvIG1heChUYXJnZXQpIC0+IFNvdXJjZSB3aWxsIHdpZGVu
LgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291cmNlPihzdGQ6Om51bWVy
aWNfbGltaXRzPFRhcmdldD46Om1heCgpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2Us
IGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBi
b29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNp
Z24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAg
ICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCBmYWxzZT4g
ewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGFy
Z2V0IGlzIHNpZ25lZCB3aXRoIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uIElmIHN0cmljdGx5
IGdyZWF0ZXIsIGl0IGlzIGFsd2F5cyBzYWZlLgogICAgICAgICBpZiAoc2l6ZW9mKFRhcmdldCkg
PiBzaXplb2YoU291cmNlKSkKQEAgLTIwMiwxOSArMjAyLDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgdHJ1ZT4g
ewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGFy
Z2V0IGlzIHVuc2lnbmVkIHdpdGggZ3JlYXRlciBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB2
YWx1ZSA+PSAwOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5l
IGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQogewogICAgIHJldHVybiBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlPjo6aW5Cb3VuZHModmFsdWUpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9v
bCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQogewogICAg
IGlmICghaXNJbkJvdW5kczxUYXJnZXQ+KGlucHV0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdz
PiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJncy4uLiBhcmdzKQogICAgIHJldHVybiBjaGVja2Vk
UHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVyZmxvd2VkKCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoVCBhLCBUIGIsIFQgYm91bmQpCit7
CisgICAgQ2hlY2tlZDxUPiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVybiAhc3Vt
Lmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQogCiB1c2lu
ZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6
OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6
OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5nIFdURjo6
aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCA5YzlmODBlM2Zk
MWIuLjYwYWE4YWMxMjNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2Uu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xNDcsNiArMTQ3LDExIEBA
CiAjZGVmaW5lIFVTRV9CSUdJTlQzMiAwCiAjZW5kaWYKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisv
LyBXaGV0aGVyIHRvIHN1cHBvcnQgdHlwZWQgYXJyYXlzID4gMkdCCisjZGVmaW5lIFVTRV9MQVJH
RV9UWVBFRF9BUlJBWVMgMQorI2VuZGlmCisKIC8qIEZJWE1FOiBUaGlzIG5hbWUgc2hvdWxkIGJl
IG1vcmUgc3BlY2lmaWMgaWYgaXQgaXMgb25seSBmb3IgdXNlIHdpdGggQ2FsbEZyYW1lKiAqLwog
LyogVXNlIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDEpIHRvIGdldCBDYWxsRnJhbWUqICovCiAj
aWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDM0M2IyNzYyNmM4Yy4uNDNhYTQzOGUxMmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMjEtMTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTb21lIHBhcnRzIG9mIFdlYkNvcmUgdXNlIFR5cGVkQXJyYXlzLCBhbmQgd291bGQg
bm90IGJ1aWxkIGFmdGVyIEkgbWFkZSB0aGUgbGVuZ3RoKCkgZnVuY3Rpb24gb24gdHlwZWQgYXJy
YXlzIHJldHVybiBzaXplX3QgaW5zdGVhZCBvZiB1aW50MzJfdC4KKyAgICAgICAgSSBmaXhlZCBp
dCB0cml2aWFsbHkgYnkgUkVMRUFTRV9BU1NFUlRpbmcgdGhhdCB0aGUgc2l6ZV90IGZpdHMgaW4g
YSB1aW50MzJfdCBhbmQgdGhlbiBjYXN0aW5nIGl0LgorICAgICAgICBObyBuZXcgdGVzdHMgZm9y
IFdlYkNvcmUgYXMgdGhlcmUgaXMgbm8gaW50ZW5kZWQgYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyOjpjb3B5VG9DaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0
aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0
Qnl0ZUZyZXF1ZW5jeURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6
Z2V0RmxvYXRUaW1lRG9tYWluRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5
c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oOgorCiAyMDIxLTEwLTA1ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIy
ODMzMzUpOiBNb21lbnR1bSBzY3JvbGxpbmcgaXMgbm8gbG9uZ2VyIGxvY2tlZCB0byBhbiBheGlz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmlu
ZGV4IGNiN2U4NGQ0NTM4My4uYjE4ZDhmZDZhMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwoUmVmPEZsb2F0MzJBcnJh
eT4mJiBkZXN0aW5hdGlvbiwKICAgICBpZiAoYnVmZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3Ro
IC0gYnVmZmVyT2Zmc2V0OworICAgIHNpemVfdCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJP
ZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihkZXN0aW5hdGlvbi5nZXQoKS5sZW5ndGgoKSwg
Y291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBjaGFubmVsRGF0YS0+ZGF0YSgp
OwpAQCAtMjI2LDcgKzIyNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5
VG9DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgc291cmNlLCB1bnNpZ25lCiAgICAgaWYgKGJ1
ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAg
IHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3Qg
Y291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4o
c291cmNlLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNy
YyA9IHNvdXJjZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5hOTIzYWM0NDgw
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVB
bmFseXNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGlt
ZUFuYWx5c2VyLmNwcApAQCAtMTk2LDggKzE5Niw3IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6
Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAgICBk
b0ZGVEFuYWx5c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGZyb20gbGlu
ZWFyIG1hZ25pdHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVuc2lnbmVkIHNv
dXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3Ro
ID0gc3RkOjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAg
ICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4obWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpLCBkZXN0
aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBj
b25zdCBkb3VibGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNp
YmVscyA/IDEgOiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAg
Y29uc3QgZG91YmxlIG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw3ICsyMjYs
NyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQz
MkFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXpl
X3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKICAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjpt
aW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CiAgICAgaWYgKGxlbmd0aCA+
IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6
ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7
CkBAIC0yNTEsNyArMjUwLDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURv
bWFpbkRhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsK
KyAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKICAgICBzaXplX3QgbGVuZ3Ro
ID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CiAgICAgaWYg
KGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRC
dWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+
IGZmdFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjU0ZjIxMTg1ZWUyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCkBAIC0xMjYzLDggKzEyNjMsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdyaXRl
KEltYWdlRGF0YVRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7CiAg
ICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHdy
aXRlKGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+
ZGF0YSgpLmRhdGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBD
aGVja2VkPHVpbnQzMl90PiBkYXRhTGVuZ3RoID0gZGF0YS0+ZGF0YSgpLmxlbmd0aCgpOworICAg
ICAgICAgICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKGRh
dGEtPmRhdGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRh
dGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CkBAIC0xMzExLDggKzEzMTIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRhZyk7
Ci0gICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAg
ICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVy
LT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBD
aGVja2VkPHVpbnQzMl90PiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVM
ZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2
ODZkLi5lNzkyMDQyYWQ2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2Vu
ZFF1ZXVlLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVl
dWUoV2ViQ29yZTo6QmxvYiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6
ZSgpOwogICAgIGlmICghYnl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlC
dWZmZXI6OmNyZWF0ZSgwVSwgMSksIDAsIDApOworICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KDBVKSwgMSksIDAsIDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8Qmxv
YkxvYWRlcj4oW3RoaXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li5hZDhlYzNlZmU2MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAg
LTYzLDcgKzYzLDEwIEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChS
JiByZXR1cm5WYWx1ZSwgViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRp
YW5uZXNzKQogICAgIHsKICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAg
IFQgdmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExp
dHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBzaXplX3QgYWN0dWFsT2Zmc2V0ID0g
b2Zmc2V0OworICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9m
ZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAg
ICAgIG9mZnNldCA9IGFjdHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCg==
</data>
<flag name="commit-queue"
          id="464133"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440292</attachid>
            <date>2021-10-05 16:40:03 -0700</date>
            <delta_ts>2021-10-05 23:26:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>224187</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
Y2UwMDcxMzQ2YjE4Li41ODQ2MTliNDM0YjQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMTAtMDUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdGVzdHMgdXNlZCB0byBzaW1w
bHkgZXhwZWN0IGFuIE9PTSBhdCAyR0IuCisgICAgICAgIFRoZXkgbm93IGV4cGVjdCBzdWNjZXNz
IGF0IDRHQiwgYW5kIGZhaWx1cmUgYXQgNEdCKzEuCisgICAgICAgIFRoZSBleGNlcHRpb25zIHRo
ZXkgZXhwZWN0IGFyZSBub3cgbW9yZSBzcGVjaWZpYywgYXMgcHJldmlvdXNseSB0aGVyZSB3YXMg
YSByb3VuZGluZyBpc3N1ZSB0aGF0IHdhcyBjYXVzaW5nIHRoZSBzcGVjaWZpYyBleGNlcHRpb25z
IG5vdCB0byBiZSB0aHJvd24gKHJlc3VsdGluZyBpbiB0aGUgZ2VuZXJpYyBPT00gZXhjZXB0aW9u
IGxhdGVyIGluIHRoZSBjb2RlKS4KKyAgICAgICAgRmluYWxseSBJIG1hZGUgdGhlbSBvbmx5IHJ1
biBvbiA2NC1iaXQgcGxhdGZvcm1zIHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgdHlwZWQgYXJyYXlz
ID49MkdCIG9uIDMyLWJpdHMsIGFuZCBJIG1hZGUgdGhlbSBvbmx5IHJ1biBpbiBvbmUgY29uZmln
dXJhdGlvbiBzaW5jZSB0aGV5IGNhbiB0YWtlIGEgbGl0dGxlIGJpdCBvZiB0aW1lLgorCisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qczoKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIHN0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qczoKKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9iaWctd2FzbS1tZW1vcnkuanM6CisgICAgICAgICh0
ZXN0KToKKwogMjAyMS0xMC0wNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlIGltcGxlbWVudGF0aW9uIG9mIF9fcHJv
dG9fXyBuZWVkcyB0byBoYW5kbGUgZ2V0X2J5X2lkX3dpdGhfdGhpcwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzIGIvSlNUZXN0cy9zdHJl
c3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCmluZGV4IGViNDgwMjcxYWEyZS4uZjg2
NTg5MzM2ZGNhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jv
dy1uby1tYXguanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8t
bWF4LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBz
a2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFy
Y2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVz
dCgpIHsKIApAQCAtMjQsMTkgKzI1LDI1IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2
YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgeworICAgIGxldCBtYXhTaXplID0gMHgxMDAwMDsKKyAg
ICB7CiAgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlh
bDogMHgxMDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworICAgICAgICBtZW1v
cnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcg
VWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQg
MCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1
bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFy
IG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Cisg
ICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDAgKyAxKTsKKyAgICAgICAgdmFyIHJl
c3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0g
dHJ1ZTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJh
bmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJS
YW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkuZ3JvdyBleHBlY3RzIHRoZSBncm93biBzaXpl
IHRvIGJlIGEgdmFsaWQgcGFnZSBjb3VudCIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0K
LQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9y
IjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcwppbmRleCAxMWFhNWU1ZDI1
NzEuLmRiZWYwNGQ5NjVmNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVt
b3J5LWdyb3cuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMK
QEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYg
JG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0
dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewog
CkBAIC0yNCwxOSArMjUsMjYgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9
IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiAweDgwMDAgfSk7Ci0gICAgICAgIG1l
bW9yeS5ncm93KDB4NzAwMCk7CisKKyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgewor
ICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4
MTAwMCwgbWF4aW11bTogbWF4U2l6ZSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAt
IDB4MTAwMCk7CiAgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5
LmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAg
IHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2Vi
QXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplKzEgfSk7
CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgKyAxIC0gMHgxMDAwKTsKKyAgICAgICAgdmFy
IHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9r
ID0gdHJ1ZTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0g
IlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9
ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ21heGltdW0nIHBhZ2UgY291bnQgaXMg
dG9vIGxhcmdlIikKICAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQog
ICAgICAgICB0aHJvdyAiRXJyb3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
d2FzbS1tZW1vcnkuanMKaW5kZXggZDhlN2ZiNjliNGJhLi44MGZmMDZiMjY3YWQgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctd2FzbS1tZW1vcnkuanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5
TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0g
ImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1bHQoKQog
CiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxNyArMjUsMjEgQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0Fy
cmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXN1
bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcikpOworICAgIGxldCBtYXhTaXplID0g
MHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXko
bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IG1heFNpemUsIG1heGltdW06IG1heFNp
emUgfSkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKICAgICAgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisgICAgfQor
CisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogbWF4U2l6
ZSsxLCBtYXhpbXVtOiBtYXhTaXplKzEgfSkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsK
ICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJy
b3I6IE91dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVy
cm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdl
IikKICAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0
aHJvdyAiRXJyb3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBl
ZC1hcnJheS1hbHdheXMtbGFyZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5jODZhMjQ5ZTVjMDcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90
eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHNraXAgaWYg
JG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0
dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxl
bmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJyYXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0
QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlWYWwoYXJyYXksIGluZGV4KQoreworICAgIHJl
dHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGluZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRC
eVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQoreworICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOwor
fQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAy
NDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdldEFy
cmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorCSAgICB0
aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVj
dGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZh
ciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAw
OworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJl
c3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFs
dWUpCisJICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1
bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0g
MyAqIG9uZUdpZ2E7CitsZXQgZm91ckdpZ3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50
OEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3
IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBmb3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0
KG5ldyBVaW50OENsYW1wZWRBcnJheSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1w
ZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2
ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5
LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmMwNDhh
OTFhYWJmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZl
bnR1YWxseS1sYXJnZS5qcwpAQCAtMCwwICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGlt
aXRlZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4
Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgpCisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5
KQoreworICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0
aCk7CitmdW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5
W2luZGV4XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5
LCBpbmRleCwgdmFsdWUpCit7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGlu
ZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5j
dGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIC8qdmFyIGwgPSBnZXRBcnJheUxlbmd0
aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFjdHVhbExlbmd0aCkKKwkgICAgdGhyb3cgKCJX
cm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsg
YWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICAqL3ZhciBpbmRl
eCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFy
cmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXks
IGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKwkgICAgdGhyb3cgKCJFeHBl
Y3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2FzZSAiICsgc3Ry
aW5nKTsKKyAgICB9CisgICAgdmFyIHZhbHVlID0gNDI7CisgICAgdmFyIGluZGV4ID0gMiAqIG9u
ZUdpZ2EgKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICB2YXIg
cmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICBpZiAocmVzdWx0ICE9IHZhbHVl
KQorICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9u
ZUdpZ2E7CitsZXQgZm91ckdpZ3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5
KHRocmVlR2lncyksIHRocmVlR2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4
QXJyYXkoZm91ckdpZ3MpLCBmb3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBV
aW50OENsYW1wZWRBcnJheSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJh
eS8zR0IiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRmNTIyYmIzMGFhZS4uZTlhZjUw
Nzg5M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNDYgQEAKKzIwMjEt
MTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGlsZSBpbmNyZWFz
aW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVt
b3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAg
ICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2Vk
IGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBzaXpl
X3QKKyAgICAgICAgLSBUaGlzIGFsc28gcmVxdWlyZWQgY2hhbmdpbmcgTmV3VHlwZWRBcnJheSBp
biBhbGwgb2YgTExJbnQvQmFzZWxpbmUvREZHL0ZUTCB0byBhY2NlcHQgYSBub24taW50MzIgc2l6
ZS4KKyAgICAgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25z
LCBJIGhhZCB0byBhZGQgc3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwsIHdoaWNoIG5vdyBoYXZl
IHR3byB2ZXJzaW9ucyBvZiBOZXdUeXBlZEFycmF5IChvbmUgdGhhdCB0YWtlcyBhbiBJbnQzMiBh
bmQgb25lIHRoYXQgdGFrZXMgYSBTdHJpY3RJbnQ1MikKKyAgICAgICAgLSBTaW1pbGFybHksIEdl
dEFycmF5TGVuZ3RoIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCBub3cgY2FuIGVpdGhlciBy
ZXR1cm4gYW4gSW50MzIgb3IgYSBsYXJnZXIgbnVtYmVyLgorICAgICAgICAgICAgSSBhbHNvIGhh
ZCB0byBzcGxpdCB0aGVtIGluIHRoZSBERkcvRlRMLCBzZWUgR2V0QXJyYXlMZW5ndGhBc0ludDUy
IGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAg
IC0gSSBtb2RpZmllZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgZm9yIEdldEJ5VmFsL1B1dEJ5VmFs
L0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21pY3NYWFggdG8gYWNjZXB0IG5vbi1JbnQzMiBp
bmRpY2VzLCBzaW5jZSBmb3Ige0ludDgvVUludDgvVUludDhDbGFtcGVkfUFycmF5LCBhIG1heGlt
dW0gc2l6ZSBvZiA0R0IgaW1wbGllcyBpbmRpY2VzID4gMkIuCisgICAgICAgIC0gSSBhZGRlZCBh
ICJtYXlCZUxhcmdlVHlwZWRBcnJheSIgYml0IHRvIEFycmF5UHJvZmlsZS9VbmxpbmtlZEFycmF5
UHJvZmlsZS9ERkc6OkFycmF5TW9kZSB0byB0cmFjayB3aGV0aGVyIHN1Y2ggYSBub24tSW50MzIg
aW5kZXggd2FzIHNlZW4gdG8gYWxsb3cgcHJvcGVyIHNwZWN1bGF0aW9uIGFuZCBzcGVjaWFsaXph
dGlvbiBvZiBmYXN0IHBhdGhzIGluIHRoZSBERkcvRlRMLgorICAgICAgICAgICAgSSB0aGVuIHVw
ZGF0ZWQgdGhlIHJ1bnRpbWUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHNsb3cgcGF0aHMgdG8gY29y
cmVjdGx5IHVwZGF0ZSBpdC4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5IEkgcmFuIG91dCBvZiB0
aW1lIHRvIGFkZCB0aGVzZSBzcGVjdWxhdGlvbnMvdXBkYXRlIHRoZSBmYXN0IHBhdGhzLgorICAg
ICAgICBTbyB0aGUgZm9sbG93aW5nIHdpbGwgaGF2ZSB0byB3YWl0IGZvciBhIGZvbGxvdy11cCBw
YXRjaDoKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRo
IG9mIEdldEJ5VmFsIGluIHRoZSBMTEludAorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRp
Y2VzIGluIHRoZSBmYXN0IHBhdGhzIGdlbmVyYXRlZCBieSBBY2Nlc3NDYXNlL1BvbHltb3JwaGlj
QWNjZXNzCisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0
aHMgZ2VuZXJhdGVkIGJ5IHRoZSBERkcvRlRMIGZvciBlYWNoIG9mIEdldEJ5VmFsL1B1dEJ5VmFs
L0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21pY3NYWFgKKworICAgICAgICBUaGUgY3VycmVu
dCBwYXRjaCBpcyBmdW5jdGlvbmFsLCBpdCB3aWxsIGp1c3QgaGF2ZSBkcmVhZGZ1bCBwZXJmb3Jt
YW5jZSBpZiB0cnlpbmcgdG8gdXNlIGluZGljZXMgPjJCIGluIGEge0ludDgvVUludDgvVUludDhD
bGFtcGVkfUFycmF5LgorCisgICAgICAgIE90aGVyIG1pbm9yIGNoYW5nZXMgaW4gdGhpcyBwYXRj
aDoKKyAgICAgICAgLSBGaXhlZCBhbiB1bmRlZmluZWQgYmVoYXZpb3IgaW4gQXJyYXlCdWZmZXI6
OmNyZWF0ZUludGVybmFsIHdoZXJlIG1lbWNweSBjb3VsZCBiZSBjYWxsZWQgb24gbnVsbHB0ciAo
dGhlIHNwZWMgZXhwbGljaXRseSBiYW5zIHRoaXMgZXZlbiB3aGVuIGxlbmd0aCBpcyAwKQorICAg
ICAgICAtIFJlcGxhY2VkIHNvbWUgcmVwZXRpdGl2ZSBhbmQgZXJyb3ItcHJvbmUgYm91bmRzIGNo
ZWNraW5nIGJ5IGNhbGxzIHRvIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwsIHdoaWNoIGlz
IGNsZWFyZXIsIHNob3J0ZXIsIGFuZCByZXVzZSBDaGVja2VkQXJpdGhtZXRpYyBmYWNpbGl0aWVz
IHRvIGF2b2lkIG92ZXJmbG93IGlzc3Vlcy4KKyAgICAgICAgLSBGaXhlZCBhIHZhcmlldHkgb2Yg
b2Jzb2xldGUgY29tbWVudHMKKyAgICAgICAgLSBBZGRlZCBzdXBwb3J0IGZvciBicmFuY2g2NChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tNjQgcmlnaHQpCisg
ICAgICAgICAgICAodGhlcmUgd2FzIGFscmVhZHkgc3VwcG9ydCBmb3IgdGhlIHNhbWUgYnV0IHdp
dGggVHJ1c3RlZEltbTY0KQorICAgICAgICAtIE1hZGUgdmFyaW91cyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyIGZ1bmN0aW9uIGNvbnN0ZXhwciBhcyBwYXJ0IG9mIHRoZSBwcmV2aW91cyBwb2ludAor
CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAg
ICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OlRydXN0ZWRJbW1QdHIpOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyOjphc0ludHB0
cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6
OmFzUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyOjpJ
bW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6OmFz
VHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMjo6VHJ1c3RlZEltbTMyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjo6SW1tMzI6OkltbTMyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlcjo6SW1tMzI6OmFzVHJ1c3RlZEltbTMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0OjpUcnVzdGVkSW1tNjQpOgorICAgICAgICAo
SlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6SW1tNjQpOgorICAgICAgICAoSlND
OjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6YXNUcnVzdGVkSW1tNjQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpjYW5CbGluZCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNo
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmJyYW5jaDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJMZW5ndGg2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjp1bnRhZ0FycmF5UHRyTGVu
Z3RoMzIpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y2FuQmxpbmQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2gpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6c2V0TWF5QmVM
YXJnZVR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om1heUJlTGFyZ2VU
eXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRBcnJheVByb2ZpbGU6OlVu
bGlua2VkQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRBcnJheVByb2ZpbGU6
OnVwZGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlNb2RlOjpyZWZpbmUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBcnJh
eU1vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OkFycmF5TW9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjptYXlCZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZSBjb25zdCk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6d2l0aFR5cGVBbmRDb252ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxh
cmdlVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpzcGVj
dWxhdGlvbkZyb21Qcm9maWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1v
ZGU6OndpdGhQcm9maWxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5
Q2xhc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dl
dHRlcik6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6
OkRGRzo6ZW5hYmxlSW50NTIpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OnByZXBlbmRHZXRBcnJheUxlbmd0aCk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1N0b3JhZ2VDaGlsZCBjb25zdCk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6c3RvcmFnZUNoaWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJv
dW5kcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5
U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRB
cnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1Mik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRh
bnRTdHJ1Y3R1cmVDaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5n
UGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50QXJyYXlDaGVja3MpOgorICAgICAgICAqIGZ0bC9GVExD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdENhc3RpbmdSZXN1bHQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEFycmF5TGVuZ3RoQXNJbnQ1Mik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdUeXBlZEFycmF5
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQuaDoKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ2NE5vbk5lZ2F0aXZlKToKKyAgICAgICAgKiBqaXQvSW50
cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6cHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpnZXRCeVZhbCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3Jl
YXRlQWRvcHRlZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
OjpjcmVhdGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcFZhbHVl
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXggY29uc3QpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29u
dGVudHM6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmJ5
dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1h
dGVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OmJ5dGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnZlcmlm
eUJ5dGVPZmZzZXRBbGlnbm1lbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnZl
cmlmeVN1YlJhbmdlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFt
cE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojpz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcu
Y3BwOgorICAgICAgICAoSlNDOjpEYXRhVmlldzo6RGF0YVZpZXcpOgorICAgICAgICAoSlNDOjpE
YXRhVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3Lmg6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlND
OjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToK
KyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzdWJhcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1
Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVm
ZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNpemVPZik6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0Ojps
ZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6bGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OnRvSW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmll
dy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0RhdGFW
aWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRleCk6CisgICAgICAg
ICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERh
dGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVj
dG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleElubGluZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFs
V2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0w
NCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNwbGF5IHJl
dHVybiB2YWx1ZXMgaW4gbmljZXIgd2F5IGluIHRoZSBqc2MgUkVQTCBhbmQgYWRkIGEgcHJldHR5
UHJpbnQgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVm
ZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA0M2Y3ODRh
NGFiOTMuLmVjMzJiNzIyMWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsyOTgsOSBA
QCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0
aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQg
YXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRy
dXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIo
KSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0g
ICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTMxMSwy
MSArMzExLDIxIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhw
bGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29u
c3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAg
ICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAg
ICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0
ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAg
ICB9CkBAIC0zMzUsMTIgKzMzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDog
cHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29u
c3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qg
dm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkg
eyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVz
dGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZElt
bTMyOgpAQCAtMzU4LDcgKzM1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShY
ODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikK
KyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0
cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAg
ICAgICB9CkBAIC0zNjksMTcgKzM2OSwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0z
MiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJf
dCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUp
CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9
CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIg
cHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIp
CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQog
I2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25z
dCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMy
JiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAg
IApAQCAtMzkwLDE1ICszOTAsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVt
ZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAg
Ly8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZElt
bSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3Rl
ZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50
NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2
NF90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0g
ICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAg
ZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAg
ICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBA
IC00MDksMTcgKzQwOSwxNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRl
IFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1
ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAg
ICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGlj
aXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJ
bW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikK
ICAgICAgICAgewogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0
JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0
ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4g
KnRoaXM7IH0KICAgICB9OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIg
Y29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA4Niw5ICsxMDg2LDkgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVn
aXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lm
aWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3Rl
ciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdmZTNhODFlMzQx
Li5lNjc2N2M2YTlhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShB
Uk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUo
WDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYK
ICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCks
IGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4
NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsK
ICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lk
IHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1
LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0
LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3Ro
ZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2
NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5l
ZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9B
c3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0
aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5k
IG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRC
bGluZChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxp
bmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChy
b3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJl
Z2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElm
IHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSds
bCBqdXN0CisgICAgICAgICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAg
ICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAg
d2hpbGUgKG5vcENvdW50LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3Rl
ZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21w
YXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJp
Z2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmln
aHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oCmluZGV4IDQyNTA5MDNiYzMyMi4uMTc5NmI2NTFiYzQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJl
Z2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklY
TUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMg
Ym9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVp
bnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGlj
IGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVl
KSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJh
dGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
dW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0
KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQo
cmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NEUuaAppbmRleCA0Y2YyMjQwZDZjM2YuLjA3NjYyOTgyZDVhZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApA
QCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVn
aXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0
LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIo
bGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwog
ICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRh
Z0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAppbmRleCBjY2UwZDAxZjQwMTcuLmQ3NzQ2OTk5YmUwMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6
OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAg
IHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBz
aG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
Pj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZm
ZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBkMWFl
M2I1NTM1NjUuLmQ3ZGYxZTkzZjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtMTE5MSwxMiArMTE5MSwxNyBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0
YXRlLnUucHJvcGVydHlHUFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNj
cmF0Y2hHUFIpOwogICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpKTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRz
IGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQu
YnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNo
R1BSKSk7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIp
OwogICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxs
SGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2VuZGlm
CiAKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51
c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3Mo
KSk7CkBAIC0xNjMwLDkgKzE2MzUsMTYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhH
dWFyZCgKICAgICAgICAgICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAorI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhl
ciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIGppdC5s
b2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIC8vIE91dE9mQm91bmRzIGJp
dCBvZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4K
KyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhl
bHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyNlbHNlCiAg
ICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIC8vIE91
dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlv
biBmdW5jdGlvbi4KICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFu
Y2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIp
KTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Io
c3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LmJhc2VSZWdzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uOTkzMWIxMGY4MDA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNs
YXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUg
ZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUg
c2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIg
Yml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAx
NiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJp
dHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwogCiAvLyBU
aGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRoaW4gKDAgLSAxNiwgMjEs
IDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZFBl
cmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAKKworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgLy8gQWNjZXNzaW5nIHR5cGVkIGFycmF5cyBsYXJn
ZXIgdGhhbiB0aGF0IHRlbmRzIHRvIGJlIG1vcmUgY29tcGxpY2F0ZWQgYXMgd2UgY2FuJ3QgZm9y
Y2UgY29udmVydCBldmVyeXRoaW5nIHRvIGludDMyX3QuCisgICAgLy8gV2Ugb25seSBzdXBwb3J0
IHN1Y2ggbGFyZ2UgdHlwZWQgYXJyYXlzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlC
ZUxhcmdlVHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVy
biBtX21heUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyNlbmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJl
SUQoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2Rlcyog
YWRkcmVzc09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQog
ICAgIGJvb2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVU
b0hvbGU7IH0KQEAgLTI0NCw2ICsyNTQsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1f
bGFzdFNlZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBm
YWxzZSB9OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90
aGVyIHNwZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nl
c3MsIGFzIGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhh
dmUgYmFzaWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJh
eVN0b3JhZ2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMg
bmFtZSBpbXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBm
YWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6
IDE7CiAgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9v
bCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NiwxMyBAQCBz
dGF0aWNfYXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5r
ZWRBcnJheVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBk
ZWZhdWx0OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBt
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgor
ICAgIHsKKyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmls
ZSkKICAgICB7CkBAIC0yODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5
UHJvZmlsZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJv
ZmlsZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAg
ICAgYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1f
bWF5QmVMYXJnZVR5cGVkQXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAs
NyArMzE2LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRl
cmNlcHRJbmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5
QmVMYXJnZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2Yo
VW5saW5rZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCBiMWRmY2EyNzQ5YzEuLjA0MmIwN2I4OGFhMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaApAQCAtMzQ4Niw2ICszNDg2LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7
CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJs
ZVZpZXcoCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2Rl
LT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1
MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zODIxLDYgKzM4MzIsMTkgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dy
YXBoLnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsK
KyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAg
ICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
TnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJ
bnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBl
T2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3Bl
Y09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwCmluZGV4IDZlMjc1MzEwNGJkMy4uMDU5YmEzZjZkY2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFz
ZS5jcHAKQEAgLTMyNSw2ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAg
ICAgICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlz
LCBzbyBzaG91bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAg
ICAgICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNw
cmVhZDogewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUt
PmJpdFZlY3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdB
QmFkVGltZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNo
cG9pbnQobm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cnJheU1vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3Bw
CmluZGV4IDZlNGZlOWFmYTNlYi4uMDQxYWRiNzg2MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFy
cmF5TW9kZTo6cmVmaW5lKAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4
aXQsIGFjdGlvbigpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24o
aW5kZXgpKQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSkKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywg
YWN0aW9uKCkpOwogICAgIAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBl
eG90aWMgb2JqZWN0IGJlaGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAt
Mjk0LDYgKzI5NCw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFy
cmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBj
YXNlIEFycmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5
IHdlIG9ubHkgcHJlc2VydmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRC
eVZhbCBhbmQgbm90IEdldEJ5VmFsIGFzIHdlbGwuCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFB1dEJ5VmFsKSB7CiAgICAgICAgICAgICBpZiAoZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBPdXRPZkJvdW5kcykgfHwgIWlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHlwZWRBcnJheVJlc3VsdCh3aXRoU3BlY3VsYXRpb24oQXJyYXk6Ok91dE9m
Qm91bmRzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
TW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAppbmRleCBh
MDI2YWFkMTg5M2IuLmRmNzVjNzg5MGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5TW9kZS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0
ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252
ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBBcnJheTo6
V3JpdGU7CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwog
ICAgIH0KICAgICAKICAgICBleHBsaWNpdCBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJy
YXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xMzYsNiArMTM3LDcgQEAgcHVibGljOgogICAgICAgICB1
LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRl
cy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBh
Y3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwog
ICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNz
IGFycmF5Q2xhc3MsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTQ1LDE1ICsxNDcsMTcgQEAg
cHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7
CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUu
YXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlw
ZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxh
dGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24p
CisgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZl
cnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5ID0g
ZmFsc2UpCiAgICAgewogICAgICAgICB1LmFzQnl0ZXMudHlwZSA9IHR5cGU7CiAgICAgICAgIHUu
YXNCeXRlcy5hcnJheUNsYXNzID0gYXJyYXlDbGFzczsKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1
bGF0aW9uID0gc3BlY3VsYXRpb247CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29u
dmVyc2lvbjsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5h
c0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gbWF5QmVMYXJnZVR5cGVkQXJyYXk7CiAgICAg
fQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJy
YXlDbGFzcywgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rp
b24pCkBAIC0xNjMsNiArMTY3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3Vs
YXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0g
Y29udmVyc2lvbjsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAg
dS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAogICAg
IEFycmF5OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6VHlw
ZT4odS5hc0J5dGVzLnR5cGUpOyB9CkBAIC0xNzAsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEFy
cmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEFycmF5OjpTcGVjdWxhdGlvbj4odS5hc0J5dGVzLnNwZWN1bGF0aW9uKTsgfQogICAgIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJh
eTo6Q29udmVyc2lvbj4odS5hc0J5dGVzLmNvbnZlcnNpb24pOyB9CiAgICAgQXJyYXk6OkFjdGlv
biBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6QWN0aW9uPih1LmFz
Qnl0ZXMuYWN0aW9uKTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSBjb25zdCB7
IHJldHVybiB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KICAgICAKICAgICB1bnNp
Z25lZCBhc1dvcmQoKSBjb25zdCB7IHJldHVybiB1LmFzV29yZDsgfQogICAgIApAQCAtMTc5LDM1
ICsxODUsNTAgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXJyYXlNb2RlIGZy
b21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2ZpbGUqLCBBcnJh
eTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKLSAgICAKKworICAgIEFycmF5TW9kZSB3aXRoVHlw
ZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9u
KCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRo
U3BlY3VsYXRpb24oQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRp
b24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRo
QXJyYXlDbGFzcyhBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcykgY29uc3QKKworICAgIEFycmF5TW9k
ZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0
aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24o
KSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3
aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tl
ciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorCisgICAgQXJy
YXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29u
dmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigp
LCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKKyAgICBBcnJheU1vZGUgd2l0aEFy
cmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KEFycmF5OjpDbGFz
cyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIGJvb2wgbWF5QmVM
YXJnZVR5cGVkQXJyYXkpIGNvbnN0CiAgICAgewotICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24g
bXlTcGVjdWxhdGlvbjsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xh
c3MsIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRB
cnJheSk7CisgICAgfQogCisgICAgc3RhdGljIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlv
bkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2Zp
bGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpCisgICAgewogICAgICAgICBpZiAobWFrZVNhZmUp
Ci0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOworICAgICAg
ICAgICAgcmV0dXJuIEFycmF5OjpPdXRPZkJvdW5kczsKICAgICAgICAgZWxzZSBpZiAocHJvZmls
ZS0+bWF5U3RvcmVUb0hvbGUobG9ja2VyKSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBB
cnJheTo6VG9Ib2xlOworICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpUb0hvbGU7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7Ci0gICAg
ICAgIAotICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRpb24pOworICAg
ICAgICAgICAgcmV0dXJuIEFycmF5OjpJbkJvdW5kczsKICAgICB9Ci0gICAgCisKKyAgICBBcnJh
eU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdp
dGhQcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUq
IHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6Q2xh
c3MgbXlBcnJheUNsYXNzOwotCiAgICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewogICAgICAgICAg
ICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2NrZXIpICYmIGJl
bmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewogICAgICAgICAgICAgICAgIEFycmF5TW9kZXMg
YXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpOwpAQCAtMjIx
LDIzICsyNDIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFy
cmF5OjpBcnJheTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBh
cnJheUNsYXNzKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlB
cnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBl
IHR5cGUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7Ci0gICAgfQot
ICAgIAotICAgIEFycmF5TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252
ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOwotICAgIH0K
LSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5
cGUsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVy
c2lvbiwgYWN0aW9uKCkpOworCisgICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlv
biA9IHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisK
KyAgICAgICAgYm9vbCBsYXJnZVR5cGVkQXJyYXkgPSBwcm9maWxlLT5tYXlCZUxhcmdlVHlwZWRB
cnJheShsb2NrZXIpOworCisgICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0
aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkobXlBcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgbGFy
Z2VUeXBlZEFycmF5KTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSB1bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlID0gU3BlY0ludDMyT25seTsKQEAgLTUy
Niw3ICs1MzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlw
ZSgpCiAgICAgICAgICAgICAmJiBhcnJheUNsYXNzKCkgPT0gb3RoZXIuYXJyYXlDbGFzcygpCiAg
ICAgICAgICAgICAmJiBzcGVjdWxhdGlvbigpID09IG90aGVyLnNwZWN1bGF0aW9uKCkKLSAgICAg
ICAgICAgICYmIGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCk7CisgICAgICAgICAg
ICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpCisgICAgICAgICAgICAmJiBt
YXlCZUxhcmdlVHlwZWRBcnJheSgpID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CiAg
ICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUmIG90aGVyKSBj
b25zdApAQCAtNTc5LDcgKzU5MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50OF90IGFy
cmF5Q2xhc3M7CiAgICAgICAgICAgICB1aW50OF90IHNwZWN1bGF0aW9uOwogICAgICAgICAgICAg
dWludDhfdCBjb252ZXJzaW9uIDogNDsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogNDsK
KyAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogMTsKKyAgICAgICAgICAgIHVpbnQ4X3QgbWF5
QmVMYXJnZVR5cGVkQXJyYXkgOiAxOwogICAgICAgICB9IGFzQnl0ZXM7CiAgICAgICAgIHVuc2ln
bmVkIGFzV29yZDsKICAgICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDg4MTFiODlmMjRhNy4uM2Q3OWYyNGU3ZTg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MzgwNiw4ICszODA2LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwo
Tm9kZSogY2FsbFRhcmdldCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
R2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBH
ZXRCeVZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpCiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0
aWNfYXNzZXJ0KGVuYWJsZUludDUyKCkpOworI2VuZGlmCisKICAgICBzd2l0Y2ggKHZhcmlhbnQu
aW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7
CisjaWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1
bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAg
ICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAo
KnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5
U3RvcmFnZVR5cGU7CkBAIC0zODIxLDI2ICszODI5LDMyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJy
YXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3Jk
KCkpLCB0aGlzTm9kZSk7CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGU7CisgICAgICAgIGlmIChp
c0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBsZW5ndGhOb2RlID0g
YWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFy
cmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGhBc0ludDUyLCBPcEluZm8o
QXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwog
ICAgICAgICAvLyBPdXIgQXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUg
c28gd2Ugc2hvdWxkIGJlIG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4
aXRPSyA9IHRydWU7CiAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlm
ICghbG9nU2l6ZSkgewogICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2Ug
YSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBi
eXRlTGVuZ3RoCi0gICAgICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2Rl
KiBzaGlmdE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2Rl
KSk7CisgICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5
cGVkIGFycmF5cyBtYXkgaGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisg
ICAgICAgIE5vZGUqIHR5cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUp
KTsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwg
dHlwZVNpemUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5
cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyAgICAgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAg
ICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigp
KS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTIsMTMgKzM4NjYs
MjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5
cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3Jh
cGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVh
ZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQo
cmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoQXNJbnQ1MiwgT3BJbmZvKEFycmF5TW9k
ZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0
SW50cmluc2ljOiB7CisjaWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICgh
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCiAgICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlU
eXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygp
LT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBAIC0zODcwLDcgKzM4OTEsMTAgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6Okdl
bmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6
OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6
UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgT3BJ
bmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2Rl
KSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjU0OGJkMGVlZTllZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTMsNiArMTUz
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBFbnVtZXJhdG9ySGFz
T3duUHJvcGVydHk6CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFz
SW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlW
YWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0xMzMzLDYgKzEzMzQsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTI6CiAgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFw
TG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxk
MSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CkBAIC0xNDQ0LDYgKzE0NDYs
MTQgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9k
ZS0+YXJyYXlNb2RlKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRB
cnJheVZpZXcoKSk7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFw
TG9jYXRpb24oQXJyYXlMZW5ndGhMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6
eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0
b3JMZW5ndGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsK
ICAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxp
ZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQor
aW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CmluZGV4IDA3MGE0ODU0N2E5Ny4uNjA5ZmYwODU3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRT
ZXR0ZXI6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJD
b2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgog
ICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2Fz
ZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCmluZGV4IDhlMWI5M2VlZTZjYS4uNzgzYWY4YmE4NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRl
eFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5p
c1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJ
bkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlC
ZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4
aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAt
MTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9y
Y2VFeGl0OiB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2Ug
aGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4K
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53
aXRoVHlwZShBcnJheTo6R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEz
Myw2ICsxMTM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0
cmluZ1VzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAg
ICAgICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6
SW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJy
YXk6OlVpbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6Cisg
ICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpGbG9hdDY0QXJyYXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtu
b3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0x
MTg0LDYgKzExOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxO
dW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAm
JiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYg
bm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFu
b2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAg
ICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZs
b3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKApAQCAtMTI3Nyw3ICsxMjkxLDEwIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxk
MSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAg
ICAgICAgICAvL2lmIChjaGlsZDItPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFy
cmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgLy9lbHNlCisgICAgICAg
ICAgICAgICAgLy8gICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4oY2hpbGQyKTsKICAgICAgICAgICAg
ICAgICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgpAQCAtMTcxNywxMiArMTcz
NCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJh
eTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigp
KSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+
Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTIxNDksNiArMjE3MCwyNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9k
ZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVk
aWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAgICAg
ICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAg
ICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0FycmF5
T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhO
ZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgZml4RWRnZTxL
bm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisjZWxzZQorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAgICAgICAgICAgZml4RWRnZTxL
bm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc1
OCw3ICsyODAwLDEwIEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBEYXRhVmlld1NldDogewog
ICAgICAgICAgICAgZml4RWRnZTxEYXRhVmlld09iamVjdFVzZT4obV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSk7Ci0gICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgIC8vaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgfHwgIW5vZGUtPmFycmF5TW9kZSgpLm1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgICAgICAvL2Vsc2UKKyAgICAg
ICAgICAgIC8vICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpCiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDMpKTsKICAgICAgICAgICAgIApAQCAtNDA5NiwxNCArNDE0MSw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAKICAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAg
IH0KLSAgICAKLSAgICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmln
aW4sIE5vZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9k
ZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRy
LCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwotICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRB
cnJheUxlbmd0aCwgb3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAog
ICAgIHZvaWQgY29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRm
YWY5NDlhNzg2MC4uMmQ4NmViNzU3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHZW5lcmF0aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVu
dCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBw
cm92aWRlIGluZm9ybWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJl
Z2lzdGVycywgYW5kIGlmIHNvIHdoaWNoLAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNw
aWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3Zp
ZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNw
aWxsZWQgaW4gYSBib3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRo
ZSB0eXBlIG9mIGJveCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBh
IHZhbHVlIHJlbWFpbiwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0
cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNv
IHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdp
c3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5l
cmF0aW9uSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
dGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1
MS4uNDNiNWQxMDEyZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTQ5OSw2
ICsxNDk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICAgICAgc2V0UmVsYXRpb25z
aGlwKFJlbGF0aW9uc2hpcChub2RlLCBtX3plcm8sIFJlbGF0aW9uc2hpcDo6R3JlYXRlclRoYW4s
IC0xKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
aW5kZXggMmFmNzk3MDY4YTljLi5kMTNkMzdmMDJkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTk2NSw2ICsxOTY1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFy
cmF5UHVzaDoKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2Ug
SGFzSW5kZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5k
ZXhBbmRNb2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3
IEBAIHB1YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFy
cmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAg
ICAgIHJldHVybiAyOwogCiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgpAQCAtMjI3
Niw2ICsyMjc4LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBH
ZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRC
eVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5
YTkwYTRjZmRhYzguLjcyNjRkYzJmNTY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaApAQCAtMjYxLDggKzI2MSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKE11bHRpRGVsZXRlQnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisg
ICAgLyogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBUeXBlZEFycmF5cywgYXMgdGhleSBhcmUg
dGhlIG9ubHkgb25lcyB0aGF0IGNhbiBoYXZlIGEgbGVuZ3RoIHRoYXQgZG9lcyBub3QgZml0IGlu
IDMyIGJpdHMuICovIFwKKyAgICBtYWNybyhHZXRBcnJheUxlbmd0aEFzSW50NTIsIE5vZGVSZXN1
bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFZlY3Rvckxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBc
CiAgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE5vZGVSZXN1bHRJbnQzMikgXAor
ICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgTm9kZVJlc3VsdEludDUy
KSBcCiAgICAgbWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNraXBT
Y29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUmVzb2x2ZVNjb3BlLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAppbmRleCA2OWFjZjUxOWMwYmEuLmQ1ZGEzNGE1MTk5YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC05NywxMCArOTcsOCBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgSlNWYWx1ZQogICAgIH0KICAgICBpZiAoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
Ci0gICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpbmRleCwgdmFsdWUpKSB7
Ci0gICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsK
KyAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKICAgICAgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1
ZSwgc3RyaWN0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc1LDcgKzE3Myw3IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIHZvaWQgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLWNoYXIq
IG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IHNpemUsIGNoYXIqIHZlY3RvcikKK2No
YXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBzaXplLCBjaGFyKiB2ZWN0
b3IpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0x
ODMsMTEgKzE4MSwxMyBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cgogICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiX3MpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIAorCisgICAgc2l6ZV90IHVuc2lnbmVkU2l6ZSA9IHN0YXRpY19j
YXN0PHNpemVfdD4oc2l6ZSk7CisKICAgICBpZiAodmVjdG9yKQotICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBzaXplLCB1bnRhZ0FycmF5UHRyKHZlY3Rvciwgc2l6ZSkpKTsKKyAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFz
dFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXplLCB1bnRhZ0FycmF5
UHRyKHZlY3RvciwgdW5zaWduZWRTaXplKSkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBzaXplKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lz
ZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
dW5zaWduZWRTaXplKSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CkBAIC0xOTA4LDcg
KzE5MDgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlCdWZm
ZXIsIEpTQ2VsbCosIChWTSogdm1Qb2ludGVyLCBTdHJ1YwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MjQsNyAr
MTkyNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTU2LDcgKzE5NTYsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hh
ciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MzJBcnJheT4oZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAK
LUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk3Miw3ICsx
OTcyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMDQs
NyArMjAwNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZB
cnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNVaW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDM2LDcgKzIwMzYsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQz
MkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51
bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMjA1Miw3ICsyMDUyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsyMDY4LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0JpZ0ludDY0QXJy
YXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9w
dCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA4NDRj
MTliMzExNDEuLjgwZGY4MWZkZjA1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIGNoYXIq
LCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIGNoYXIqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwg
Y2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFt
cGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFyKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJ
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBzaXplX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0q
LCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld01h
cEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDIwZDA0NGY1ZjVjMC4uNDc4NzAzYWMxMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQ
b2ludEF0OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA5MjRmYzhj
MzEwODYuLjViZDM3N2RhZjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKQEAgLTM3Myw2ICszNzMsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdu
bwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdl
OgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50
NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBBcnJheVBvcDoKICAgICBj
YXNlIFN0cmluZ0NoYXJBdDoKQEAgLTM4NSw2ICszODYsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wg
aWdubwogCiAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAg
ICAgIHJldHVybiAhKHN0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3Bl
Y1R5cGVkQXJyYXlWaWV3KSk7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCBiNGM4Zjg2MGI1MTQuLjg4MmQ3N2QwZmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyNDUsMTYgKzMyNDUsMjggQEAg
SklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZC
b3VuZHMoTm9kZSogbm9kZSwgR1BSUmUKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1f
aml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZvck5vZGUo
bV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkp
OwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXctPmxlbmd0
aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAgICAgIE5v
ZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgpOwotICAg
ICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUlu
dDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29uc3RhbnQo
KSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4g
SklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4g
bV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFs
LCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vsc2UKICAgICAg
ICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyNl
bmRpZgogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIG1faml0LmJyYW5j
aDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5k
ZXhHUFIpCkBAIC03OTYwLDcgKzc5NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWdlVHlw
ZWRBcnJheVN0b3JhZ2UoR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBzdG9yYWdlUmVnLCBibwogewog
ICAgIGF1dG8gdW50YWdBcnJheVB0ciA9IFsmXSgpIHsKICNpZiBDUFUoQVJNNjRFKQotICAgICAg
ICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3RoMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzdG9yYWdlUmVnLCB2
YWxpZGF0ZUF1dGgpOworICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3RoNjQoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOwogI2Vsc2UKICAgICAgICAgVU5VU0VE
X1BBUkFNKHZhbGlkYXRlQXV0aCk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiYXNlUmVnKTsKQEAg
LTgzNDIsMTIgKzgzNTQsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5
TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIGJhc2UpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBtX2ppdC5i
cmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkpKTsKKyNlbHNlCiAgICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisjZW5kaWYKICAgICAgICAgc3Ry
aWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfSB9
CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSWRlbnQoTm9kZSogbm9k
ZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmdPclN5bWJvbCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CkBAIC0xMTExMSwxMCArMTExMjksMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIGF1dG8gdHlw
ZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOwogICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIAorCiAgICAgU3BlY3Vs
YXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBz
aXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLy8g
VGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBhIENQVVJlZ2lz
dGVyLCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBtX2ppdC5zaWduRXh0ZW5k
MzJUb1B0cihzaXplR1BSLCBzaXplR1BSKTsKKyNlbmRpZgorCisgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6
ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNp
emVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsK
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTMwLDYgKzExMTU4LDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBu
b2RlKQogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZlclZp
ZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qg
b2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBz
dGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKTsKICAgICAKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwog
ICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5
VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTg1LDkgKzExMjE1LDE1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBt
X2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3Io
KSkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6
ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMy
KAogICAgICAgICBzaXplR1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAg
ICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBUcnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAtMTQxNTksNiArMTQxOTUsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9kZSkKICAgICBjYXNlIElu
dDMyVXNlOgogICAgICAgICBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAg
ICAgICBicmVhazsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGNhc2UgSW50NTJS
ZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBK
U1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGI2NTE1ZDhi
NzIxOS4uYWRjODA2YWEyMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMy
X3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUqKTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5
cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3Rl
cmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRB
cnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRp
ZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUq
LCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMy
KQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2Jh
bFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOwor
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5n
dGhBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5m
b0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0
MzUsNiArMTQ0Miw5IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlw
ZWRBcnJheUlzRGV0YWNoZWRJZk91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklU
Q29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMpOwogICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CiAgICAgdm9p
ZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSopOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFy
cmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8
SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHBy
ZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBi
YXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNv
bnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRh
Rm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcgQEAg
cHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3Ug
YSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRz
IHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1z
aGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFu
ZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcgKzI0
ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdp
dmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4
IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3UgYSBz
dHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBoaWdo
IDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJP
cGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmlu
ZGV4IDZlZmJjZWRkYmMwYS4uNGVkNzU5ZjE5MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxMzQsNiArMjEz
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBj
b25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9u
U2NvcGVkQXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlW
aWV3KCkpOwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2RlKCku
dHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAg
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBAIC0z
NTM4LDYgKzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIC8vIFdlIGRvIG5vdCBz
dXBwb3J0IHR5cGVkIGFycmF5cyBsYXJnZXIgdGhhbiAyR0Igb24gMzItYml0IHBsYXRmb3Jtcy4K
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMzYyMCw2ICszNjI2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggZTEzNWZkNTM0OGU4Li5jZTQwMmNjMjBjOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
OTQsNiArMjY5NCw4OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9k
ZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgIH0gfQogfQogCisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOworICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFy
cmF5VHlwZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1
cmUuZ2V0KCkpOworCisgICAgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHNpemUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKKworICAg
IGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBl
LCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
bm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgbV9qaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1BWF9BUlJB
WV9CVUZGRVJfU0laRSA8ICgxdWxsIDw8IDUyKSwgInRoZXJlIGlzIGEgcmlzayB0aGF0IHRoZSBz
aXplIG9mIGEgdHlwZWQgYXJyYXkgd29uJ3QgZml0IGluIGFuIEludDUyIik7CisgICAgc3RyaWN0
SW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQ
UlRlbXBvcmFyeSB2ZWN0b3IodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IGRhdGEodGhpcyk7CisK
KyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHZlY3RvckdQUiA9
IHZlY3Rvci5ncHIoKTsKKyAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7CisgICAgQVNT
RVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKKyAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BS
KTsKKyAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRhdGFHUFIpOworCisgICAgR1BSUmVnIGFycmF5
QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9m
ZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVk
QXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIp
OworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRh
R1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRh
dGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0
YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShB
Uk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5
dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxs
cHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJN
NjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7Cisg
ICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVz
dWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5vZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAg
LTQzNzUsNiArNDQ1OCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7
CiAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworI2Vs
c2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAg
ICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRl
QnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDkzLDYgKzQ1ODQsMTUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEFzSW50NTIobm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90
eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTU1ODMsNyArNTY4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0
Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFk
ZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywg
SlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCkBAIC01Nzg0LDcgKzU4ODQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnpl
cm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6
ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6
ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7
CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNr
SG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggNWY1MWYyMjUxMDRmLi4xZTE0MDA1MDRjYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcApAQCAtMjc5LDEwICsyNzksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAg
ICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToK
ICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAg
ICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZz
ZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1
dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAg
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZToKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2Fz
ZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4uYzk5MGQ1OWNiYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFs
bG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRl
cmZseToKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAg
Y2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKQEAgLTM5MSw2ICszOTIs
NyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgogICAgIGNhc2UgQ1BVSW50cmluc2lj
OgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRBcnJheUxlbmd0aEFzSW50
NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBj
YXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggNDNkMjZlODNlOTY4Li40ZmNlNTEyMjQ4NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMjUsNiAr
MTAyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAg
ICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoQXNJbnQ1
MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aEFzSW50NTIoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAg
ICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MTc1LDYgKzExODAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOgorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgICAgICBjb21waWxl
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCk7CisjZWxzZQorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90
eXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODQwLDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fb3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0RXhjZXB0Q2FzdGluZ1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0
ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0
ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2Fz
dGVmdWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVs
bCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00ODQ2LDcgKzQ4NTgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwg
bm90TnVsbCk7CiAKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0
ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwo
dmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0
cigpKSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwp
KTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAt
NDg2Niw5ICs0ODc4LDIyIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAK
LSAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAK
KyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0Q2FzdGlu
Z1Jlc3VsdCgpOworICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsK
KyAgICB9CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdENhc3RpbmdSZXN1bHQoKTsKKyAg
ICAgICAgc2V0U3RyaWN0SW50NTIocmVzdWx0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQg
Y29tcGlsZUdldFByb3RvdHlwZU9mKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7
CkBAIC01MDU0LDggKzUwNzksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFy
cmF5VmlldygpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoCi0gICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1f
aGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgTFZhbHVl
IGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVxdWFs
KGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSkpKTsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsZW5n
dGgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTUwNjQsNiArNTA5MCwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisg
ICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7
CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgo
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpA
QCAtODE2OSw5OCArODIwMiwyMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEludDMyVXNlOiB7
CiAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVu
dGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93SW50
MzIobV9ub2RlLT5jaGlsZDEoKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5v
dWdoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7Ci0K
LSAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBtX291dC5hYm92ZShz
aXplLCBtX291dC5jb25zdEludDMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSks
Ci0gICAgICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShzbWFsbEVub3VnaENh
c2UpKTsKLQotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGJ5dGVT
aXplID0KLSAgICAgICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4dFB0cihzaXplKSwg
bV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKLSAgICAg
ICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7Ci0gICAgICAgICAg
ICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0
LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAotICAgICAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRv
ckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwg
c2xvd0Nhc2UpOwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxs
KGFsbG9jYXRvciwgc2xvd0Nhc2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzcGxhdFdv
cmRzKAotICAgICAgICAgICAgICAgIHN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50
MzJaZXJvLAotICAgICAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0
ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMpKSksCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50
NjRaZXJvLAotICAgICAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMpOwot
Ci0jaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUg
c2l6ZVB0ciA9IG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkp
OwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3Jh
Z2UpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemVQdHIsIEIzOjpW
YWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAg
ICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIo
KSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZSA9IGF1dGhl
bnRpY2F0ZTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgorICAgICAgICAgICAgTFZhbHVlIHNpemUg
PSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFn
ZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOwotICAg
ICAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgewotI2RlZmluZSBUWVBFRF9BUlJBWV9U
WVBFX0NBU0UobmFtZSkgXAotICAgICAgICAgICAgY2FzZSBUeXBlICMjIG5hbWU6IFwKLSAgICAg
ICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJy
YXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xV
RElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQotI3VuZGVmIFRZUEVEX0FSUkFZ
X1RZUEVfQ0FTRQotICAgICAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6Ci0gICAgICAgICAgICAg
ICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJl
LCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihzaXpl
LCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKLSAg
ICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSks
IGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgbXV0YXRvckZlbmNlKCk7Ci0gICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7Ci0gICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgTFZhbHVlIHN0b3Jh
Z2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdl
KTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGNhc2UgSW50NTJS
ZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1Bh
dGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxv
Y2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRB
cnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUu
Z2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93
U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAg
ICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KKyNl
bmRpZgogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBhcmd1
bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAKQEAgLTgyNzcsNyArODIzMywx
MDAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAgIHsKKyAgICAgICAgTEJh
c2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKKworICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShzaXplNjRCaXRzLCBtX291
dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCisgICAgICAg
ICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOworCisgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNl
LCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRo
ZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgICAgIHN0
YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNp
emVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9CisgICAgICAgICAgICBtX291
dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFy
cmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgp
IHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAorICAgICAgICAgICAgICAg
IG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAorICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCku
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAg
ICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nh
c2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBzdG9yYWdlLAorICAgICAg
ICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9v
dXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKKyAgICAgICAgICAgIG1f
b3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMp
OworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOworICAg
ICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7CisgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRCaXRzLCBCMzo6VmFsdWVSZXAoQjM6
OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUt
PnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQ
dHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAgICB9CisjZW5kaWYKKwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdl
KTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAg
c3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NBU0Uo
bmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAgICAgICAgICAgZmFzdFJl
c3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1f
b3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJB
WV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCisgICAgICAgIGNhc2Ug
VHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmpl
Y3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAgICAgICBtX291dC5zdG9yZTY0KHNpemU2NEJp
dHMsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBm
YXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAg
ICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBt
X291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAg
ICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0u
ZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RH
UFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRW
YWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CkBAIC0xNDY1Niw2ICsxNDcwNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBhcmUg
MzItYml0cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0d2Vl
biBiYXNlK2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZhbHVl
IGJhc2UsIExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBBYnN0
cmFjdEhlYXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxpbmdM
aW1pdCA9IDEwOwpAQCAtMTU1OTEsNyArMTU2NDIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERh
dGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVl
IGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291
dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAg
ICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29u
c3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyArMTU3ODUsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEo
KTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2Fk
MzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
KTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFW
aWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBp
bmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEu
Ynl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4
VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTcyMzYs
NyArMTcyODcsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsm
XShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChr
aW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2l6
ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
CisgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkNjQoYmFzZSwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB1bnRh
Z0FycmF5UHRyKHRhZ2dlZFB0ciwgc2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gcHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKaW5kZXggYTk0MjAw
OTNmNTI5Li5lZDhmZjczZTFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQu
aApAQCAtMzI5LDYgKzMyOSw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbm9uTmVnYXRpdmUzMihM
VmFsdWUgbG9hZEluc3RydWN0aW9uKSB7IHJldHVybiBsb2FkSW5zdHJ1Y3Rpb247IH0KICAgICBM
VmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxv
YWQzMihwb2ludGVyKTsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShMVmFsdWUgYmFz
ZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDMyKGJhc2UsIGZpZWxk
KTsgfQorICAgIExWYWx1ZSBsb2FkNjROb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJz
dHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDY0KGJhc2UsIGZpZWxkKTsgfQogCiAgICAg
TFZhbHVlIGVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKICAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVl
LCBMVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5z
aWNFbWl0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRl
ci5jcHAKaW5kZXggZjc4NmY3NjUxYTYwLi43M2Q5OWUxNzE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgzLDIzICs4MywzMiBA
QCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogCiAgICAgc3dpdGNoIChpbnRyaW5zaWMoKSkgewog
ICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogeworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAg
ICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0
YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHZhbHVlR1BSKTsKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJl
Z3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAg
ICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlOwotCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGUpID4gMSkKKyAgICAgICAgICAgIGppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxl
bWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQ
UiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UK
ICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4g
dXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3ZSBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRl
TGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgotICAgICAgICAgICAgaml0LmxzaGlmdDMy
KHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0
Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBh
biBpbnQzMi4KKyAgICAgICAgICAgIGppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVu
dFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAgICAgICAgIH0KLQogICAgICAgICBqaXQuYm94SW50
MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwLDggKzEzOSwxMiBAQCB2b2lkIEludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2
YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAor
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1
ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAg
ICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3Rh
dGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZDdkZjdjYjhlODc1Li41ZDZiMGE4NWE0
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
OTM3LDEwICs5MzcsOCBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdQogICAgICAgICB1aW50MzJf
dCBpID0gKmluZGV4OwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkgewotICAgICAgICAg
ICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7CisgICAgICAgICAg
ICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCBhcnJheVByb2Zp
bGUpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGFycmF5UHJvZmlsZSkKICAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91
dE9mQm91bmRzKCk7CkBAIC0yMzQxLDE3ICsyMzM5LDE3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQzMl90PiBp
bmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc0ludDMyKCkpIHsKLSAgICAgICAgaW50MzJfdCBpID0g
KmluZGV4OworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlw
dC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsK
ICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgewotICAgICAgICAgICAgaWYgKGkg
Pj0gMCAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAg
IGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4
KGdsb2JhbE9iamVjdCwgaSkpOwogICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkKICAgICAg
ICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0
SW5kZXhRdWlja2x5KHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFs
dWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBN
YXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMjM3MSw4ICsyMzY5LDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlm
IChpID49IDApCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1
ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkp
OwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2Vs
bCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgKaW5kZXggNDFjNzFiNjAwNDRlLi5lNzZkYWRhMGQzMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAg
LTE0OSw2ICsxNDksMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlm
CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJH
RV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURf
QVJSQVlTIDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9B
U01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCA0MmVmYjcxYzRhNjQuLmEzODg0MjYzYjFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ2
LDggKzEwNDYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQ
cm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAg
ICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShp
LCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAg
ICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTY5LDE0
ICsxMTY5LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQog
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1f
cHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0
ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFN
b2RlLmlzU3RyaWN0KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOwogICAgIAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9
ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlm
IChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAg
b2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGlmICghb2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVl
LCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwg
aXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggZGJjNDcwMDNjY2JmLi5mZmE1YzBhN2VlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcs
MTAgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9
IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1
cmVQb2ludGVyCiBlbmQKIAoraWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgY29uc3QgU21hbGxU
eXBlZEFycmF5TWF4TGVuZ3RoID0gY29uc3RleHByIEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVk
QXJyYXlNYXhMZW5ndGgKK2VuZAorCiBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCA9IGNvbnN0ZXhwciBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbAogCiBpZiBYODZfNjQg
b3IgWDg2XzY0X1dJTiBvciBBUk02NCBvciBBUk02NEUgb3IgUklTQ1Y2NApAQCAtMTMwMCw3ICsx
MzA0LDcgQEAgbWFjcm8gYXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwg
bWV0YWRhdGEsIHNjcmF0Y2gpCiAgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZUFuZE1p
c2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKLW1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShi
YXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzbG93
UGF0aCkKK21hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0
QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRo
KQogICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4g
VGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlND
ZWxsOjptX3R5cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpA
QCAtMTMxMSwxMyArMTMxNSwyNyBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5k
ZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFS
TTY0RQogICAgICAgICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0g
dDcKLSAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5n
dGgKLSAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEg
SlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgIyBXZSBo
YXZlIHRvIHNpZ24tZXh0ZW5kIGluZGV4IGhlcmUsIHNvIHRoYXQgdGhlIGNvbXBhcmlzb24gd2l0
aCBsZW5ndGggd2lsbCBhbHNvIGNhdGNoIGFueSBuZWdhdGl2ZSB2YWx1ZQorICAgICAgICBzeGky
cSBpbmRleCwgaW5kZXgKKyAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAg
ICBlbHNpZiBKU1ZBTFVFNjQKKyAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVu
dGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVz
ZWQgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICAjIFdlIGhhdmUgdG8gc2lnbi1leHRlbmQg
aW5kZXggaGVyZSwgc28gdGhhdCB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCB3aWxsIGFsc28g
Y2F0Y2ggYW55IG5lZ2F0aXZlIHZhbHVlCisgICAgICAgIHN4aTJxIGluZGV4LCBpbmRleAorICAg
ICAgICBicWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93
UGF0aAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlv
bmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQg
b24gb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAogICAgIGVuZAogCisgICAgaWYgTEFSR0VfVFlQ
RURfQVJSQVlTCisgICAgICAgICMgSWYgd2UgZXZlciBkZWNpZGUgdG8gc3VwcG9ydCBsYXJnZSB0
eXBlZCBhcnJheXMgZm9yIDMyLWJpdCBwbGF0Zm9ybXMgd2UnZCBoYXZlIHRvIGRvIHNvbWV0aGlu
ZyBoZXJlLgorICAgICAgICBicWJlcSBpbmRleCwgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoLCAu
c21hbGxUeXBlZEFycmF5CisgICAgICAgIHNldExhcmdlVHlwZWRBcnJheSgpCisuc21hbGxUeXBl
ZEFycmF5OgorICAgIGVuZAorCiAgICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9y
W2Jhc2VdLCB0MwogICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5ndGgsIGJhc2UsIHNjcmF0Y2gp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMzY2MTZhNjk1YjBmLi41Y2FmMzE4YzNlNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCkBAIC0xNjY5LDcgKzE2NjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBn
ZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91Ymxl
R2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQx
LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIG1hY3JvICgpIGVuZCwg
Lm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZmJkYmE2OGUwZjMwLi44
MjM1N2ZhYzMzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3MTMsMTYgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gy
KQogICAgIGVuZAogCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIG1hY3JvIHNl
dExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAgICBzdG9yZWIgMSwgT3BHZXRCeVZhbDo6TWV0
YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAg
IGVuZAorICAgIGVsc2UKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAg
ICAgICAgIGNyYXNoKCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwg
dDIpCiAKICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3NjMsNyArMTc3Myw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRT
dG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFs
LCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlw
ZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwg
c2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCmluZGV4IGM5YjhmMmE3MTkx
ZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQq
KT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKQogICAgIHJldHVy
biBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAotU2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXpl
LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitTaGFyZWRBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAg
ICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1Y3RvcihXVEZNb3ZlKGRlc3Ry
dWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpAQCAtNjgsNyArNjgsNyBAQCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMm
JiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlzKTsKIH0KIAotQXJyYXlCdWZmZXJD
b250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5C
eXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorQXJyYXlC
dWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6
ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAg
ICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZUlu
Qnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCit2b2lkIEFycmF5QnVmZmVy
Q29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7Ci0gICAgLy8gRG8gbm90
IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwgc2l6ZS4KLSAgICBpZiAobnVtRWxl
bWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVt
ZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVt
ZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSB7Ci0gICAg
ICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgQ2hl
Y2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsKKyAgICBzaXplSW5CeXRlcyAqPSBl
bGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVzLmhhc092ZXJmbG93ZWQoKSB8fCBz
aXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSB7CisgICAgICAgIHJl
c2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2l6ZV90IHNpemVJbkJ5dGVzID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVs
ZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXM7
CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAg
IGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRpb25TaXplID0gMTsgLy8gTWFr
ZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRoaW5nLCBidXQgbm90IHRvbyBt
dWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZlciBpcyBkZXRhY2hlZC4KIAog
ICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUs
IGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRhLCBzaXplSW5CeXRl
cyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMudmFsdWUoKSk7CiAg
ICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEz
NCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQogICAgIGlmIChwb2xpY3kgPT0g
WmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRhLCAwLCBhbGxvY2F0aW9uU2l6ZSk7
CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7CisgICAgbV9zaXplSW5CeXRlcyA9
IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zaXplSW5CeXRlcyA8
PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1Y3RvciA9IEFycmF5QnVmZmVy
OjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAgLTE3OCw3ICsxNzYsNyBAQCB2
b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJheUJ1ZmZlckNvbnRlbnRzJiBv
dGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVs
ZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMTkxLDcgKzE4
OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlciYg
b3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhl
ci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVM
ZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUoc291cmNlLCBieXRlTGVuZ3Ro
KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBAQCBSZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogLy8g
Q3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4gdGhhdCBjYXNlLCB0aGUgbWVt
b3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9tIHRoZSBjYWdlLgotUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
QWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBBU1NF
UlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6OmNvbnRhaW5zKGRhdGEpICYm
IEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSkgKyBi
eXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJvbUJ5dGVzKGRhdGEsIGJ5dGVM
ZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSk7CkBAIC0y
MjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRl
ZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QKIC8vICAgbG9uZ2VyIGNhZ2Vk
LCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5cGVkIGFycmF5IHR5cGVzIHRo
YXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBkaWZmZXJlbnRseS4KIC8vIC0g
V2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwg
dW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0
cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNv
bnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEgJiYgIUdpZ2FjYWdlOjppc0Nh
Z2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAgICBHaWdhY2FnZTo6ZGlzYWJs
ZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcgQEAgUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29udGVudHMpKTsKIH0KIAotUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6ZSk7CiB9CkBAIC0yMzksNyAr
MjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKEFycmF5
QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIu
Ynl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNp
emVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CiAg
ICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlCdWZmZXJDb250ZW50
czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQg
Ynl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RGTW92ZShjb250ZW50cyksIHNv
dXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlv
blBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoc2l6
ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9
IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwogICAgIGlm
ICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVMK
ICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250
ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYm
IGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewotICAg
IEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1dG8gYnVmZmVyID0gYWRvcHRS
ZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkpOwotICAgIG1lbWNweShidWZm
ZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBpZiAoYnl0ZUxlbmd0aCkgewor
ICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBz
b3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1SZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlh
bGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAg
QXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0ZShu
dW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwpAQCAtMjkxLDcgKzI5MSw3IEBA
IEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMp
CiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNp
Z25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1
ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCkKIHsKICAgICBBU1NFUlQobGVm
dCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAxLDkgKzMwMSw5IEBAIHVuc2ln
bmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNp
Z25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNs
YW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90IEFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0g
Ynl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOwog
ICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0aCArIGluZGV4
OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKQEAgLTMx
OSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3Vi
bGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENsYW1wZWRJbmRleChjbGFtcElu
ZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBl
bmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFt
cGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25zdAogewotICAgIHVuc2lnbmVk
IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgc2l6ZV90IHNpemUg
PSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAgYXV0byByZXN1bHQgPSBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVn
aW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJlc3VsdC0+c2V0U2hhcmluZ01v
ZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLjA2NDNhZDdiYjQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksMTQgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorI2RlZmluZSBN
QVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxzZQorLy8gQmVjYXVzZSB3ZSBh
cmUgdXNpbmcgYSBVQ1BVUmVnaXN0ZXIgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJy
YXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisv
LyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1aXRl
IG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1bGF0
ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9y
eSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVz
LgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBj
bGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNTgsNyBAQCB1c2luZyBQYWNr
ZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNr
PHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAgIHZv
aWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0
ZXMpOyB9CkBAIC02MCwxNCArNjcsMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9
IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBE
YXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24g
bV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90IG1f
c2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250
ZW50cyYmKTsKQEAgLTc5LDcgKzg2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5z
aWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAg
IAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApA
QCAtOTQsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9
OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxv
Y2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlh
bGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQg
dHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExMiwyOCBAQCBw
cml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cisg
ICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1Ymxp
YyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlC
dWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBi
eXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlu
bGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsKICAg
ICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5
QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBk
b3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVu
c2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVm
ZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25z
dDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigp
OwpAQCAtMTYxLDEyICsxNjgsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1
Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwg
dW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25z
dCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJh
eUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJs
ZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRv
dWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIHNpemVf
dCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBzaXpl
X3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7CiAKICAg
ICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMTk5LDcgQEAgY29uc3Qg
dm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRh
dGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6
ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250
ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxMiw3IEBAIGJvb2wgQXJyYXlCdWZm
ZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJ
bkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBzY2Fs
ZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1cm4g
c2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsK
KyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAogdm9p
ZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDczNzIyNzQ1MzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJh
eUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRl
T2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9ieXRl
TGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQog
ewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZz
ZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zm
c2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uYjZiYzcyMTc5MmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkg
Y29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5
dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFj
aGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lz
RGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2
ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlm
eUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisg
ICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNl
dCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRT
aXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVu
IHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAg
ICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNp
emUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFu
IEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJS
YW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90
IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9mZnNl
dCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVuc2ln
bmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNpemU7
CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9m
ZnNldCkgLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5n
RWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZl
clZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAK
IHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5s
aW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsK
KyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zm
c2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBi
b29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3Ro
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7
CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
ZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHpl
cm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7
Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAg
ICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5z
aWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1Jh
bmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAg
ICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJh
eSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJv
bSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNv
bnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNl
dCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1l
bnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9m
ZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2ln
bmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7
CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zm
c2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5n
dGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQg
KiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0
aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVm
ZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVja2Vk
PHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IGFkanVzdGVkT2Zmc2V0ID0gKm9mZnNldDsKKyAgICAg
ICAgYWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAgICBhZGp1c3RlZE9mZnNldCAr
PSBhcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3RlZE9mZnNldC5oYXNPdmVyZmxv
d2VkKCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5ieXRlTGVuZ3RoKCkpCisg
ICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCk7CisgICAgICAgIHNp
emVfdCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkg
LyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0Vs
ZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNl
dCA6IDMxOworI2lmIENQVShKU1ZBTFVFNjQpCisgICAgdWludDY0X3QgbV9ieXRlT2Zmc2V0IDog
NjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNldCA6IDMxOworI2VuZGlmCiAgICAg
Ym9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9ieXRlTGVuZ3RoOworICAg
IHNpemVfdCBtX2J5dGVMZW5ndGg7CiAKICAgICB1c2luZyBCYXNlQWRkcmVzcyA9IENhZ2VkUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAvLyBUaGlzIGlz
IHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUg
b2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJy
YXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZm
ZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHNpemVfdCBieXRlT2Zmc2V0
KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVP
ZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAv
LyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJU
aGFuT3JFcXVhbChieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRlTGVuZ3RoKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFz
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJh
c2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgo
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5n
ZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lk
KiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAg
IGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBk
YXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0
YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZz
ZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZz
ZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNl
QWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0
ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojpn
ZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5z
aWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQp
CiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9m
ZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZz
ZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJh
bmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
Ynl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGluYXRpb24s
IGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1Jh
bmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKIHsKLSAg
ICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsg
cmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBy
YW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBv
ZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVP
ZmZzZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zmc2V0LCAwLCBy
YW5nZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFycmF5QnVmZmVy
Vmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGludCBzdGFydCwgaW50IGVuZCwg
dW5zaWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQot
ewotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBp
ZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAg
ICAgIGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7
Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAg
ICBlbmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBz
dGFydDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAq
bGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCA2ODgzYTE3YzQ3
MmQuLmQzNjI0NTBhMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXRvbWljc09iamVjdC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmFs
aWRhdGVBdG9taWNBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBK
U0FycgogICAgICAgICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4VmFsdWUudG9JbmRleChnbG9i
YWxPYmplY3QsICJhY2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCAwKTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgo
KSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOworCiAgICAgaWYgKGFjY2Vzc0lu
ZGV4ID49IHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBvdXQgb2YgYm91bmRzIGZvciBh
dG9taWMgYWNjZXNzLiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2NGFmMi4uZmJjOTg0N2QyZDVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMy
LDIwICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgIDogQXJyYXlC
dWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0K
IAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVf
dCBieXRlTGVuZ3RoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdURk1v
dmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZpZXc+
IERhdGFWaWV3OjpjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5
dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1v
dmUoYnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uMzQwMjY1NDEwMzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZl
clZpZXcgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZp
ZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmll
dz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVf
dCBsZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlC
dWZmZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5h
bApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAo
SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRsZUVu
ZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdldChzaXplX3Qgb2Zmc2V0LCBi
b29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAg
IGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRl
TGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29sIGxp
dHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQoc2l6ZV90JiBv
ZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0LCBsaXR0bGVF
bmRpYW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMpCkBAIC02OCw3
ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LSAgICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFu
LCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KHNpemVfdCBvZmZzZXQsIFQg
dmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihU
KSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uZWUxZmZkMmYy
ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMywxNSArMzMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDog
cHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IGNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNU
eXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNy
ZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5
Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRp
YWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOwogICAgIAogICAg
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJlc3MoKSk7IH0KICAgICAKQEAgLTY1
LDI2ICs2NSwyNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsgemVyb1Jh
bmdlKDAsIGxlbmd0aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Cisg
ICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRlTGVuZ3RoKCkgLyBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUgaXRlbShzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAg
ICAgcmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KHVuc2ln
bmVkIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXQoc2l6ZV90IGluZGV4
LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2lu
ZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7CiAgICAgfQogCi0gICAg
dm9pZCBzZXROYXRpdmUodW5zaWduZWQgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFs
dWUpIGNvbnN0CisgICAgdm9pZCBzZXROYXRpdmUoc2l6ZV90IGluZGV4LCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtp
bmRleF0gPSB2YWx1ZTsKQEAgLTEwMCwxNiArMTAwLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBj
aGVja0luYm91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25zdAogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAgIHJl
dHVybiAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPD0g
bGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zm
c2V0ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW5P
ckVxdWFsKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAgICAgCi0gICAg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsK
LSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQsIGlu
dCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBm
aW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsKQEAgLTExOCw3
ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAgIEdlbmVyaWNU
eXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBhZTViZGQ4YzZh
MzEuLjU0Mjk4MGFlNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxMyAr
MzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygKLVJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIp
LCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7
CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRl
KGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAg
UmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJy
YXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXks
IGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAg
UmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZShzaXplX3Qg
bGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShsZW5n
dGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZmZXIpCkBA
IC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAgIGlm
ICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEwMSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRl
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0g
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CkBAIC0xMDksNyArMTEwLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIg
PQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2IEBAIEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0
aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJh
cnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5n
dGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgb2Zmc2V0
LCBsZW5ndGg7Ci0gICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIHRoaXMt
Pmxlbmd0aCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0g
cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBjbGFtcE9m
ZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVPZmZzZXQoKSwg
Jm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwg
bGVuZ3RoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJyYXlCdWZmZXJW
aWV3KiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5j
cHAKaW5kZXggODllYWViZDNjMmNjLi5mNzNiYjFlYzkwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8gPSB7CiB9Owog
CiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29u
dGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2
ZWN0b3IpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVjdG9yKHZlY3Rv
ciwgbGVuZ3RoKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQsNyBAQCBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgK
IH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVu
Z3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUsCiAgICAgSW5pdGlhbGl6YXRp
b25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwgbV9sZW5ndGgo
bGVuZ3RoKQpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0aGFuIDJHQi4K
LSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpIC8gZWxlbWVu
dFNpemUpCisgICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92ZXJmbG93PiBzaXplID0gbGVuZ3Ro
OworICAgIHNpemUgKj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUuaGFzT3ZlcmZsb3dlZCgp
IHx8IHNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19j
YXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdh
Y2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOworCisg
ICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgc2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQogICAg
ICAgICByZXR1cm47CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNldCh2
ZWN0b3IoKSwgMCwgc2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7CisgICAg
dm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAgIAog
ICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlwZWRB
cnJheTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9u
Q29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0
cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwg
bV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkKQEAgLTEx
NCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQog
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKQEAgLTIz
OCw5ICsyMzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNUeXBlIHR5
cGUpCiAgICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlwZV07CiB9
CiAKLXVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKK3NpemVf
dCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoKCk7CisgICAgcmVzdWx0
ICo9IGVsZW1lbnRTaXplKHR5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOworI2Vs
c2UKKyAgICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVyZmxvdyBpcyBhbHJlYWR5IGNoZWNrZWQgaW4g
dGhlIGNvbnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRkIHRoZSBleHRyYSBzYW5pdHkgY2hlY2sgd2hl
biBhc3NlcnRzIGFyZSBlbmFibGVkLgogICAgIHJldHVybiBsZW5ndGgoKSAqIGVsZW1lbnRTaXpl
KHR5cGUoKSk7CisjZW5kaWYKIH0KIAogQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3Ojpz
bG93RG93bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2Nyw3ICsyNzQsNyBAQCBBcnJheUJ1ZmZlciog
SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3Ro
KCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CiAKICAgICBz
d2l0Y2ggKG1fbW9kZSkgewogICAgIGNhc2UgRmFzdFR5cGVkQXJyYXk6IHsKQEAgLTMxNiw3ICsz
MjMsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2li
bHlTaGFyZWRJbXBsKCkKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKLSAgICB1bnNp
Z25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpcy0+
bGVuZ3RoKCk7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBc
CiAgICAgY2FzZSB0eXBlICMjIEFycmF5VHlwZTogXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggZGQwMWY3ZjgyYTUzLi5kYTZk
ZDBiZDc1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGZhc3RTaXplTGltaXQgPSAxMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGZhc3RTaXplTGltaXQgPSAxMDAwOwogICAgIHVzaW5nIFZlY3RvclB0ciA9IENhZ2VkQmFycmll
clB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAKICAgICBzdGF0
aWMgdm9pZCogbnVsbFZlY3RvclB0cigpCkBAIC0xMTcsMTAgKzExNywxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBudWxsLnJhd0JpdHMoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHNp
emVfdCBzaXplT2YodWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkKKyAgICBz
dGF0aWMgc2l6ZV90IHNpemVPZihzaXplX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxl
bWVudFNpemUgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSkKLSAgICAgICAgICAgICYgfihz
aXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1
bHQgPSBsZW5ndGg7CisgICAgICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAgcmVz
dWx0ICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVzdWx0
LnZhbHVlKCkgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0
eSkKQEAgLTEzNiwyNSArMTM4LDI1IEBAIHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAg
IGVudW0gSW5pdGlhbGl6YXRpb25Nb2RlIHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07CiAg
ICAgICAgIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZN
JiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5p
dGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBD
b25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90
IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAog
ICAgICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5
cy4gSXQncyB1c2VkIGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlv
bkNvbnRleHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAg
ICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQq
IHZlY3Rvcik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rp
b25Db250ZXh0KAogICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAg
ICAgIAogICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0YVZpZXcgfTsKICAgICAgICAgQ29u
c3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgRGF0YVZpZXdUYWcpOworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAg
dm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVu
Z3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0
aDsgfQorICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0K
ICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQog
ICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5
OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3Ry
dWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9y
VHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgICAgIHNpemVf
dCBtX2xlbmd0aDsKICAgICAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0
ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAgIH07CkBAIC0xOTMsOCArMTk1LDggQEAgcHVibGljOgog
ICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7CiAgICAgaW5saW5lIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJheUJ1ZmZl
ciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1fdmVjdG9y
OwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICBUeXBl
ZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKaW5kZXggYjFlYTlkYTBmZTRjLi5mOTc3OThjYWI1ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTI5OCw2ICsyOTgsNyBAQCBw
dWJsaWM6CiAgICAgaW50MzJfdCB0b0ludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAg
dWludDMyX3QgdG9VSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0
b0luZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAg
ICBzaXplX3QgdG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBl
cnJvck5hbWUpIGNvbnN0OwogICAgIGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9i
amVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi4zYjNhODA5NjkzZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAt
NjksMTQgKzY5LDQ3IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpIHsKKworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0lu
dDMyKCk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhl
cnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworfQorCitpbmxp
bmUgc2l6ZV90IEpTVmFsdWU6OnRvVHlwZWRBcnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBn
ZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKKyAgICBpZiAoZCA8PSAtMSkgeworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAg
cmV0dXJuIGFzSW50MzIoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9J
bnQzMihkKSk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZX0JV
RkZFUl9TSVpFKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIg
dG9vIGxhcmdlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxsIG9m
IHRoaXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBvbiAx
PDwzMi4KKyAgICBzaXplX3Qgb3V0cHV0T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUgaW5wdXRPZmZz
ZXQgPSAwOworICAgIHNpemVfdCBpbnQzMk1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpOworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnQzMk1heCkpIHsK
KyAgICAgICAgb3V0cHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgICAgIGlucHV0T2Zmc2V0ID0g
aW50MzJNYXg7CisgICAgfQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3V0cHV0T2Zm
c2V0ICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNDOjp0b0lu
dDMyKGQgLSBpbnB1dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYy
LyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjkuLmRmZDZhNTExZDE5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0
Miw3IEBAIEpTRGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0
JiBjb250ZXh0LCBBcnJheUJ1ZmZlciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXpl
X3QgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBA
IEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVh
dGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewog
ICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCiti
b29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBz
aXplX3QsIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9i
YWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5oCmluZGV4IDJjNzg1ZTQ3NjExYS4uZWMyYWY2OTgyMzk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNyArMzUsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQXJyYXlCdWZmZXJWaWV3OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSAxOworICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IGVsZW1lbnRTaXplID0gMTsKIAogICAgIHN0YXRpYyBjb25z
dGV4cHIgVHlwZWRBcnJheUNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlID0gVHlwZWRBcnJheUNvbnRl
bnRUeXBlOjpOb25lOwogCkBAIC00NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIH0KIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBi
eXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVt
bXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4g
cGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2Ug
ZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVk
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0
aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09i
amVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcq
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3Qq
LCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNl
dEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBBcnJh
eUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsg
fQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4
IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSArMTM2
LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERh
dGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVk
IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0
LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxp
dHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0x
NDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0
YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUg
dmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgp
OworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChl
bGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVt
ZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBt
ZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVP
ZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRh
U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAg
dW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7Cisg
ICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwog
ICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0g
MykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1
ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgg
PSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8
fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNj
ZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi5lYTFlZjljMTNmYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZlRnJv
bVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xh
c3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVyZSog
UyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20gSlNP
YmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAgICBz
aXplX3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMgdGFr
ZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKKy8v
IFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdvcmRz
LiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1YWxs
eSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0YSBm
b3IKQEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAK
LSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
c2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICog
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRW
ZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAg
fQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3Vu
ZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwog
ICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQg
YWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhl
IHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVk
IGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRv
SlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
LCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNpemVf
dCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xl
bmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2ts
eTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNr
bHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3Rv
cigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRl
eFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
dmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBt
X2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAg
ICB2b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2ts
eVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsK
ICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0
b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxP
YmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2
ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUp
CisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFs
T2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVt
ZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUg
anNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRv
cj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9B
ZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFw
dG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5OCwy
MSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2FuQWNj
ZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGJv
b2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAg
ICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBv
ZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93
Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1
cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsKICAg
ICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJldHVy
bnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0aW9u
LgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmpl
Y3QqLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFsc2UK
ICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJvb2wg
c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2lnbmVk
IG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5cGU6
OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zm
c2V0LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlU
eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVuYW1l
IEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJlZlB0
cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAgLTMx
OCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVs
LCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlwZSgK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIHNp
emVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAorICAg
ICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAKICAg
ICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQgQXJy
YXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0OSw3
ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAgICAg
ICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFOKGFy
cmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uMzM2ZjFhZWUzZjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0Myw3ICsxNDMsNyBA
QCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5lZWRl
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xh
c3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50
LCBzaXplX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoT3B0KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgdW5z
aWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAgIGlm
IChsZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAg
ICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8K
ICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkgb2Yg
dGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmplY3Qq
IG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsKLSAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICBzaXplX3QgbGVuZ3RoOwogICAgICAgICBK
U0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChpc1R5
cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsK
QEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUudG9J
bmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gZmlyc3RW
YWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgp
KTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgfQog
CiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAxKSB7
CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRl
eChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChK
U0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFsdWUgaXMgcHJl
c2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAgICAgICAgSlNW
YWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAg
ICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgICAg
ICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpU
eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxl
bmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVHlwZWRBcnJh
eUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0g
VHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIzODc5
MmQxMC4uMGUwNDU2MTlmYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5jbHVk
ZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5n
dGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2LDcg
QEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rv
cikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJlLCBs
ZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZh
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksNyArMTAwLDcgQEAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpjcmVhdGVVbmluaXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJB
ZGFwdG9yPiogb3RoZXIsCisgICAgc2l6ZV90IG90aGVyT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBD
b3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyArMjE5LDcgQEAg
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlw
ZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3RpbmdCdWZmZXIo
KQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAmJiB2ZWN0b3Io
KSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5cGU6OkxlZnRU
b1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNl
dCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAg
ICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3Ro
ZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8vIE5vdyB3ZSBlaXRo
ZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAoMkIpLgogICAg
IGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3Ro
OyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAg
ICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRv
PEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNO
YXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIzOSwxMSBAQCBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAog
ICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1ZmZl
ciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUsIDMy
PiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsg
aS0tOykgeworICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJh
bnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9y
PigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBv
dGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTsp
CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlj
a2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNP
YmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENv
cHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9m
ZnNldCwgSlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0
aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xh
c3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJy
YXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1
cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5
cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUg
c2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIG90aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAg
ICAgICAgbGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAg
ICAKQEAgLTMxMiw5ICszMTMsMTAgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbkJvdW5kczx1bnNpZ25lZD4obGVuZ3Ro
ICsgb2JqZWN0T2Zmc2V0IC0gMSkpOwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlz
IGNhc2UuIEJ1dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmpl
Y3QtPmdldChnbG9iYWxPYmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9i
amVjdE9mZnNldCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBv
ZmZzZXQgKyBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5l
eGNlcHRpb24oKSB8fCAhc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAppbmRleCA0YzBlYmQxZjYxNjUuLmE5NzQ3MzczYzRmZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0Nl
bGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAorY2xhc3MgQXJyYXlQcm9maWxlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0
dGVyOwogY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGlj
OgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkp
IHsKLSAgICAgICAgICAgIHNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7
CisgICAgICAgIGlmICh0cnlTZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1l
dGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVu
c2lnbmVkKSBjb25zdDsKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
dW5zaWduZWQpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJh
eSh1bnNpZ25lZCwgQXJyYXlQcm9maWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJv
b2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0
ICszNDQsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5z
aWduZWQgaSkgY29uc3QKKworICAgIC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmls
ZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAg
ICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFy
cmF5UHJvZmlsZSA9IG51bGxwdHIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgaWYgKGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9m
aWxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAg
IGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBK
U1ZhbHVlKTsKLSAgICAgICAgCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFn
ZUluZGV4aW5nVHlwZShWTSYsIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0
cnVlIHRvIGluZGljYXRlIHN1Y2Nlc3MKKyAgICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkg
cHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZh
bnQKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpT
VmFsdWUsIEFycmF5UHJvZmlsZSopOworICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2
bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51
bGxwdHIpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRl
cmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2Ug
QUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgotICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRyeVNl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdiwgYXJyYXlQcm9maWxlKTsKICAgICAgICAg
Y2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAg
ICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBj
YXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNl
IEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkg
Pj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgY29u
dmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwg
aSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJM
RV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0
ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIodik7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xl
bmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAx
KTsKKyAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9V
QkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGlmICghdi5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29u
dGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9
IHYuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAg
ICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRl
eCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9
IHZhbHVlOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0
aEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAg
ICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAg
ICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUlu
ZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZs
eS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFi
dXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGlmIChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAg
ICAgIGlmIChpID49IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8
ICFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBl
KHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAK
KwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2
KQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgK
aW5kZXggNmUxYmIxYjU5ZjFlLi4wY2Y1MGI5OTUwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCBpKSBjb25zdAogICAgIH0KIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QK
K2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVu
c2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRj
aCAodHlwZSgpKSB7Ci0jZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAg
Y2FzZSBuYW1lICMjIEFycmF5VHlwZSA6XAotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpT
ICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyktPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7
Ci0gICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhD
QVNFX1RZUEVEX0FSUkFZX1RZUEUpCi0jdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIGlmIChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJh
eU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUpCisgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5
QmVMYXJnZVR5cGVkQXJyYXkoKTsKKyNlbHNlCisgICAgKHZvaWQpYXJyYXlQcm9maWxlOworI2Vu
ZGlmCiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFy
cmF5KHVuc2lnbmVkIGkpIGNvbnN0Ci17CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUg
Q0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKICAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBl
IDoge1wKQEAgLTUxMiw3ICs1MDYsNTAgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIH0KLSAgICAKKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4
UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYgdm0sIHVuc2lnbmVkIGksIEpT
VmFsdWUgdikKK3sKKyAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzLT5idXR0ZXJmbHko
KS0+YXJyYXlTdG9yYWdlKCk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB4ID0gc3RvcmFn
ZS0+bV92ZWN0b3JbaV07CisgICAgSlNWYWx1ZSBvbGQgPSB4LmdldCgpOworICAgIHguc2V0KHZt
LCB0aGlzLCB2KTsKKyAgICBpZiAoIW9sZCkgeworICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFs
dWVzSW5WZWN0b3I7CisgICAgICAgIGlmIChpID49IHN0b3JhZ2UtPmxlbmd0aCgpKQorICAgICAg
ICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAxKTsKKyAgICB9Cit9CisKK2lubGluZSBib29s
IEpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpT
VmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCit7CisgICAgc3dpdGNoICh0eXBl
KCkpIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorI2RlZmluZSBVUERBVEVfQVJSQVlf
UFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHtcCisgICAgICAgIGlmICgoaSA+IEFycmF5UHJv
ZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAg
ICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0g
d2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJy
YXlQcm9maWxlKSBkb3tcCisgICAgKHZvaWQpYXJyYXlQcm9maWxlO1wKKyAgICB9IHdoaWxlIChm
YWxzZSkKKyNlbmRpZgorI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAorICAg
IGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XAorICAgICAgICBhdXRvKiB0eXBlZEFycmF5ID0g
anNDYXN0PEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyk7XAorICAgICAgICBpZiAoIXR5cGVk
QXJyYXktPmNhblNldEluZGV4UXVpY2tseShpLCB2KSlcCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7XAorICAgICAgICB0eXBlZEFycmF5LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7XAorICAgICAg
ICBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpO1wKKyAgICAgICAgcmV0dXJu
IHRydWU7XAorICAgIH0KKyAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19E
QVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQorI3VuZGVmIENBU0VfVFlQRURfQVJSQVlf
VFlQRQorI3VuZGVmIFVQREFURV9BUlJBWV9QUk9GSUxFCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnZhbGlkYXRl
UHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGNlNzMwZjNiZjk2NS4uMDkxOWU3MjE4NmQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC04OTgsOCAr
ODk4LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdpdGhJbmRleChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBpZiAoYmFzZS0+aXNPYmpl
Y3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7Ci0gICAg
ICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpbmRleCkpCi0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGluZGV4KSk7Cisg
ICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGlu
ZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9
CiAKICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+Y2FuR2V0SW5k
ZXgoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBh
Z2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCmlu
ZGV4IGU4ZGMxYTMwYWVkZC4uMjM3MGQ5OGI3YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JV
RkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50
MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4NDgwMmU4NjAzYi4uZDExNzQ0Y2I1M2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTEwLTA1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3Nl
dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAg
ICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUyBmbGFnIHdoaWNoIGlzIGVx
dWl2YWxlbnQgdG8gVVNFX0pTVkFMVUU2NCwgaXQgcHJvdmVkIHVzZWZ1bCB0byB0ZXN0IHRoaW5n
cyBhbmQgY2F0Y2ggYnJlYWthZ2Ugb24gMzItYml0IHBsYXRmb3JtcyB3aXRob3V0IHJlbHlpbmcg
b24gRVdTLgorICAgICAgICBBbHNvIG1hZGUgc29tZSBvZiBDaGVja2VkQXJpdGhtZXRpYyBjb25z
dGV4cHIsIGFuZCBhZGRlZCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCBzaW5jZSBpdCBpcyBhIGNv
bW1vbmx5IHVzZWQgdGVzdCBpbiBBcnJheUJ1ZmZlciBhbmQgZWFzeSB0byBnZXQgd3JvbmcgaW4g
dGVybXMgb2Ygb3ZlcmZsb3cuCisKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaDoK
KyAgICAgICAgKFdURjo6aXNJbkJvdW5kcyk6CisgICAgICAgIChXVEY6OmNvbnZlcnRTYWZlbHkp
OgorICAgICAgICAoV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCk6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtVXNlLmg6CisKIDIwMjEtMTAtMDUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgIzI6IFdURjo6UmV0YWluUHRyPD4gYWxsb3dz
IGFzc2lnbm1lbnQgb2YgdHdvIHBvaW50ZXIgdHlwZXMgdGhhdCBhcmUgbm90IGFzc2lnbmFibGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCmluZGV4IGZmMTU2NWYxMWRlZC4uZWZhYjRhZDNi
YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDQsMTQgKzE0NCwxNCBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxUPj47
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1Rh
cmdldEJpZ2dlciA9IHNpemVvZihUYXJnZXQpID49IHNpemVvZihTb3VyY2UpLCBib29sIHRhcmdl
dFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNv
dXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1
Y3QgQm91bmRzQ2hlY2tlcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdh
eXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gdmFs
dWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKICAgICB9CiB9OwogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9v
bCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91
bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBp
bXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRv
IHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+
OjptaW4oKSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46
Om1heCgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5
cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9Owog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3Vu
ZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0
aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFdoZW4gY29udmVydGlu
ZyB2YWx1ZSB0byB1bnNpZ25lZCBTb3VyY2UsIHZhbHVlIHdpbGwgYmVjb21lIGEgYmlnIHZhbHVl
IGlmIHZhbHVlIGlzIG5lZ2F0aXZlLgogICAgICAgICAvLyBDYXN0ZWQgdmFsdWUgd2lsbCBiZWNv
bWUgYmlnZ2VyIHRoYW4gVGFyZ2V0OjptYXggYXMgU291cmNlIGlzIGJpZ2dlciB0aGFuIFRhcmdl
dC4KQEAgLTE2OCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUaGUgdW5zaWduZWQgU291cmNl
IHR5cGUgaGFzIGdyZWF0ZXIgcHJlY2lzaW9uIHRoYW4gdGhlIHRhcmdldCBzbyBtYXgoVGFyZ2V0
KSAtPiBTb3VyY2Ugd2lsbCB3aWRlbi4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19j
YXN0PFNvdXJjZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKSk7CkBAIC0xNzYs
NyArMTc2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0
LCBTb3VyY2UsIHRydWUsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRz
KFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAg
IHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4gewot
ICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVy
IG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Miw3ICsxOTIs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyBzaWduZWQgd2l0aCBncmVhdGVyIG9yIHNhbWUg
cHJlY2lzaW9uLiBJZiBzdHJpY3RseSBncmVhdGVyLCBpdCBpcyBhbHdheXMgc2FmZS4KICAgICAg
ICAgaWYgKHNpemVvZihUYXJnZXQpID4gc2l6ZW9mKFNvdXJjZSkpCkBAIC0yMDIsMTkgKzIwMiwx
OSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgdHJ1ZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyB1bnNpZ25lZCB3aXRoIGdyZWF0ZXIgcHJlY2lz
aW9uLgogICAgICAgICByZXR1cm4gdmFsdWUgPj0gMDsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lu
Qm91bmRzKFNvdXJjZSB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2
YWx1ZSkKIHsKICAgICByZXR1cm4gQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZT46OmluQm91
bmRzKHZhbHVlKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291
cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdl
dCYgb3V0cHV0KQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBU
YXJnZXQmIG91dHB1dCkKIHsKICAgICBpZiAoIWlzSW5Cb3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk5Niw2ICs5OTYsMTMgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gYm9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJn
cykKICAgICByZXR1cm4gY2hlY2tlZFByb2R1Y3Q8VD4oYXJncy4uLikuaGFzT3ZlcmZsb3dlZCgp
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzU3VtU21hbGxlclRoYW5PckVxdWFs
KFQgYSwgVCBiLCBUIGJvdW5kKQoreworICAgIENoZWNrZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+IHN1
bSA9IGE7CisgICAgc3VtICs9IGI7CisgICAgcmV0dXJuICFzdW0uaGFzT3ZlcmZsb3dlZCgpICYm
IHN1bS52YWx1ZSgpIDw9IGJvdW5kOworfQorCiB9CiAKIHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVy
ZmxvdzsKQEAgLTEwMTcsMyArMTAyNCw0IEBAIHVzaW5nIFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93
czsKIHVzaW5nIFdURjo6aXNJbkJvdW5kczsKIHVzaW5nIFdURjo6cHJvZHVjdE92ZXJmbG93czsK
IHVzaW5nIFdURjo6c3VtT3ZlcmZsb3dzOwordXNpbmcgV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JF
cXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDljOWY4MGUzZmQxYi4uNjBhYThhYzEyM2Y0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtVXNlLmgKQEAgLTE0Nyw2ICsxNDcsMTEgQEAKICNkZWZpbmUgVVNFX0JJR0lO
VDMyIDAKICNlbmRpZgogCisjaWYgVVNFKEpTVkFMVUU2NCkKKy8vIFdoZXRoZXIgdG8gc3VwcG9y
dCB0eXBlZCBhcnJheXMgPiAyR0IKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUyAxCisj
ZW5kaWYKKwogLyogRklYTUU6IFRoaXMgbmFtZSBzaG91bGQgYmUgbW9yZSBzcGVjaWZpYyBpZiBp
dCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBDYWxsRnJhbWUqICovCiAvKiBVc2UgX19idWlsdGluX2Zy
YW1lX2FkZHJlc3MoMSkgdG8gZ2V0IENhbGxGcmFtZSogKi8KICNpZiBDT01QSUxFUihHQ0NfQ09N
UEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQz
YjI3NjI2YzhjLi40M2FhNDM4ZTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAy
MS0xMC0wNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgcGFydHMg
b2YgV2ViQ29yZSB1c2UgVHlwZWRBcnJheXMsIGFuZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBt
YWRlIHRoZSBsZW5ndGgoKSBmdW5jdGlvbiBvbiB0eXBlZCBhcnJheXMgcmV0dXJuIHNpemVfdCBp
bnN0ZWFkIG9mIHVpbnQzMl90LgorICAgICAgICBJIGZpeGVkIGl0IHRyaXZpYWxseSBieSBSRUxF
QVNFX0FTU0VSVGluZyB0aGF0IHRoZSBzaXplX3QgZml0cyBpbiBhIHVpbnQzMl90IGFuZCB0aGVu
IGNhc3RpbmcgaXQuCisgICAgICAgIE5vIG5ldyB0ZXN0cyBmb3IgV2ViQ29yZSBhcyB0aGVyZSBp
cyBubyBpbnRlbmRlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5
RnJvbUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5u
ZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9t
YWluRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgor
ICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94Lmg6CisKIDIwMjEtMTAtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI4MzMzNSk6IE1vbWVudHVtIHNj
cm9sbGluZyBpcyBubyBsb25nZXIgbG9ja2VkIHRvIGFuIGF4aXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5kZXggY2I3ZTg0ZDQ1MzgzLi5i
MThkOGZkNmEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9C
dWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIGRlc3RpbmF0aW9uLAog
ICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7Cisg
ICAgc2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9
IHN0ZDo6bWluKGRlc3RpbmF0aW9uLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAg
Y29uc3QgZmxvYXQqIHNyYyA9IGNoYW5uZWxEYXRhLT5kYXRhKCk7CkBAIC0yMjYsNyArMjI2LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5uZWwoUmVmPEZsb2F0
MzJBcnJheT4mJiBzb3VyY2UsIHVuc2lnbmUKICAgICBpZiAoYnVmZmVyT2Zmc2V0ID49IGRhdGFM
ZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBk
YXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIHNpemVfdCBjb3VudCA9IGRhdGFMZW5ndGgg
LSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihzb3VyY2UuZ2V0KCkubGVuZ3Ro
KCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gc291cmNlLT5kYXRhKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcAppbmRleCA2YzFjOTQ0MDIyZWQuLmE5MjNhYzQ0ODAyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0x
OTYsOCArMTk2LDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0
YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogICAgIGRvRkZUQW5hbHlzaXNJZk5lY2Vz
c2FyeSgpOwogICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBsaW5lYXIgbWFnbml0dWRlIHRvIHVu
c2lnbmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gbWFnbml0
dWRlQnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VM
ZW5ndGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBsZW5ndGggPSBz
dGQ6Om1pbihtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCksIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3Ro
KCkpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGNvbnN0IGRvdWJsZSByYW5nZVNj
YWxlRmFjdG9yID0gbV9tYXhEZWNpYmVscyA9PSBtX21pbkRlY2liZWxzID8gMSA6IDEgLyAobV9t
YXhEZWNpYmVscyAtIG1fbWluRGVjaWJlbHMpOwogICAgICAgICBjb25zdCBkb3VibGUgbWluRGVj
aWJlbHMgPSBtX21pbkRlY2liZWxzOwpAQCAtMjI3LDcgKzIyNiw3IEBAIHZvaWQgUmVhbHRpbWVB
bmFseXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YShGbG9hdDMyQXJyYXkmIGRlc3RpbmF0aW9u
QXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKLSAgICB1bnNpZ25l
ZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+
ZmZ0U2l6ZSgpOwogICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5h
dGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29s
IGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJT
aXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKQEAgLTI1MSw3ICsyNTAsNyBA
QCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5
JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBmZnRTaXpl
ID0gdGhpcy0+ZmZ0U2l6ZSgpOwogICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXpl
LCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAg
ICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5w
dXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IGExYThmYTI5MjljYS4uNTRmMjExODVlZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEyNjMsOCArMTI2
Myw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoSW1hZ2VEYXRhVGFnKTsKICAg
ICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0aCgpKTsKICAgICAgICAgICAgICAgICB3cml0
ZShkYXRhLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmxl
bmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRh
LT5kYXRhKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNrZWQ8dWludDMyX3Q+IGRh
dGFMZW5ndGggPSBkYXRhLT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgd3JpdGUo
ZGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRhdGEoKSwg
ZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+Y29sb3JTcGFjZSgpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTEzMTEsOCAr
MTMxMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIHdyaXRlKEFycmF5QnVmZmVyVGFnKTsKLSAgICAgICAgICAgICAgICB3
cml0ZShhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNrZWQ8dWludDMyX3Q+IGJ5
dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICAgICAgICAgIHdy
aXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob2JqLT5p
bmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCBhNjZiMTkxZDY4NmQuLmU3OTIwNDJhZDY0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZShXZWJDb3JlOjpCbG9iJiBi
bG9iKQogCiAgICAgYXV0byBieXRlTGVuZ3RoID0gYmxvYi5zaXplKCk7CiAgICAgaWYgKCFieXRl
TGVuZ3RoKSB7Ci0gICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKDBVLCAx
KSwgMCwgMCk7CisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHNpemVfdD4oMFUpLCAxKSwgMCwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxCbG9iTG9hZGVyPihbdGhpc10oQmxv
YkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09C
b3guaAppbmRleCA4NzBiZGM4MGYzNTUuLmFkOGVjM2VmZTYwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAtNjMsNyArNjMsMTAgQEAgcHJv
dGVjdGVkOgogICAgIHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFImIHJldHVyblZhbHVlLCBWJiB2
aWV3LCB1bnNpZ25lZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5lc3MpCiAgICAgewogICAg
ICAgICBib29sIHJlYWRTdGF0dXMgPSBmYWxzZTsKLSAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVt
cGxhdGUgcmVhZDxUPihvZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0
YXR1cyk7CisgICAgICAgIHNpemVfdCBhY3R1YWxPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIFQg
dmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4oYWN0dWFsT2Zmc2V0LCBlbmRpYW5uZXNzID09
IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0lu
Qm91bmRzPHVpbnQzMl90PihhY3R1YWxPZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0ID0gYWN0dWFs
T2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWRTdGF0dXMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAK
</data>
<flag name="commit-queue"
          id="464176"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440336</attachid>
            <date>2021-10-05 23:26:23 -0700</date>
            <delta_ts>2021-10-11 12:16:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>236726</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
Y2UwMDcxMzQ2YjE4Li5hMzI2YjVhNGM4OTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMDUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmlnLXdhc20tbWVtb3J5IHRl
c3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00gYXQgMkdCLgorICAgICAgICBUaGV5IG5v
dyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWlsdXJlIGF0IDRHQisxLgorICAgICAgICBU
aGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZp
b3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUgdGhhdCB3YXMgY2F1c2luZyB0aGUgc3Bl
Y2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3duIChyZXN1bHRpbmcgaW4gdGhlIGdlbmVy
aWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29kZSkuCisgICAgICAgIEZpbmFsbHkgSSBt
YWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRmb3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBw
b3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRzLCBhbmQgSSBtYWRlIHRoZW0gb25seSBy
dW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQg
b2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZp
Y2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxhcmdlIHR5cGVkIGFycmF5cywgYW5kIGVz
cGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9NQVguCisKKyAgICAgICAgKiBzdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzOiBBZGRlZC4KKwogMjAyMS0x
MC0wNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlIGltcGxlbWVudGF0aW9uIG9mIF9fcHJvdG9fXyBuZWVkcyB0byBo
YW5kbGUgZ2V0X2J5X2lkX3dpdGhfdGhpcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVt
b3J5LWdyb3ctbm8tbWF4LmpzCmluZGV4IGViNDgwMjcxYWEyZS4uZjg2NTg5MzM2ZGNhIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCkBAIC0xLDQg
KzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlM
aW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAi
eDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQs
MTkgKzI1LDI1IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsK
LSAgICB0cnkgeworICAgIGxldCBtYXhTaXplID0gMHgxMDAwMDsKKyAgICB7CiAgICAgICAgIHZh
ciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwIH0pOwot
ICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXpl
IC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShtZW1v
cnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKICAgICAgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisgICAgfQorCisg
ICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBX
ZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7CisgICAgICAgIG1lbW9yeS5n
cm93KG1heFNpemUgLSAweDEwMDAgKyAxKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcg
VWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsKICAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91dCBv
ZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBXZWJB
c3NlbWJseS5NZW1vcnkuZ3JvdyBleHBlY3RzIHRoZSBncm93biBzaXplIHRvIGJlIGEgdmFsaWQg
cGFnZSBjb3VudCIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAgIGlmIChvaykK
ICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcwppbmRleCAxMWFhNWU1ZDI1NzEuLmRiZWYwNGQ5NjVm
NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMKQEAgLTEsNCArMSw1IEBA
Ci0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQg
b3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQi
KQorLy9AIHJ1bkRlZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUs
MjYgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRy
eSB7Ci0gICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlh
bDogMHgxMDAwLCBtYXhpbXVtOiAweDgwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93KDB4NzAw
MCk7CisKKyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgbWVt
b3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTog
bWF4U2l6ZSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAg
ICAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNl
OworICAgIHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5
KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplKzEgfSk7CisgICAgICAgIG1lbW9y
eS5ncm93KG1heFNpemUgKyAxIC0gMHgxMDAwKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhu
ZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsKICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91
dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBX
ZWJBc3NlbWJseS5NZW1vcnkgJ21heGltdW0nIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIikKICAg
ICAgICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAi
RXJyb3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9iaWctd2FzbS1tZW1vcnkuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
aW5kZXggZDhlN2ZiNjliNGJhLi44MGZmMDZiMjY3YWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1v
cnkuanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AIHNr
aXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJj
aGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0
KCkgewogCkBAIC0yNCwxNyArMjUsMjEgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotICAgIHZh
ciBvayA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVp
bnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4ODAwMCwgbWF4aW11
bTogMHg4MDAwIH0pLmJ1ZmZlcikpOworICAgIGxldCBtYXhTaXplID0gMHgxMDAwMDsKKyAgICB7
CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeSh7IGluaXRpYWw6IG1heFNpemUsIG1heGltdW06IG1heFNpemUgfSkuYnVmZmVyKSk7
CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0g
ZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJh
eShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogbWF4U2l6ZSsxLCBtYXhpbXVtOiBt
YXhTaXplKzEgfSkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsKICAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1v
cnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJs
eS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIikKICAgICAgICAgICAg
IHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJyb3I6IGRp
ZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1h
cnJheS1hbHdheXMtbGFyZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1hbHdheXMt
bGFyZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZjVlYTE2
ZDg1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1hbHdh
eXMtbGFyZ2UuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQg
b3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQi
KQorLy9AIHJ1bkRlZmF1bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sK
KyAgICByZXR1cm4gYXJyYXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOwor
ZnVuY3Rpb24gZ2V0QnlWYWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRl
eF07Cit9Citub0lubGluZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5k
ZXgsIHZhbHVlKQoreworICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0
QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24g
dGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5
KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJX
cm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsg
YWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXgg
PSAoMiAqIG9uZUdpZ2EpICsgaTsKKyAgICAgICAgdmFyIHZhbHVlID0gaSAlIDEwMDsKKyAgICAg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0ICE9IHZhbHVlKQorICAg
ICAgICAgICAgdGhyb3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3Vs
dCArICIgaW4gY2FzZSAiICsgc3RyaW5nKTsKKyAgICB9Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAz
ICogb25lR2lnYTsKK2xldCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4
QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcg
VWludDhBcnJheShmb3VyR2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3Qo
bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBl
ZEFycmF5LzNHQiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZl
bnR1YWxseS1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHkt
bGFyZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZWVlZGQw
MTRkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVu
dHVhbGx5LWxhcmdlLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1p
dGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2
LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKworZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkp
Cit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3Ro
KTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlb
aW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXks
IGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5l
KHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0
aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChh
cnJheSk7CisgICAgICAgIGlmIChsICE9IGFjdHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93
ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsgbCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQg
IiArIGFjdHVhbExlbmd0aCArICIgaW4gY2FzZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGlu
ZGV4ID0gaTsKKyAgICAgICAgdmFyIHZhbHVlID0gaSAlIDEwMDsKKyAgICAgICAgcHV0QnlWYWwo
YXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJh
eSwgaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0ICE9IHZhbHVlKQorICAgICAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICB9CisgICAgdmFyIHZhbHVlID0gNDI7CisgICAgdmFyIGluZGV4
ID0gMiAqIG9uZUdpZ2EgKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsK
KyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICBpZiAocmVzdWx0
ICE9IHZhbHVlKQorICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdv
dCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworfQorCitsZXQgdGhyZWVHaWdz
ID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdpZ3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcg
SW50OEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3Qo
bmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBmb3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0
ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENs
YW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRmNTIyYmIzMGFh
ZS4uMjhmN2UxMzExNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNDYg
QEAKKzIwMjEtMTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGls
ZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdh
cyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29y
azoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28g
SSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBi
ZWluZyBVQ1BVUmVnaXN0ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5n
IE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0
IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3Jt
YW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRM
LCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQg
dGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisgICAgICAg
IC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQg
bm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KKyAgICAg
ICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2VlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIg
Zm9yIGV4YW1wbGVzCisgICAgICAgIC0gSSBtb2RpZmllZCB0aGUgcnVudGltZSBmdW5jdGlvbnMg
Zm9yIEdldEJ5VmFsL1B1dEJ5VmFsL0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21pY3NYWFgg
dG8gYWNjZXB0IG5vbi1JbnQzMiBpbmRpY2VzLCBzaW5jZSBmb3Ige0ludDgvVUludDgvVUludDhD
bGFtcGVkfUFycmF5LCBhIG1heGltdW0gc2l6ZSBvZiA0R0IgaW1wbGllcyBpbmRpY2VzID4gMkIu
CisgICAgICAgIC0gSSBhZGRlZCBhICJtYXlCZUxhcmdlVHlwZWRBcnJheSIgYml0IHRvIEFycmF5
UHJvZmlsZS9VbmxpbmtlZEFycmF5UHJvZmlsZS9ERkc6OkFycmF5TW9kZSB0byB0cmFjayB3aGV0
aGVyIHN1Y2ggYSBub24tSW50MzIgaW5kZXggd2FzIHNlZW4gdG8gYWxsb3cgcHJvcGVyIHNwZWN1
bGF0aW9uIGFuZCBzcGVjaWFsaXphdGlvbiBvZiBmYXN0IHBhdGhzIGluIHRoZSBERkcvRlRMLgor
ICAgICAgICAgICAgSSB0aGVuIHVwZGF0ZWQgdGhlIHJ1bnRpbWUgZnVuY3Rpb25zIHVzZWQgYnkg
dGhlIHNsb3cgcGF0aHMgdG8gY29ycmVjdGx5IHVwZGF0ZSBpdC4KKworICAgICAgICBVbmZvcnR1
bmF0ZWx5IEkgcmFuIG91dCBvZiB0aW1lIHRvIGFkZCB0aGVzZSBzcGVjdWxhdGlvbnMvdXBkYXRl
IHRoZSBmYXN0IHBhdGhzLgorICAgICAgICBTbyB0aGUgZm9sbG93aW5nIHdpbGwgaGF2ZSB0byB3
YWl0IGZvciBhIGZvbGxvdy11cCBwYXRjaDoKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5k
aWNlcyBpbiB0aGUgZmFzdCBwYXRoIG9mIEdldEJ5VmFsIGluIHRoZSBMTEludAorICAgICAgICAt
IEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGhzIGdlbmVyYXRlZCBieSBB
Y2Nlc3NDYXNlL1BvbHltb3JwaGljQWNjZXNzCisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGlu
ZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IHRoZSBERkcvRlRMIGZvciBlYWNo
IG9mIEdldEJ5VmFsL1B1dEJ5VmFsL0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21pY3NYWFgK
KworICAgICAgICBUaGUgY3VycmVudCBwYXRjaCBpcyBmdW5jdGlvbmFsLCBpdCB3aWxsIGp1c3Qg
aGF2ZSBkcmVhZGZ1bCBwZXJmb3JtYW5jZSBpZiB0cnlpbmcgdG8gdXNlIGluZGljZXMgPjJCIGlu
IGEge0ludDgvVUludDgvVUludDhDbGFtcGVkfUFycmF5LgorCisgICAgICAgIE90aGVyIG1pbm9y
IGNoYW5nZXMgaW4gdGhpcyBwYXRjaDoKKyAgICAgICAgLSBGaXhlZCBhbiB1bmRlZmluZWQgYmVo
YXZpb3IgaW4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsIHdoZXJlIG1lbWNweSBjb3VsZCBi
ZSBjYWxsZWQgb24gbnVsbHB0ciAodGhlIHNwZWMgZXhwbGljaXRseSBiYW5zIHRoaXMgZXZlbiB3
aGVuIGxlbmd0aCBpcyAwKQorICAgICAgICAtIFJlcGxhY2VkIHNvbWUgcmVwZXRpdGl2ZSBhbmQg
ZXJyb3ItcHJvbmUgYm91bmRzIGNoZWNraW5nIGJ5IGNhbGxzIHRvIFdURjo6aXNTdW1TbWFsbGVy
VGhhbk9yRXF1YWwsIHdoaWNoIGlzIGNsZWFyZXIsIHNob3J0ZXIsIGFuZCByZXVzZSBDaGVja2Vk
QXJpdGhtZXRpYyBmYWNpbGl0aWVzIHRvIGF2b2lkIG92ZXJmbG93IGlzc3Vlcy4KKyAgICAgICAg
LSBGaXhlZCBhIHZhcmlldHkgb2Ygb2Jzb2xldGUgY29tbWVudHMKKyAgICAgICAgLSBBZGRlZCBz
dXBwb3J0IGZvciBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgSW1tNjQgcmlnaHQpCisgICAgICAgICAgICAodGhlcmUgd2FzIGFscmVhZHkgc3VwcG9y
dCBmb3IgdGhlIHNhbWUgYnV0IHdpdGggVHJ1c3RlZEltbTY0KQorICAgICAgICAtIE1hZGUgdmFy
aW91cyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIGZ1bmN0aW9uIGNvbnN0ZXhwciBhcyBwYXJ0IG9m
IHRoZSBwcmV2aW91cyBwb2ludAorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
Lmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6
OlRydXN0ZWRJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyOjphc0ludHB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjo6SW1tUHRyOjpJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW1QdHI6OmFzVHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMjo6VHJ1c3RlZEltbTMyKToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tMzI6OkltbTMyKToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tMzI6OmFzVHJ1c3RlZEltbTMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0OjpUcnVz
dGVkSW1tNjQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6
SW1tNjQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6YXNU
cnVzdGVkSW1tNjQgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaDY0KToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NEUuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6
OnVudGFnQXJyYXlQdHJMZW5ndGg2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjRFOjp1bnRhZ0FycmF5UHRyTGVuZ3RoMzIpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6Y2FuQmxpbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpBcnJh
eVByb2ZpbGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRBcnJheVByb2ZpbGU6OlVubGlua2VkQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRBcnJheVByb2ZpbGU6OnVwZGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpyZWZpbmUgY29uc3QpOgor
ICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1v
ZGU6OkFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjptYXlCZUxhcmdl
VHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlw
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb24g
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aENvbnZlcnNpb24gY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFR5cGVBbmRDb252ZXJzaW9u
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjpzcGVjdWxhdGlvbkZyb21Qcm9maWxlKToKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhQcm9maWxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6
OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29t
bW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZW5hYmxlSW50NTIpOgorICAgICAgICAqIGRmZy9E
RkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvR2V0QXJyYXlM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnByZXBlbmRHZXRBcnJheUxl
bmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAg
ICAgICogZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1N0b3JhZ2VDaGls
ZCBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3RvcmFnZUNoaWxkSW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5V2l0
aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6anVt
cEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lz
dGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChK
U0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNo
ZWNrcyk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50
NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QXJy
YXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAg
ICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjRO
b25OZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRl
bnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250
ZW50czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRp
YWxpemVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVm
ZmVyOjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNl
V2l0aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5o
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6Cisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9S
YW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNl
dEFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZp
ZXc6OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChK
U0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAo
SlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVN
ZW1vcnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJ
bXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChK
U0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0Rh
dGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRp
YWxpemVkKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6c2V0KToKKyAgICAgICAgKEpTQzo6
SlNEYXRhVmlldzo6c2V0SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmdldERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2Up
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0
aFNwZWNpZmljVHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
dHJ5R2V0SW5kZXhRdWlja2x5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNl
dEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNr
bHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0
aW9ucy5oOgorICAgICAgICAoSlNDOjpnZXRCeVZhbFdpdGhJbmRleCk6CisgICAgICAgICogd2Fz
bS9XYXNtUGFnZUNvdW50Lmg6CisKIDIwMjEtMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSByZXR1cm4gdmFsdWVzIGluIG5pY2VyIHdheSBp
biB0aGUganNjIFJFUEwgYW5kIGFkZCBhIHByZXR0eVByaW50IGZ1bmN0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggNDNmNzg0YTRhYjkzLi5lYzMyYjcyMjFjODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCkBAIC0yOTgsOSArMjk4LDkgQEAgcHVibGljOgogICAgIC8vIGluIGEgY2xh
c3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZmZXJlbnRp
YXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3NlcyB0byBt
ZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGljIFRydXN0
ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0ZXhwciBU
cnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1t
UHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkK
ICAgICAgICAgewogICAgICAgICB9CkBAIC0zMTEsMjEgKzMxMSwyMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpu
dWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHN0ZDo6
bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0
ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgaW50
cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRwdHIoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
bV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAgICAgIGNv
bnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBjb25z
dF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzM1LDEyICszMzUsMTIgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0cgogICAg
IHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAg
OiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBU
cnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAg
IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlz
OyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTM1OCw3ICszNTgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBU
cnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzY5LDE3ICszNjksMTcg
QEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7
Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
MzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQotICAgICAg
ICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29u
c3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
MzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdCBUcnVz
dGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAg
ICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7
IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIHB1
YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZyb20gYWNj
aWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMuCiAgICAg
c3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tNjQo
KSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAgICAKLSAg
ICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxp
Y2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDog
bV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1t
NjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVk
SW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50
cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDA5LDE3ICs0MDksMTcgQEAgcHVibGlj
OgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7Ci0gICAg
ICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQodmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkg
fHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1QdHIgcHRy
KQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2Vu
ZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBjb25zdCB7
IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTY0JiBh
c1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAgICAKICAg
ICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMKQEAgLTEw
ODYsOSArMTA4Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAgIHN0YXRp
YyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBz
dGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQgY2xhc3Mg
RGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCmluZGV4IGQ3ZmUzYTgxZTM0MS4uZTY3NjdjNmE5YTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMzks
NiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNo
TXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4Nl82NCkg
fHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmxzaGlmdDMy
OwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNlbmRpZiAv
LyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAmJiAhQ1BV
KEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3RvcmU2
NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8gQ1BVKFg4
Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShBUk02NCkg
fHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwgQWRkcmVz
cyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsKICAgICB9
CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMgZG9uJ3Qg
bmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiwgUmVn
aXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUuCisgICAg
Ly8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJlY2F1c2Ug
aXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwgZXRjLi4g
d2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVtcCBicmFu
Y2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tNjQgcmln
aHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAgICAgICAg
ICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAg
ICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50KHJpZ2h0
KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCBy
ZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAgLy8gcGxh
Y2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBub3BDb3Vu
dCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQorICAgICAg
ICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQs
IHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisjZW5kaWYg
Ly8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA0MjUw
OTAzYmMzMjIuLjE3OTZiNjUxYmM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3RlciA9IEFS
TTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBpbXBsZW1l
bnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAg
ICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYgKzMzMDUs
MTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAg
ICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChj
b25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJy
YW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNz
IHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNm
Li4wNzY2Mjk4MmQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5
UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlk
YXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFk
ZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAg
ewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAg
ICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFs
aWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkg
OiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdl
dCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXgg
Y2NlMGQwMWY0MDE3Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5
ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNr
UG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAg
ICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3Rh
dGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZm
ZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2go
dWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJp
dGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li4xYWI0YTY1MjUwMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTQ4
Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAg
ICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVy
OgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5zaWNHZXR0
ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENoZWNrUHJp
dmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3Jh
dGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3RvcmU6CiAg
ICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIEluZGV4ZWRU
eXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxlbmd0aC9U
eXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIgcmVzdWx0
IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTE5MSwx
MyArMTE5Miw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAK
ICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdo
LmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkp
OwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7Ci0KICAgICAgICAgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHZhbHVlUmVncyk7CkBAIC0xMjExLDYgKzEyMDgsMTYgQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNl
ZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBDUFUoUkVHSVNU
RVI2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIFVDUFVSZWdpc3Rlciwgc28gZWl0aGVy
IDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgaml0Lmxv
YWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRv
UHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoMkdQUik7CisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBh
dGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0
Y2gyR1BSLCBzY3JhdGNoR1BSKSk7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRj
aEdQUikpOworI2VuZGlmCisKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRj
aDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwog
CkBAIC0xNjMwLDEwICsxNjM3LDYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCgKICAgICAgICAgICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAotICAgICAgICBq
aXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRPZkJvdW5k
cyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rp
b24uCi0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7Ci0KICAg
ICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVn
aXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CkBAIC0xNjQ4LDYgKzE2NTEsMTggQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5w
cmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNp
ZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIFVDUFVSZWdpc3Rl
ciwgc28gZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAg
ICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgLy8gT3V0
T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0aW9u
IGZ1bmN0aW9uLgorICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNj
cmF0Y2gyR1BSKTsKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFu
Y2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIp
KTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBzZXQgaW4g
dGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBw
ZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIs
IHNjcmF0Y2hHUFIpKTsKKyNlbmRpZgorCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSks
IHNjcmF0Y2gyR1BSKTsKICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsIGZh
bHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5
UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5o
CmluZGV4IDY5MTY3OTQ4NDNiMC4uOTkzMWIxMGY4MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFVu
bGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUgZWFjaCBi
aXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4K
IC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4K
LS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAxNiB0byAy
NS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYt
MjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwogCiAvLyBUaGUgcG9z
c2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAy
NSkuCkBAIC0yMDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZFBlcmZvcm1G
aXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAKKworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgLy8gQWNjZXNzaW5nIHR5cGVkIGFycmF5cyBsYXJnZXIgdGhh
biB0aGF0IHRlbmRzIHRvIGJlIG1vcmUgY29tcGxpY2F0ZWQgYXMgd2UgY2FuJ3QgZm9yY2UgY29u
dmVydCBldmVyeXRoaW5nIHRvIGludDMyX3QuCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IHN1Y2gg
bGFyZ2UgdHlwZWQgYXJyYXlzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7
IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVz
c09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7
IH0KQEAgLTI0NCw2ICsyNTQsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9
OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNw
ZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFz
IGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFz
aWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3Jh
Z2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBp
bXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9
OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAg
ICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NiwxMyBAQCBzdGF0aWNf
YXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJh
eVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVM
YXJnZVR5cGVkQXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE2
LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5r
ZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBiMWRmY2EyNzQ5YzEuLjgyOGY1ZTU0YmI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMzQ3OCw3ICszNDc4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7Cisg
ICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkpKSB7
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0ODYsNiArMzQ4NiwxNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlm
ICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5s
ZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zODExLDgg
KzM4MjIsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKICAg
ICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5
dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+
IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAg
ICBpZiAoYnl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7CiAg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MjEsNiArMzgzMiwx
OSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5
QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0
Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
dmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5
cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJl
LmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1MzEwNGJkMy4uYTNi
OTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICszMjUsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9k
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBu
b2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBub3QgYmUgcmVsZXZh
bnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAgICAgICBlc2NhcGUo
bm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAgICAgICAgICAgICAg
ICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCA9IG1fZ3Jh
cGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5YWZhM2ViLi43MjU4
ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAK
QEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZpbmUoCiAgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkpOwogICAgIH0KICAg
ICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAgaWYgKCFpc0ludDMy
U3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgpKQogICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAgICAgCiAgICAgLy8g
SWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3QgYmVoYXZpb3IsIHRo
ZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDggQEAgQXJyYXlNb2Rl
IEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAgICBj
YXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJpZ1VpbnQ2NEFycmF5
OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVzZXJ2ZSB0aGlzIG91
dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3QgR2V0QnlWYWwgYXMg
d2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkgewogICAgICAgICAg
ICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3V0T2ZCb3Vu
ZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlS
ZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNiLi5kZjc1Yzc4OTBk
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtMTI3LDYg
KzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6
OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwog
ICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgZXhwbGlj
aXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAt
MTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0g
QXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpB
c0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlN
b2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6QWN0
aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5
dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29u
dmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9u
OworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9
CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJh
eUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9u
IGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5TW9kZShBcnJheTo6
VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNw
ZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFj
dGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAgICAgICAg
dS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFzcyA9IGFy
cmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uOwog
ICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNC
eXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRB
cnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUo
QXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRz
OwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUu
YXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlw
ZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRlcy50eXBlKTsgfQpA
QCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3Vs
YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3BlY3VsYXRpb24+KHUu
YXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNpb24+KHUuYXNCeXRl
cy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlvbik7IH0KKyAgICBi
b29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5hc0J5dGVzLm1heUJl
TGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3JkKCkgY29uc3QgeyBy
ZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2Fm
ZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBz
cGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJh
eSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTcGVj
dWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1v
ZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlv
bigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkp
OwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6OkNsYXNz
IGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6
OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFj
dGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwg
c3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5
KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmls
ZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZl
cnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBz
cGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXko
KSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25B
bmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNw
ZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBjb25zdAog
ICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgY29udmVy
c2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAorICAgIHN0
YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VT
YWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlTcGVjdWxh
dGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6T3V0
T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tl
cikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAgICAgICAg
ICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBteVNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdp
dGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6
SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZy
b21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUq
IHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd2l0
aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZl
KSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKLQogICAg
ICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2VzT3Jp
Z2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5
KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxlLT5v
YnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwotICAgICAgICAK
LSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAgIAot
ICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCks
IGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0
aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9u
KCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdp
dGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBj
b252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBh
cnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKKworICAg
ICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZyb21Qcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJvb2wgbGFyZ2VUeXBl
ZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKKworICAgICAg
ICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFy
cmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7CiAgICAgfQog
ICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51c2VkSW5kZXhTcGVj
dWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAgICAgICAgJiYgYXJy
YXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAgJiYgc3BlY3VsYXRp
b24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBjb252ZXJzaW9uKCkg
PT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVyc2lvbigpID09IG90
aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9
PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAKICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3OSw3ICs1OTAsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwogICAgICAgICAgICAg
dWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29udmVyc2lvbiA6IDQ7
Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAgICB1aW50OF90IGFj
dGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsK
ICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7CiAgICAgfSB1Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCA4ODExYjg5ZjI0YTcuLmM3Zjc0MzEzOTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDYsOCArMzgwNiwxNiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIE9wZXJh
bmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50JiB2YXJpYW50LCBO
b2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogeworI2lm
IFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljX2Fzc2VydChlbmFibGVJbnQ1Migp
KTsKKyNlbmRpZgorCiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2Fz
ZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogeworI2lmICFVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsK
IAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgp
LmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzgyMSwy
NiArMzgyOSwzMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIo
T3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJU
KGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIE5v
ZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlN
b2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAg
ICBOb2RlVHlwZSBvcCA9IEdldEFycmF5TGVuZ3RoOworICAgICAgICBpZiAoIWlzSW50MzJTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdykpCisgICAgICAgICAgICBvcCA9IEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOworICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRk
VG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKICAgICAgICAgLy8gT3VyIEFycmF5TW9kZSBzaG91bGRuJ3QgY2F1
c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0byBleGl0IHdpdGhvdXQgZWZm
ZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBhZGRUb0dyYXBoKEV4aXRP
Syk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAgICAgICAgIHNldChyZXN1bHQs
IGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMg
d2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAvLyB0aGF0IG92ZXJmbG93cyBp
bnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25zdGFudChqc051bWJlcihsb2dT
aXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhCaXRMU2hpZnQsIGxl
bmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBjYW5ub3QgdXNlIGEgQml0TFNo
aWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUgYSBieXRlTGVuZ3RoIHRoYXQg
b3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6ZSA9IGpzQ29uc3RhbnQoanNO
dW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJp
dGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgIVVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2Vy
dENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3Ry
dWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7
CkBAIC0zODUyLDEzICszODY1LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAg
ICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAK
LSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFy
cmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7Cisg
ICAgICAgIE5vZGVUeXBlIG9wID0gR2V0QXJyYXlMZW5ndGg7CisgICAgICAgIGlmICghaXNJbnQz
MlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAgICAgICAgIG9w
ID0gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRv
R3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3Jk
KCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgfQogCiAgICAg
Y2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJpbnNpYzogeworI2lmICFVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3Mo
KTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNl
dCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3
MCw3ICszODkwLDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRl
cihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NF
UlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAg
c2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFy
cmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7Cisg
ICAgICAgIE5vZGVUeXBlIG9wID0gR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAg
ICAgICAgIG9wID0gR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOworICAgICAgICBzZXQo
cmVzdWx0LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6
OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQz
ZmRlOTc3OS4uNzQ5MjA1ZDY0ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
RGlyZWN0OgpAQCAtMTMzNyw2ICsxMzM4LDExIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVs
ZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyAgICAgICAgcmVhZChN
aXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNl
dEludDUyTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsK
KyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEFycmF5VXNl
OgpAQCAtMTQ0NCw2ICsxNDUwLDE0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAg
ICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHJlYWQoTWlzY0Zp
ZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUxlbmd0aEludDUyTG9j
LCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIEFy
cmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CiAgICAgICAgIHN3aXRjaCAobW9kZS50
eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCmluZGV4IGM2NmZiMjIz
OWY4Zi4uYWZkYzEwYThhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgK
QEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIGJvb2wgdmFsaWRhdGlvbkVuYWJsZWQoKQogI2VuZGlm
CiB9CiAKLWlubGluZSBib29sIGVuYWJsZUludDUyKCkKK2lubGluZSBib29sIGNvbnN0ZXhwciBl
bmFibGVJbnQ1MigpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjVh
YmRlZTg2NzVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MTk3LDEwICsxOTcsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNl
IEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBT
dHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90
eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2Vl
ZTZjYS4uNzU4MzU5YTc3NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAg
ICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAg
ICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAg
ICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgp
CiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3
SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3du
U3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUg
YSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2Vu
ZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5
OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpV
aW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5Ogor
ICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6
CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihp
bmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUo
KS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCku
aXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5t
YXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhh
c0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApA
QCAtMTcxNywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2Rl
KTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RH
ZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUobV9ncmFwaCwgbm9kZSwg
bm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1bnVzZWRJbmRleFNwZWN1
bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTb21lVHlwZWRBcnJh
eVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsKKyAg
ICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwgbm9k
ZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAgICAgICAgIGZpeEVkZ2U8
S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7Cisg
ICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6
IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTQwOTYsMTQgKzQxMzUsNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgIG5vZGUtPmNoaWxkMigpID0gRWRnZShzdG9yYWdlKTsKICAgICB9Ci0g
ICAgCi0gICAgTm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2luLCBO
b2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKLSAgICB7Ci0gICAgICAgIE5vZGUqIHN0
b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgb3JpZ2luLCBjaGlsZCwgbnVsbHB0ciwgbGVu
Z3RoTmVlZHNTdG9yYWdlKTsKLSAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgR2V0QXJyYXlM
ZW5ndGgsIG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBF
ZGdlKGNoaWxkLCBLbm93bkNlbGxVc2UpLCBFZGdlKHN0b3JhZ2UpKTsKLSAgICB9CiAKICAgICB2
b2lkIGNvbnZlcnRUb0hhc0luZGV4ZWRQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAppbmRleCA0ZmFmOTQ5
YTc4NjAuLjJkODZlYjc1NzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHZW5lcmF0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R2VuZXJhdGlvbkluZm8uaApAQCAtMzksOCArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3Rh
dHVzIG9mIGxpdmUgdmFsdWVzIGR1cmluZyBjb2RlIGdlbmVyYXRpb24uCiAvLyBDYW4gcHJvdmlk
ZSBpbmZvcm1hdGlvbiBhcyB0byB3aGV0aGVyIGEgdmFsdWUgaXMgaW4gbWFjaGluZSByZWdpc3Rl
cnMsIGFuZCBpZiBzbyB3aGljaCwKIC8vIHdoZXRoZXIgYSB2YWx1ZSBoYXMgYmVlbiBzcGlsbGVk
IHRvIHRoZSBSZWdpc3RlckZpbGUsIGFuZCBpZiBzbyBtYXkgYmUgYWJsZSB0byBwcm92aWRlCi0v
LyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5IChhbGwgdmFsdWVzIGFyZSBzcGlsbGVk
IGluIGEgYm94ZWQgZm9ybSwgYnV0IHdlIG1heSBiZQotLy8gYWJsZSB0byB0cmFjayB0aGUgdHlw
ZSBvZiBib3gpLCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1
ZSByZW1haW4sCisvLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5LCBhbmQgdHJhY2tz
IGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCiAvLyBzbyB0aGF0
IHdlIGtub3cgd2hlbiB0aGUgdmFsdWUgaXMgZGVhZCBhbmQgdGhlIG1hY2hpbmUgcmVnaXN0ZXJz
IGFzc29jaWF0ZWQgd2l0aCBpdAogLy8gbWF5IGJlIHJlbGVhc2VkLgogY2xhc3MgR2VuZXJhdGlv
bkluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3Bw
CmluZGV4IDJiYjlkNGJlYTgwMC4uMDY2MWU1YjgyNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCkBAIC0xODIsNiArMTgyLDE0IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2NhdGlvbktpbmQga2luZCkKICAgICAg
ICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldExvYyIpOwogICAgICAgICByZXR1cm47
CiAKKyAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2M6CisgICAgICAgIG91dC5w
cmludCgiVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYyIpOworICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJU
eXBlZEFycmF5TGVuZ3RoSW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBQ
cm90b3R5cGVMb2M6CiAgICAgICAgIG91dC5wcmludCgiUHJvdG90eXBlTG9jIik7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExv
Y2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCmlu
ZGV4IDI2OTE3MWNiMzQxZC4uNDBmYjcxNjczMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKQEAgLTY3LDYgKzY3LDggQEAgZW51bSBMb2NhdGlvbktp
bmQgewogICAgIFNldHRlckxvYywKICAgICBTdHJ1Y3R1cmVMb2MsCiAgICAgVHlwZWRBcnJheUJ5
dGVPZmZzZXRMb2MsCisgICAgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYywKKyAgICBUeXBl
ZEFycmF5TGVuZ3RoSW50NTJMb2MsCiAgICAgUHJvdG90eXBlTG9jLAogICAgIFN0YWNrTG9jLAog
ICAgIFN0YWNrUGF5bG9hZExvYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKaW5kZXggMWJh
YTFjOGJjZjUxLi5iM2IxNDVhOTEwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCkBA
IC0xNDk5LDYgKzE0OTksNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgICAg
IHNldFJlbGF0aW9uc2hpcChSZWxhdGlvbnNoaXAobm9kZSwgbV96ZXJvLCBSZWxhdGlvbnNoaXA6
OkdyZWF0ZXJUaGFuLCAtMSkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTI6CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1l
cmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoK
QEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJ
bmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3
aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNl
IEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li4wMDY2ZjdiMDI2MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlP
ZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlM
ZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBm
b3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBh
IGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRzLiAqLyBcCisgICAgbWFjcm8oR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIsIE5vZGVSZXN1bHRJbnQ1MikgXAogICAgIG1hY3JvKEdl
dFZlY3Rvckxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAgICAgbWFjcm8oR2V0U2NvcGUs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNraXBTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oUmVzb2x2ZVNjb3BlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2OWFj
ZjUxOWMwYmEuLjVmMDMwNTI5YzU2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCkBAIC05NywxMCArOTcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2
b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNWYWx1
ZQogICAgIH0KICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmNh
blNldEluZGV4UXVpY2tseShpbmRleCwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBvYmplY3QtPnNl
dEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgaWYgKG9iamVjdC0+dHJ5
U2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CiAKICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
b2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgc3RyaWN0KTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTc1LDcgKzE3Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0QnlW
YWxDZWxsU3RyaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLWNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IHNpemUsIGNoYXIqIHZlY3RvcikKK2NoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDUFVSZWdpc3RlciBzaXplLCBjaGFyKiB2ZWN0b3IpCiB7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0xODMsMTEgKzE4MSwxMyBAQCBjaGFyKiBu
ZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIlJlcXVlc3RlZCBsZW5ndGggaXMg
bmVnYXRpdmUiX3MpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCisg
ICAgVUNQVVJlZ2lzdGVyIHVuc2lnbmVkU2l6ZSA9IHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4o
c2l6ZSk7CisKICAgICBpZiAodmVjdG9yKQotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNo
YXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBzaXplLCB1bnRhZ0FycmF5UHRyKHZlY3Rvciwgc2l6ZSkpKTsKKyAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXplLCB1bnRhZ0FycmF5UHRyKHZlY3Rvciwg
dW5zaWduZWRTaXplKSkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBz
aXplKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9jYXN0PGNoYXIq
PihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXpl
KSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CkBAIC0xOTA4LDcgKzE5MDgsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIEpTQ2VsbCos
IChWTSogdm1Qb2ludGVyLCBTdHJ1YwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MjQsNyArMTkyNCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVS
ZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTU2LDcgKzE5NTYsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MzJBcnJheT4o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7
CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTk3Miw3ICsxOTcyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4
Q2xhbXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTIwMDQsNyArMjAwNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0ds
b2JhCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIw
MjAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
VWludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0yMDM2LDcgKzIwMzYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwg
Y2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA1Miw3
ICsyMDUyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRB
cnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxKU0Zsb2F0NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsyMDY4LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0JpZ0ludDY0QXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lz
dGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA4NDRjMTli
MzExNDEuLmM3YTEyNDBmMmYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIGNoYXIqLCAo
Vk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQz
Ml90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVk
SlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVn
aXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVD
UFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyLCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BV
UmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwq
LCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVjMC4uZDVmMGZmY2RmNTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAg
ICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2Ug
U3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMy
T25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IDkyNGZjOGMzMTA4Ni4uMTk5ZjZjYzNiMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzczLDYgKzM3Myw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9w
ZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2Ug
QXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg2LDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2Fz
ZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggYjRjOGY4NjBiNTE0Li41ODJjMzMyYzQ1YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjQ1
LDE2ICszMjQ1LDI4IEBAIEpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9y
VHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlCiAgICAgSlNBcnJheUJ1ZmZl
clZpZXcqIHZpZXcgPSBtX2ppdC5ncmFwaCgpLnRyeUdldEZvbGRhYmxlVmlldygKICAgICAgICAg
bV9zdGF0ZS5mb3JOb2RlKG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCkpLm1fdmFsdWUsIG5v
ZGUtPmFycmF5TW9kZSgpKTsKICAgICBpZiAodmlldykgewotICAgICAgICB1aW50MzJfdCBsZW5n
dGggPSB2aWV3LT5sZW5ndGgoKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCA9IHZpZXct
Pmxlbmd0aCgpOwogICAgICAgICBOb2RlKiBpbmRleE5vZGUgPSBtX2ppdC5ncmFwaCgpLmNoaWxk
KG5vZGUsIDEpLm5vZGUoKTsKLSAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNJbnQzMkNvbnN0YW50
KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwgbGVuZ3RoKQorICAgICAgICBpZiAoaW5kZXhO
b2RlLT5pc0FueUludENvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwgbGVuZ3Ro
KQogICAgICAgICAgICAgcmV0dXJuIEpJVENvbXBpbGVyOjpKdW1wKCk7CisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tNjQo
bGVuZ3RoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQorCisjaWYgQ1BVKFJFR0lTVEVSNjQp
CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCBpbmRleEdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAg
cmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBpbmRleEdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCkBAIC03OTYwLDcgKzc5NzIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2UoR1BSUmVnIGJhc2VSZWcsIEdQ
UlJlZyBzdG9yYWdlUmVnLCBibwogewogICAgIGF1dG8gdW50YWdBcnJheVB0ciA9IFsmXSgpIHsK
ICNpZiBDUFUoQVJNNjRFKQotICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3RoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOworICAgICAgICBtX2ppdC51bnRh
Z0FycmF5UHRyTGVuZ3RoNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgp
OwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHZhbGlkYXRlQXV0aCk7CiAgICAgICAgIFVO
VVNFRF9QQVJBTShiYXNlUmVnKTsKQEAgLTgwNzYsNiArODA4OCwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBu
dWxsVmVjdG9yLmxpbmsoJm1faml0KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNl
IGhlcmUuCisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVs
bHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRy
dXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRp
ZgorCiAgICAgc3RyaWN0SW50MzJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0
MiwxMiArODM1OSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5n
dGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
YmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAg
ICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBtX2ppdC5icmFu
Y2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJ
bnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0K
IAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQog
ewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTExMTExLDEwICsxMTEzNCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFy
cmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgCisKICAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVH
UFIgPSBzaXplLmdwcigpOwotICAgIAorCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgLy8gVGhl
IG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBhIENQVVJlZ2lzdGVy
LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzaXplR1BSLCBzaXplR1BSKTsKKyNlbmRpZgorCisgICAgZW1pdE5ld1R5cGVkQXJyYXlX
aXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQ
Uik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJ
blJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTMwLDYgKzExMTYzLDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2Rl
KQogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZlclZpZXc6
OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2Yg
dGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0
aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXpl
TGltaXQpKTsKICAgICAKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwogICAg
IG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlw
ZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTg1LDkgKzExMjIwLDE1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBtX2pp
dC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkp
OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVH
UFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigK
ICAgICAgICAgc2l6ZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAg
bV9qaXQuc3RvcmUzMigKICAgICAgICAgVHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAgLTE0MTU5LDYgKzE0MjAwLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQz
MlVzZToKICAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAg
ICAgYnJlYWs7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBjYXNlIEludDUyUmVw
VXNlOgorICAgICAgICBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUobm9kZSk7Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiNjUxNWQ4Yjcy
MTkuLmJhMGZkYTIzMjY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEzMDAsOSArMTMwMCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqLCBpbnQzMl90
IHJhZGl4KTsKICAgICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU5ld1N5bWJvbChOb2RlKik7Ci0gICAgCisKKyAgICB2b2lkIGVtaXROZXdUeXBl
ZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpOwogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoU2l6ZShOb2RlKik7Ci0gICAgCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShOb2RlKik7CisjZW5kaWYK
KwogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogI2lmIFVTRShCSUdJTlQzMikK
QEAgLTEzNzMsNiArMTM3Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxU
aGlzKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKKyNp
ZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tUeXBl
SW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKQEAg
LTE0MzUsNiArMTQ0Miw5IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9y
VHlwZWRBcnJheUlzRGV0YWNoZWRJZk91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMpOwogICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlC
b3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CiAgICAg
dm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSopOworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVw
bGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4m
IHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJl
ZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9p
ZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUs
IGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihE
YXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcg
QEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5
b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBi
aXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVm
dC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3Bl
cmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcg
KzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8v
IEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93
IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3Ug
YSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBo
aWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50
NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CmluZGV4IDZlZmJjZWRkYmMwYS4uYzMzZTM3NWUxYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxMzQsNiAr
MjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2Rl
LCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGNvbXBpbGVHZXRCeVZh
bE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJy
YXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2Rl
KCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAg
ICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBA
IC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxh
dGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBi
cmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJ
ZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2Rl
KTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlMTM1ZmQ1MzQ4ZTguLmNhMTQ3YzZjYjYxYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjY5NCw2ICsyNjk0LDg5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9
CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBt
X2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJU
KHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigp
OworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRB
cnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJF
TEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwor
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fz
c2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJp
c2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIp
OworICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSog
bm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBk
YXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJl
ZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdw
cigpOworICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7CisgICAgQVNTRVJUKGJhc2VH
UFIgIT0gZGF0YUdQUik7CisgICAgQVNTRVJUKHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKKworICAg
IEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CisKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBlbXB0eUJ5dGVPZmZzZXQgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIo
V2FzdGVmdWxUeXBlZEFycmF5KSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwg
dmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIG51bGxWZWN0b3IgPSBtX2ppdC5i
cmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW1QdHIoSlNB
cnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpOworCisgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0
KCkpLCBkYXRhR1BSKTsKKyAgICBtX2ppdC5jYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6
SlNWYWx1ZSwgZGF0YUdQUik7CisKKyAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UoYmFzZUdQUiwg
dmVjdG9yR1BSKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQ
Uik7CisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgY2FnaW5nLgorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKKyAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFycmF5QnVmZmVyR1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0
T2ZEYXRhKCkpLCBkYXRhR1BSKTsKKyNpZiBDUFUoQVJNNjRFKQorICAgIG1faml0LnJlbW92ZUFy
cmF5UHRyVGFnKGRhdGFHUFIpOworI2VuZGlmCisKKyAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwg
dmVjdG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CisKKyNpZiBDUFUoQVJNNjRFKQorICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlm
CisgICAgZW1wdHlCeXRlT2Zmc2V0LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobnVsbHB0ciksIHZlY3RvckdQUik7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsK
KyNpZiAhQ1BVKEFSTTY0RSkKKyAgICBBU1NFUlQoIUpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVj
dG9yUHRyKCkpOworICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisKKyAgICBz
dHJpY3RJbnQ1MlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOworfQorI2VuZGlmCisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5v
ZGUtPm9wKCk7CkBAIC00Mzc1LDYgKzQ0NTgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyNp
ZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTIobm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7
CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ0
OTMsNiArNDU4NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgY29tcGls
ZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJvdG90
eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4Myw3ICs1NjgzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0
ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAx
KQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAx
KSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0
YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAg
ICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAK
QEAgLTU3ODQsNyArNTg4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAg
ICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRy
dXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1
ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA1ZjUxZjIyNTEw
NGYuLmUxMGQ2MmU0MjdkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzksMTAgKzI3OSwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAg
ICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0Rl
dGFjaGVkOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
ICAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgICAgICAg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAg
ICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgpAQCAtMzU5LDYgKzM2MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNl
IFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4u
NzRmZTg5NTI2ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgog
ICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBj
YXNlIFN0b3JlQmFycmllcjoKQEAgLTM5MSw2ICszOTIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50
QXJndW1lbnRzOgogICAgIGNhc2UgQ1BVSW50cmluc2ljOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhp
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCA0M2QyNmU4M2U5NjguLmQ5MTk3ZTY0ZDFhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAyNSw2ICsxMDI1LDExIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJy
YXlMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoKTsKKyAgICAgICAgICAgIGJyZWFr
OworI2VuZGlmCiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICAgICAgY29t
cGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTc1LDYgKzEx
ODAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoK
ICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgor
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKCk7CisjZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODQwLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIG1fb3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1
ZmZlclZpZXdfdmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhj
ZXB0U2V0dGluZ1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CkBAIC00ODQ2LDcgKzQ4NTgsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7
CiAKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
ZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZl
Y3RvclB0cigpKSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBt
X291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAg
ICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAg
ICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw5ICs0
ODc4LDI2IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAg
c2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxW
ZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAKKyAgICB2b2lk
IGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgp
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIEFJIHByb21pc2VzIHRo
YXQgdGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBz
byB3ZSBtdXN0IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3VsYXRlKE92
ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChyZXN1bHQsIG1f
b3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7Cisj
ZW5kaWYKKyAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIocmVzdWx0KSk7CisgICAg
fQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBl
bWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCk7CisgICAgICAg
IHNldFN0cmljdEludDUyKHJlc3VsdCk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIGNvbXBp
bGVHZXRQcm90b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAt
NTA1NCw4ICs1MDgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZp
ZXcoKSkgewotICAgICAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgICAgICBt
X291dC5sb2FkMzJOb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBz
LkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5n
dGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3Vs
YXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChsZW5n
dGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkp
KSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC01MDY0LDYgKzUwOTQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZv
aWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7
CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgo
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpA
QCAtODE2OSw5OCArODIwNiwyMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEludDMyVXNlOiB7
CiAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVu
dGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93SW50
MzIobV9ub2RlLT5jaGlsZDEoKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5v
dWdoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7Cisg
ICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9u
b2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAg
ICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQuY29uc3RJbnQzMihKU0FycmF5QnVmZmVyVmll
dzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVz
dWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3RO
ZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7Ci0KLSAgICAg
ICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAgICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0
Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRB
cnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUp
IDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAotICAgICAg
ICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDcpKSwK
LSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0
cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBh
bGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdl
ID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAgICAgICAgICAgICBzdG9yYWdlLAotICAgICAg
ICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAgICAgICAgICAgICAgICBtX291dC5jYXN0VG9J
bnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAotICAgICAg
ICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAgICAgICAgICAgICAgICBtX2hlYXBzLnR5cGVk
QXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShBUk02NEUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNpemUpOwotICAg
ICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hw
b2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVu
ZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFw
cGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVy
KSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
LSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0u
Z3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdw
cigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFn
ZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOwotICAg
ICAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgewotI2RlZmluZSBUWVBFRF9BUlJBWV9U
WVBFX0NBU0UobmFtZSkgXAotICAgICAgICAgICAgY2FzZSBUeXBlICMjIG5hbWU6IFwKLSAgICAg
ICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJy
YXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xV
RElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQotI3VuZGVmIFRZUEVEX0FSUkFZ
X1RZUEVfQ0FTRQotICAgICAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6Ci0gICAgICAgICAgICAg
ICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJl
LCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihzaXpl
LCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKLSAg
ICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSks
IGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgbXV0YXRvckZlbmNlKCk7Ci0gICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7Ci0gICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBlbWl0TmV3VHlw
ZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
c2l6ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBl
KSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlw
ZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIFZNJiB2bSA9
IHRoaXMtPnZtKCk7Ci0gICAgICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNs
b3dQYXRoKAotICAgICAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+
JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5
cGVkQXJyYXlUeXBlKSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgIHNpemUsIHN0b3JhZ2VWYWx1ZSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7Ci0gICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAg
ICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KKyNl
bmRpZgogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBhcmd1
bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAKQEAgLTgyNzcsNyArODIzNywx
MDAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAgIHsKKyAgICAgICAgTEJh
c2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKKworICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShzaXplNjRCaXRzLCBtX291
dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCisgICAgICAg
ICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOworCisgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNl
LCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRo
ZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgICAgIHN0
YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNp
emVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9CisgICAgICAgICAgICBtX291
dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFy
cmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgp
IHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAorICAgICAgICAgICAgICAg
IG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAorICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCku
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAg
ICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nh
c2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBzdG9yYWdlLAorICAgICAg
ICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9v
dXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKKyAgICAgICAgICAgIG1f
b3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMp
OworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOworICAg
ICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7CisgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRCaXRzLCBCMzo6VmFsdWVSZXAoQjM6
OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUt
PnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQ
dHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAgICB9CisjZW5kaWYKKwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdl
KTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAg
c3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NBU0Uo
bmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAgICAgICAgICAgZmFzdFJl
c3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1f
b3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJB
WV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCisgICAgICAgIGNhc2Ug
VHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmpl
Y3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAgICAgICBtX291dC5zdG9yZTY0KHNpemU2NEJp
dHMsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBm
YXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAg
ICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBt
X291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAg
ICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0u
ZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RH
UFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRW
YWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CkBAIC0xNDY1Niw2ICsxNDcwOSw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBhcmUg
MzItYml0cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0d2Vl
biBiYXNlK2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZhbHVl
IGJhc2UsIExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBBYnN0
cmFjdEhlYXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxpbmdM
aW1pdCA9IDEwOwpAQCAtMTU1OTEsNyArMTU2NDYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERh
dGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVl
IGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291
dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAg
ICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29u
c3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyArMTU3ODksNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEo
KTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2Fk
MzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
KTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFW
aWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBp
bmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEu
Ynl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4
VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTcyMzYs
NyArMTcyOTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsm
XShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChr
aW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2l6
ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
CisgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkNjQoYmFzZSwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB1bnRh
Z0FycmF5UHRyKHRhZ2dlZFB0ciwgc2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gcHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKaW5kZXggYTk0MjAw
OTNmNTI5Li5lZDhmZjczZTFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQu
aApAQCAtMzI5LDYgKzMyOSw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbm9uTmVnYXRpdmUzMihM
VmFsdWUgbG9hZEluc3RydWN0aW9uKSB7IHJldHVybiBsb2FkSW5zdHJ1Y3Rpb247IH0KICAgICBM
VmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxv
YWQzMihwb2ludGVyKTsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShMVmFsdWUgYmFz
ZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDMyKGJhc2UsIGZpZWxk
KTsgfQorICAgIExWYWx1ZSBsb2FkNjROb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJz
dHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDY0KGJhc2UsIGZpZWxkKTsgfQogCiAgICAg
TFZhbHVlIGVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKICAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVl
LCBMVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5z
aWNFbWl0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRl
ci5jcHAKaW5kZXggZjc4NmY3NjUxYTYwLi41ZDJjNmM0MDIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgzLDIzICs4MywzMiBA
QCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogCiAgICAgc3dpdGNoIChpbnRyaW5zaWMoKSkgewog
ICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogeworI2lmIENQVShSRUdJU1RFUjY0
KQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOworICAg
ICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBz
dGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVS
ZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CiAgICAg
ICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPnR5cGVk
QXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBqaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBpZiAoZWxlbWVudFNp
emUodHlwZSkgPiAxKQorICAgICAgICAgICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVl
R1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxz
ZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAg
ICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNh
biB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5
dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0
MzIodmFsdWVHUFIsIEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAg
ICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gMzItYml0IHBs
YXRmb3JtcyBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dz
IGFuIGludDMyLgorICAgICAgICAgICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVt
ZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJ
bnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzAsOCArMTM5LDEyIEBAIHZvaWQgSW50
cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAg
CisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2
YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAg
ICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAg
c3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZDdkZjdjYjhlODc1Li5hNTlkMDkx
MzNmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApA
QCAtOTM3LDEwICs5MzcsOCBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdQogICAgICAgICB1aW50
MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAg
ICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAg
ICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkgewotICAgICAg
ICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCBhcnJheVBy
b2ZpbGUpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGFycmF5UHJvZmlsZSkKICAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNl
dE91dE9mQm91bmRzKCk7CkBAIC0yMzQxLDIxICsyMzM5LDIyIEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQzMl90
PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc0ludDMyKCkpIHsKLSAgICAgICAgaW50MzJfdCBp
ID0gKmluZGV4OworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNj
cmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9ICppbmRl
eDsKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgewotICAgICAgICAgICAgaWYg
KGkgPj0gMCAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAg
ICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldElu
ZGV4KGdsb2JhbE9iamVjdCwgaSkpOwogICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkKICAg
ICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2Fu
R2V0SW5kZXhRdWlja2x5KHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpT
VmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNr
aXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIAotICAgICAgICAgICAgaWYgKG9iamVjdC0+
aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cyAmJiBpID49IDAgJiYgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkp
IHsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENv
bnRpZ3VvdXMKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgPCBv
YmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBleHBhbmQgdGhpcyB0byBBcnJheVN0b3JhZ2UsIEludDMyLCBhbmQgbWF5YmUgRG91
YmxlOgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI5NDAKICAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBvYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7CkBAIC0yMzcxLDggKzIzNzAsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogYwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGkgPj0g
MCkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSkpOworICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBpKSk7CiAgICAg
fSBlbHNlIGlmIChzdWJzY3JpcHQuaXNOdW1iZXIoKSAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYg
YXJyYXlQcm9maWxlKQogICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21D
b25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAppbmRleCA0MWM3MWI2MDA0NGUuLmMxZGZjZjljODczMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMTQ5LDYg
KzE0OSwxOCBAQAogI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAwCiAjZW5kaWYKIAorI2lm
IFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVE
X0FSUkFZUyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJHRV9UWVBFRF9BUlJBWVMg
MAorI2VuZGlmCisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgT0ZGTElORV9BU01fUkVH
SVNURVI2NCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9SRUdJU1RFUjY0IDAKKyNlbmRp
ZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCA0MmVmYjcxYzRhNjQuLmEzODg0MjYzYjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ2LDggKzEwNDYsOCBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRP
ZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAg
ICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAg
ICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUp
KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tp
cE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTY5LDE0ICsxMTY5LDEzIEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7
CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7
CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAg
IAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlH
ZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAg
ICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNl
dEluZGV4UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRl
eFF1aWNrbHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlm
ICghb2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEubV9h
cnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsK
ICAgICAgICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZGJjNDcwMDNj
Y2JmLi4wMWQxMzdlZjMxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNWQUxV
RTY0CiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1
Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQK
IAoraWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgY29uc3QgU21hbGxUeXBlZEFycmF5TWF4TGVu
Z3RoID0gY29uc3RleHByIEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgK
K2VuZAorCiBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IGNvbnN0ZXhwciBt
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbAogCiBpZiBYODZfNjQgb3IgWDg2XzY0X1dJTiBv
ciBBUk02NCBvciBBUk02NEUgb3IgUklTQ1Y2NApAQCAtMTMwMCw3ICsxMzA0LDcgQEAgbWFjcm8g
YXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0
Y2gpCiAgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4
aW5nVHlwZQogZW5kCiAKLW1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmlu
aXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzbG93UGF0aCkKK21hY3JvIGdl
dEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERv
dWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3Qg
bGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRv
IHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFz
ZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMxMSwxMyArMTMx
NSwyNiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdl
dEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBj
b25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9h
ZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlh
ZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNBcnJheUJ1ZmZlclZp
ZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgIyBXZSBoYXZlIHRvIHNpZ24tZXh0
ZW5kIGluZGV4IGhlcmUsIHNvIHRoYXQgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggd2lsbCBh
bHNvIGNhdGNoIGFueSBuZWdhdGl2ZSB2YWx1ZQorICAgICAgICBzeGkycSBpbmRleCwgaW5kZXgK
KyAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICBlbHNpZiBSRUdJU1RF
UjY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVm
aW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBs
YXRmb3Jtcy4KKyAgICAgICAgIyBXZSBoYXZlIHRvIHNpZ24tZXh0ZW5kIGluZGV4IGhlcmUsIHNv
IHRoYXQgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggd2lsbCBhbHNvIGNhdGNoIGFueSBuZWdh
dGl2ZSB2YWx1ZQorICAgICAgICBzeGkycSBpbmRleCwgaW5kZXgKKyAgICAgICAgYnFhZXEgaW5k
ZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNl
CiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5l
ZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRm
b3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFti
YXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAorICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAg
ICAgICBicWJlcSBpbmRleCwgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxUeXBlZEFy
cmF5CisgICAgICAgIHNldExhcmdlVHlwZWRBcnJheSgpCisuc21hbGxUeXBlZEFycmF5OgorICAg
IGVuZAorCiAgICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2VdLCB0Mwog
ICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5ndGgsIGJhc2UsIHNjcmF0Y2gpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KaW5kZXggMzY2MTZhNjk1YjBmLi41Y2FmMzE4YzNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3Bh
dGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVk
QXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5v
cEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRH
ZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxT
bG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZmJkYmE2OGUwZjMwLi44MjM1N2ZhYzMzMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3MTMsMTYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWQKICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAog
CisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRB
cnJheSgpCisgICAgICAgICAgICBzdG9yZWIgMSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJy
YXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVuZAorICAgIGVs
c2UKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgICAgIGNyYXNo
KCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBn
ZXQobV9iYXNlLCB0MikKQEAgLTE3NjMsNyArMTc3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAg
IGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3Vi
bGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwg
dDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBl
ZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCmluZGV4IGM5YjhmMmE3MTkxZS4uOWNkN2U0MzZm
NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVm
ZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9y
LmdldCgpLmNvcHlSZWYoKTsKIH0KIAotU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVk
QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBz
aXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBt
X2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3Ip
KQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpAQCAtNjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJiBvdGhl
cikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlzKTsKIH0KIAotQXJyYXlCdWZmZXJDb250ZW50
czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJD
b250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgc2l6
ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAg
ICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZUlu
Qnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCit2b2lkIEFycmF5QnVmZmVy
Q29udGVudHM6OnRyeUFsbG9jYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7Ci0gICAgLy8g
RG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwgc2l6ZS4KLSAgICBpZiAo
bnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMg
KiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAh
PSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSB7
Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsKKyAgICBzaXplSW5CeXRl
cyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVzLmhhc092ZXJmbG93ZWQo
KSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSB7CisgICAg
ICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2l6ZV90IHNpemVJbkJ5
dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gc2l6ZUlu
Qnl0ZXM7CisKKyAgICBVQ1BVUmVnaXN0ZXIgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlcy52
YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRpb25TaXpl
ID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRoaW5nLCBi
dXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZlciBpcyBk
ZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdl
OjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRh
LCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMu
dmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFs
bG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQogICAgIGlm
IChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRhLCAwLCBhbGxv
Y2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7CisgICAgbV9z
aXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9z
aXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1Y3RvciA9
IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAgLTE3OCw3
ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJheUJ1ZmZl
ckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJbkJ5dGVz
IDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVy
ID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVm
ZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUo
b3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlD
cmVhdGUoc291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsy
MDYsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJD
b250ZW50cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgog
Ly8gLSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBC
dXQgaW4gdGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8g
ICBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRv
cHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVn
aXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8
fCAoR2lnYWNhZ2U6OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1
cm4gY3JlYXRlRnJvbUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRp
dmVHaWdhY2FnZURlc3RydWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25l
ZCBieXRlTGVuZ3QKIC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBu
ZXcgc2V0IG9mIHR5cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nl
c3NlZAogLy8gICBkaWZmZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFs
bG9jYXRlIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlC
dWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdpc3Rl
ciBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3Ip
CiB7CiAgICAgaWYgKGRhdGEgJiYgIUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIGRhdGEpKQogICAgICAgICBHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7
CkBAIC0yMjksNyArMjI3LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
RnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4g
Y3JlYXRlKFdURk1vdmUoY29udGVudHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoVUNQ
VVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAg
cmV0dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikK
ICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsK
IH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRl
TGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CiAgICAgY29udGVu
dHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udElu
aXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcK
ICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RGTW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0
ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkK
K1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJl
Z2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVu
dEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXph
dGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUo
VUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBhdXRv
IGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kp
OwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVJlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVu
dHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQor
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJD
b250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRl
TGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1dG8g
YnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkpOwot
ICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBpZiAo
Ynl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5KGJ1
ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBj
b250ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kp
OwpAQCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZl
ckNvbnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFt
cFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK1VDUFVSZWdp
c3RlciBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgVUNQVVJlZ2lzdGVyIGxlZnQs
IFVDUFVSZWdpc3RlciByaWdodCkKIHsKICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAg
aWYgKHggPCBsZWZ0KQpAQCAtMzAxLDkgKzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpj
bGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICBy
ZXR1cm4geDsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGlu
ZGV4KSBjb25zdAorVUNQVVJlZ2lzdGVyIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBp
bmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgp
OworICAgIFVDUFVSZWdpc3RlciBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOwogICAgIGlm
IChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3VycmVudExlbmd0aCArIGluZGV4OwogICAg
IHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICsz
MTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVn
aW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENsYW1wZWRJbmRleChjbGFtcEluZGV4KGJl
Z2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNv
bnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5k
ZXgoVUNQVVJlZ2lzdGVyIGJlZ2luLCBVQ1BVUmVnaXN0ZXIgZW5kKSBjb25zdAogewotICAgIHVu
c2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgVUNQVVJl
Z2lzdGVyIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAgYXV0byBy
ZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihk
YXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJlc3VsdC0+
c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLmM2NTMzZmE4MjZiYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTMg
KzMzLDIyIEBACiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8
d3RmL1BhY2tlZFJlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCitzdGF0aWNf
YXNzZXJ0KHNpemVvZihVQ1BVUmVnaXN0ZXIpID09IHNpemVvZih1aW50NjRfdCkpOworI2Vsc2UK
Ky8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgVUNQVVJlZ2lzdGVyIHRvIHN0b3JlIHRoZSBzaXpl
IGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRHQiBvbiAzMi1i
aXQgcGxhdGZvcm1zLgorLy8gTm90ZSB0aGF0IHN0b3JpbmcgdGhlIHNpemUgaW4gYSB1aW50NjRf
dCB3b3VsZCBiZSBxdWl0ZSBtZXNzeSBvbiAzMi1iaXRzIGFzIHRoZSBKSVQgaGF2ZSB0byBiZSBh
YmxlIHRvIG1hbmlwdWxhdGUgaXQuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0
IHNob3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIp
IGlmIGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZm
ZmZ1CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzYw
LDcgQEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRS
ZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJD
b250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAg
ICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciwgQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29u
dGVudHMoKTsKICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dE1heUJlTnVsbChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHByaXZhdGU6
CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lk
LCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJ
bkJ5dGVzOworICAgIFVDUFVSZWdpc3RlciBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJy
YXlCdWZmZXJDb250ZW50cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJD
b250ZW50cyk7CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250
ZW50cygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCog
ZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0
YSwgVUNQVVJlZ2lzdGVyIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biYmKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFy
cmF5QnVmZmVyQ29udGVudHMmJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJD
b250ZW50cyYgb3BlcmF0b3I9KEFycmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4OCw3
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2Rh
dGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1h
eUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQorICAgIFVDUFVSZWdpc3RlciBzaXplSW5CeXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAgICAKICAgICBib29sIGlzU2hh
cmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEwMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0aWFsaXplCiAgICAgfTsKIAotICAgIHZvaWQgdHJ5
QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHZvaWQgdHJ5QWxsb2NhdGUoVUNQVVJlZ2lzdGVy
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9s
aWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHRyYW5zZmVyVG8o
QXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4ICsxMTQsMjggQEAgcHJpdmF0ZToKICAg
ICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIFVDUFVSZWdp
c3RlciBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJ
bmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNp
Z25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0
aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRl
KEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgVUNQVVJl
Z2lzdGVyIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKFVDUFVSZWdp
c3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZm
ZXImKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29u
c3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5
IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5k
IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
VUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9p
ZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7
CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3Q7CiAgICAgCiAgICAg
dm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFyaW5nTW9kZShBcnJheUJ1ZmZlclNo
YXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91YmxlIGVu
ZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGlj
ZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBl
bmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xp
Y2VXaXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVyIGVuZCkg
Y29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQgdW5w
aW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9p
ZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAg
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVu
dHMmJiwgY29uc3Qgdm9pZCosIFVDUFVSZWdpc3Rlcik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7
CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5z
aWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmln
aHQpOworICAgIGlubGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNv
bnN0OworICAgIHN0YXRpYyBpbmxpbmUgVUNQVVJlZ2lzdGVyIGNsYW1wVmFsdWUoZG91YmxlIHgs
IFVDUFVSZWdpc3RlciBsZWZ0LCBVQ1BVUmVnaXN0ZXIgcmlnaHQpOwogCiAgICAgdm9pZCBub3Rp
ZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzIwMSw3IEBAIGNvbnN0IHZvaWQqIEFycmF5
QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50cy5kYXRhKCk7CiB9CiAK
LXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK1VDUFVSZWdpc3RlciBB
cnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGVudHMu
c2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBAQCBib29sIEFycmF5QnVmZmVyOjpp
c1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRl
cygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gc2NhbGUgdGhp
cyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcuCi0gICAgcmV0dXJuIHNpemVv
ZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVMZW5ndGgoKSk7CisgICAg
cmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3RoKCk7CiB9CiAKIHZvaWQgQXJy
YXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLmViMDUwOWVjZGNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZm
ZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygKLSAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBi
eXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5dGVPZmZz
ZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAgICAgICAs
IG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChi
eXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPFVDUFVSZWdpc3RlciwgQ3Jhc2hPbk92ZXJmbG93PiBs
ZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5
dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjAwZWRjZDM4
NDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCgpIGNvbnN0CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQoKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3
KCk7CiAKICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25l
ZC4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRB
bGlnbm1lbnQoVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBlbGVtZW50U2l6
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAg
ICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAK
LSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJy
YXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0
byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRo
aW4gcmFuZ2UuCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJy
YXlCdWZmZXImIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25l
ZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVy
IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9mZnNl
dCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVuc2ln
bmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNpemU7
CisgICAgICAgIFVDUFVSZWdpc3RlciByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0g
Ynl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KGVsZW1lbnRTaXplKTsKICAg
ICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0
ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0
SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUg
Ym9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KTsK
IAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qg
ZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdl
dFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNp
Z25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9p
ZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGRhdGFCeXRlTGVuZ3RoLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9m
ZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBV
Q1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KTsKIAot
ICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90
IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zm
c2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5
U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAg
aW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJl
Z2lzdGVyIHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVt
YmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9m
ZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2
aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zm
c2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0g
ICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNl
dCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBVQ1BVUmVnaXN0ZXIg
YXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBVQ1BVUmVnaXN0ZXIgKm9mZnNldCwKKyAgICAgICAg
VUNQVVJlZ2lzdGVyICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9m
ZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAg
IFVDUFVSZWdpc3RlciBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxVQ1BVUmVnaXN0
ZXI+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgq
b2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVM
ZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZz
ZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxl
bmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAo
YnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVj
a2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IGFkanVzdGVkT2Zmc2V0ID0gKm9mZnNl
dDsKKyAgICAgICAgYWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAgICBhZGp1c3Rl
ZE9mZnNldCArPSBhcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3RlZE9mZnNldC5o
YXNPdmVyZmxvd2VkKCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5ieXRlTGVu
Z3RoKCkpCisgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCk7Cisg
ICAgICAgIFVDUFVSZWdpc3RlciByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0
aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6
bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHVuc2ln
bmVkIG1fYnl0ZU9mZnNldCA6IDMxOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHVpbnQ2NF90
IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZzZXQgOiAz
MTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVkIG1f
Ynl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNpbmcg
QmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdl
ZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIncyBz
dG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJyYXlC
dWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFy
cmF5LCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgo
KSA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVy
ZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgYXJyYXkt
PmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFz
ZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VB
ZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJW
aWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGRhdGFCeXRl
TGVuZ3RoLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBi
eXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0
ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93Cisg
ICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0
aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVp
bnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAg
bWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
Citib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBV
Q1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewot
ICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQg
KyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsg
ZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBv
ZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVP
ZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNl
ICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBz
aXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUlt
cGwoVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciByYW5nZUJ5dGVMZW5ndGgp
CiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9m
ZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zm
c2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2Yg
cmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVh
bChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nh
c3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChiYXNlICsgYnl0ZU9mZnNl
dCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcnJh
eUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICBpbnQgc3RhcnQsIGlu
dCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxl
bmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCArPSBhcnJheVNpemU7
Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAgIGlmIChlbmQgPCAw
KQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBl
bmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFycmF5U2l6ZSkK
LSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFydCkKLSAgICAgICAg
ZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydCk7
Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVmZmVyVmlldzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKaW5kZXggNjg4
M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAgc3RhdGljIHVuc2ln
bmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nlc3NJbmRleFZhbHVlLnRvSW5k
ZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVCh0eXBlZEFycmF5Vmlldy0+
bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKKwogICAgIGlmIChh
Y2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0IG9mIGJvdW5k
cyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBkY2MyZjUwNjRhZjIuLjdiMWVk
N2NmNTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURhdGFWaWV3OjpEYXRh
VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxl
bmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQs
IGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZSgKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0gYnVmZmVyLT5i
eXRlTGVuZ3RoKCk7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVM
ZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRl
eCBkYTA2YjRiYjIxNDQuLmRlNzE0YjYyNTA5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgRGF0YVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJy
YXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3Ro
KTsKICAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
KTsKICAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQz
LDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFs
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJv
b2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBnZXQoVUNQVVJlZ2lzdGVyIG9mZnNldCwgYm9v
bCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBp
ZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxl
bmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0
bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCByZWFkKFVDUFVSZWdpc3Rl
ciYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAg
ICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0PFQ+KG9mZnNldCwgbGl0
dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8fCAqc3RhdHVzKQpAQCAt
NjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVu
ZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2b2lkIHNldChVQ1BVUmVnaXN0ZXIg
b2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0
cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQg
KyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIERhdGFWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3Rl
ciBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBi
ZTdlNmMwNTM0ZmEuLmIyODc5YjNkZjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMzLDI0IEBAIG5h
bWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVyaWNU
eXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoVUNQVVJlZ2lzdGVyIGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAg
c3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFVDUFVSZWdp
c3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0
cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVh
dGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJl
c3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgVUNQVVJlZ2lzdGVyIG9mZnNldCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQorICAg
IGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgVUNQVVJl
Z2lzdGVyIGNvdW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHNldFJhbmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEpLApAQCAtNTgsMzkgKzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAq
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wg
emVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wgemVyb1Jh
bmdlKFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBjb3VudCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKSwgY291bnQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0K
ICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAg
ICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3Ro
KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKFVD
UFVSZWdpc3RlciBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4g
ZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgs
IGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChVQ1BVUmVnaXN0ZXIgaW5kZXgsIGRv
dWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhd
ID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lk
IHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkg
Y29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShVQ1BVUmVnaXN0ZXIgaW5kZXgsIHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgp
W2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9v
bCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgY291
bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UmFuZ2VJ
bXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBAIC05OCwx
OCArOTgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5z
aWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0luYm91bmRE
YXRhKFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBjb3VudCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1
cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxl
bmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNl
dCArIGNvdW50ID49IG9mZnNldCk7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JF
cXVhbChvZmZzZXQsIGNvdW50LCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0g
ICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdDsKLSAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmlu
YWwKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyAr
MTExLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlw
ZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGFl
NWJkZDhjNmEzMS4uNTljNjllMzEyMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlW
aWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lz
dGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZp
ZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxVQ1BVUmVnaXN0ZXI+OjptYXgo
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7
CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5
dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlD
cmVhdGUoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdCk7CkBAIC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5z
aWduZWQgbGVuZ3RoKQorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIGxlbmd0
aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQs
NyArNzUsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBp
ZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcgQEAgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAg
ICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKQEAg
LTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1
cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QK
LXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRBbmRM
ZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwotICAg
IEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFTU0VS
VChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlwZT4o
KmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ5
Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjI3YTk3NzlmNDk2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1ZmZl
clZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25D
b250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1
aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1cmUoc3Ry
dWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25D
b250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLAor
ICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHVu
c2lnbmVkIGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDog
bV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTYzLDcgKzYz
LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCiAgICAgaWYgKGxlbmd0aCA8PSBmYXN0U2l6ZUxpbWl0KSB7CiAgICAgICAgIC8v
IEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCogdGVtcDsKLSAgICAgICAgc2l6
ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7CisgICAgICAgIFVDUFVSZWdp
c3RlciBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNpemUpOwogICAgICAgICB0ZW1wID0g
dm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0s
IHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAg
ICAgIGlmICghdGVtcCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgxLDE4ICs4MSwxOCBAQCBK
U0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4
dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQg
YXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWQ8VUNQVVJlZ2lz
dGVyLCBSZWNvcmRPdmVyZmxvdz4gc2l6ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9IGVsZW1lbnRT
aXplOworICAgIGlmIChzaXplLmhhc092ZXJmbG93ZWQoKSB8fCBzaXplID4gTUFYX0FSUkFZX0JV
RkZFUl9TSVpFKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXpl
KTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3RoKTsKKworICAgIG1fdmVjdG9yID0gVmVjdG9yVHlw
ZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUudmFsdWUoKSks
IGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3RvcikKICAgICAgICAgcmV0dXJuOwogICAgIGlmICht
b2RlID09IFplcm9GaWxsKQogICAgICAgICBtZW1zZXQodmVjdG9yKCksIDAsIHNpemUpOwogICAg
IAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUpOworICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1v
cnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsKICAgICAKICAgICBtX3N0cnVjdHVyZSA9IHN0cnVj
dHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6ZVR5cGVkQXJyYXk7CkBAIC0xMDAsNyArMTAwLDcg
QEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNv
bnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBs
ZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCiAgICAgLCBtX21vZGUoV2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcgKzExNCw3IEBA
IEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250
ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0
aW9uQ29udGV4dCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgRGF0YVZpZXdUYWcpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3Rl
ciBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKQEAgLTIzOCw5
ICsyMzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNUeXBlIHR5cGUp
CiAgICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlwZV07CiB9CiAK
LXVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKK1VDUFVSZWdp
c3RlciBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICBDaGVja2VkPFVDUFVSZWdpc3Rlcj4gcmVzdWx0ID0gbGVuZ3RoKCk7Cisg
ICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplKHR5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdC52YWx1
ZSgpOworI2Vsc2UKKyAgICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVyZmxvdyBpcyBhbHJlYWR5IGNo
ZWNrZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRkIHRoZSBleHRyYSBzYW5pdHkg
Y2hlY2sgd2hlbiBhc3NlcnRzIGFyZSBlbmFibGVkLgogICAgIHJldHVybiBsZW5ndGgoKSAqIGVs
ZW1lbnRTaXplKHR5cGUoKSk7CisjZW5kaWYKIH0KIAogQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZm
ZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2Nyw3ICsyNzQsNyBAQCBBcnJh
eUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKIAogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSB0aGlzLT5i
eXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVu
Z3RoKCk7CiAKICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgIGNhc2UgRmFzdFR5cGVkQXJyYXk6
IHsKQEAgLTMxNSw4ICszMjIsOCBAQCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVm
ZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKICAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0g
cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsK
LSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIg
Ynl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3Ro
ID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9S
WSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMjIEFycmF5VHlwZTogXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggZGQwMWY3Zjgy
YTUzLi40NjcwYjQ2ZDhiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGZhc3RTaXplTGltaXQgPSAxMDAwOworICAgIHN0YXRpYyBjb25zdGV4
cHIgVUNQVVJlZ2lzdGVyIGZhc3RTaXplTGltaXQgPSAxMDAwOwogICAgIHVzaW5nIFZlY3RvclB0
ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0
cj47CiAKICAgICBzdGF0aWMgdm9pZCogbnVsbFZlY3RvclB0cigpCkBAIC0xMTcsMTAgKzExNywx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxsLnJhd0JpdHMoKTsKICAgICB9CiAgICAg
Ci0gICAgc3RhdGljIHNpemVfdCBzaXplT2YodWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVt
ZW50U2l6ZSkKKyAgICBzdGF0aWMgVUNQVVJlZ2lzdGVyIHNpemVPZihVQ1BVUmVnaXN0ZXIgbGVu
Z3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpIC0gMSkKLSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7Cisg
ICAgICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBsZW5ndGg7CisgICAgICAgIHJl
c3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25T
aXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSArMTM4LDI1IEBA
IHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSW5pdGlhbGl6YXRpb25Nb2Rl
IHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07CiAgICAgICAgIAotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3Qg
bGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0Zp
bGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwg
U3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUsIElu
aXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMg
aXMgb25seSBmb3IgY29uc3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVzZWQgYnkg
dGhlIEpJVCdzIHNsb3cgcGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1
cmUqLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0cnVjdGlv
bkNvbnRleHQoU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsK
ICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQo
CiAgICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAg
ICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAg
ICAgIAogICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0YVZpZXcgfTsKICAgICAgICAgQ29u
c3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgRGF0YVZpZXdUYWcpOworICAgICAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVD
UFVSZWdpc3RlciBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAgICAgICAgIAogICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9
CiAgICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJl
TnVsbChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX21vZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJl
dHVybiBtX2J1dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3ICsxNjQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgIHVzaW5nIFZlY3Rv
clR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47
CiAgICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAgIHVpbnQzMl90IG1fbGVuZ3Ro
OworICAgICAgICBVQ1BVUmVnaXN0ZXIgbV9sZW5ndGg7CiAgICAgICAgIFR5cGVkQXJyYXlNb2Rl
IG1fbW9kZTsKICAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAgICB9OwpAQCAtMTkw
LDExICsxOTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fdmVjdG9yLmdldE1heUJlTnVsbChsZW5ndGgoKSk7IH0KICAgICB2b2lkKiB2ZWN0b3JXaXRo
b3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldFVuc2FmZSgpOyB9
CiAgICAgCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKTsKLSAgICBpbmxpbmUgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOworICAgIGlubGlu
ZSBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCgpOworICAgIGlubGluZSBzdGQ6Om9wdGlvbmFsPFVD
UFVSZWdpc3Rlcj4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwogCi0gICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLSAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
KCkgY29uc3Q7CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsKIAogICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAgcHJvdGVjdGVkOgogICAg
IEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7CiAKICAgICBWZWN0b3JQ
dHIgbV92ZWN0b3I7Ci0gICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgVUNQVVJlZ2lzdGVyIG1f
bGVuZ3RoOwogICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgK
aW5kZXggMWQwNzJiNzFhY2I3Li42MzE4MTU1ZTY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCkBAIC05
OSw3ICs5OSw3IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zm
c2V0SW1wbCgpCiAgICAgcHRyZGlmZl90IGRlbHRhID0KICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnQ4X3QqPih2ZWN0b3JXaXRob3V0UEFDVmFsaWRhdGlvbigpKSAtIHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihidWZmZXItPmRhdGEoKSk7CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVsdGEpOworICAgIFVDUFVSZWdpc3RlciByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxVQ1BVUmVnaXN0ZXI+KGRlbHRhKTsKICAgICBpZiAocmVxdWVzdGVyID09IE11dGF0b3IpCiAg
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHJlc3VsdCkgPT0gZGVsdGEpOwog
ICAgIGVsc2UgewpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJh
eUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1p
bmxpbmUgdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQoKQoraW5saW5lIFVD
UFVSZWdpc3RlciBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCiB7Ci0gICAgcmV0dXJu
IGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2lnbmVkPigpOworICAgIHJldHVybiBieXRlT2Zm
c2V0SW1wbDxNdXRhdG9yLCBVQ1BVUmVnaXN0ZXI+KCk7CiB9CiAKLWlubGluZSBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgp
CitpbmxpbmUgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IEpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29u
Y3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+KCk7CisgICAgcmV0dXJuIGJ5
dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVy
Pj4oKTsKIH0KIAogaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJW
aWV3Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGIxZWE5ZGEwZmU0Yy4uNDk2MTZmNWM4Mzhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25t
b3ZhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC0yOTgsNiArMjk5LDcgQEAgcHVibGljOgogICAgIGludDMyX3QgdG9JbnQzMihKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvVUludDMyKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9JbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNo
YXIqIGVycm9yTmFtZSkgY29uc3Q7CisgICAgVUNQVVJlZ2lzdGVyIHRvVHlwZWRBcnJheUluZGV4
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKICAgICBkb3Vi
bGUgdG9MZW5ndGgoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDM0ZWEy
MTQ2MGEwZC4uODBjMjNmNmM2OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDE0ICs2OSw0NyBAQCBpbmxpbmUgdWlu
dDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIg
Y2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlm
IChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CisKKyAgICBpZiAo
aXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworCisgICAgaWYgKGQgPiBzdGF0
aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpIHsK
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNDOjp0b0ludDMyKGQpKTsKK30KKworaW5saW5lIFVDUFVSZWdpc3RlciBKU1ZhbHVlOjp0
b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBjaGFy
KiBlcnJvck5hbWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUg
ZCA9IHRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgMCk7CisgICAgaWYgKGQgPD0gLTEpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmco
ZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKwogICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworCisgICAgaWYg
KGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSkpIHsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIEFsbCBvZiB0aGlzIG1vbnN0cm9zaXR5IGlz
IGp1c3QgdG8gZ2l2ZSB0aGUgY29ycmVjdCByZXN1bHQgb24gMTw8MzIuCisgICAgVUNQVVJlZ2lz
dGVyIG91dHB1dE9mZnNldCA9IDA7CisgICAgZG91YmxlIGlucHV0T2Zmc2V0ID0gMDsKKyAgICBV
Q1BVUmVnaXN0ZXIgaW50MzJNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KTsKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oaW50MzJNYXgpKSB7CisgICAgICAg
IG91dHB1dE9mZnNldCA9IGludDMyTWF4OworICAgICAgICBpbnB1dE9mZnNldCA9IGludDMyTWF4
OworICAgIH0KKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG91dHB1dE9mZnNldCArIHN0
YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQzo6dG9JbnQz
MihkIC0gaW5wdXRPZmZzZXQpKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8j
c2VjLXRvaW50ZWdlcm9yaW5maW5pdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAKaW5kZXggNmZhYjQ2NWRkM2I5Li45ODVkOWUyNDQ5ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIs
NyBAQCBKU0RhdGFWaWV3OjpKU0RhdGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYg
Y29udGV4dCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcgogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3Ojpj
cmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcwLDI1
ICs3MCwyNSBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRh
Vmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVD
UFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3Ojpj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIpCiB7CiAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJv
b2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0Kiwg
dW5zaWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3Qq
LCBVQ1BVUmVnaXN0ZXIsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBVQ1BVUmVnaXN0ZXIpCiB7
CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpT
VmFsdWUpCitib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJl
Z2lzdGVyLCBKU1ZhbHVlKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
aAppbmRleCAyYzc4NWU0NzYxMWEuLjVlZTFkODYxOWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZSgK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciBieXRlTGVu
Z3RoKTsKICAgICAKICAgICAvLyBEdW1teSBtZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3
b3JrOyB0aGVzZSBhcmUganVzdCBpbiBwbGFjZSB0bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1w
bGF0ZSBzcGVjaWFsaXphdGlvbiB3ZSBkbyBlbHNld2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0RhdGFW
aWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciwgSlNPYmpl
Y3QqLCBVQ1BVUmVnaXN0ZXIsIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIGJvb2wgc2V0SW5k
ZXgoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpTVmFsdWUpOwogICAgIAogICAgIEFy
cmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
OyB9CiAgICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKaW5k
ZXggOTQ5MDYyNDdlYTY1Li5kOGM5OWMzYzY4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDExICsx
MzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2Yg
RGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJieXRlT2Zmc2V0Iik7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAg
IGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lzdGVyIGVsZW1lbnRT
aXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6
ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBsaXR0
bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihnbG9i
YWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChk
YXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRh
Y2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRh
Vmlldy0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+
bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0
ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApA
QCAtMTgyLDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
Y2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgo
Z2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZz
ZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBs
aXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAm
JiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAgIGxpdHRsZUVuZGlh
biA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9Cb29sZWFuKGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3
LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZy
b20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5s
ZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgo
KTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRl
TGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaAppbmRleCBjMjJjNTVhMGQ4MWQuLjA1NjgzOGM5ZTQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRl
ICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUuaCIKKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU1LDEw
ICs1NiwxMCBAQCBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBDbGFzc0luZm8qIGdldEJpZ1VpbnQ2
NEFycmF5Q2xhc3NJbmZvKCk7CiAvLyAgICAgU3RydWN0dXJlKiBTICAgICAvLyBmcm9tIEpTQ2Vs
bAogLy8gICAgIEJ1dHRlcmZseSogQiAgICAgLy8gZnJvbSBKU09iamVjdAogLy8gICAgIEVsZW1l
bnRUeXBlKiBWCi0vLyAgICAgdWludDMyX3QgTAorLy8gICAgIFVDUFVSZWdpc3RlciBMCiAvLyAg
ICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwg
b2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQorLy8gVGhlc2UgZmllbGRz
IHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtl
CiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAvLwogLy8gQiBpcyB1c3VhbGx5IHVudXNlZCBidXQg
bWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwgIm92ZXJmbG93IiBkYXRhIGZvcgpAQCAtMTAzLDE1
ICsxMDQsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBlbGVt
ZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKIAotICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BV
UmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNy
ZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lz
dGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBV
Q1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0Kiwg
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAotICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsgfQotICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQor
ICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZVNp
emUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiB0
eXBlZFZlY3RvcigpIGNvbnN0CiAgICAgewpAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0
b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAg
IGJvb2wgaW5Cb3VuZHMoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50
IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1
cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHko
VUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkg
JiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNl
dEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wg
Y2FuU2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYm
IEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkp
IGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2
ZVZhbHVlKFVDUFVSZWdpc3RlciBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBt
X2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3RvcigpW2ldOwogICAgIH0KICAgICAK
LSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIEpTVmFs
dWUgZ2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRleFF1aWNrbHlBc05hdGl2
ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2
ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCisgICAgdm9p
ZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKFVDUFVSZWdpc3RlciBpLCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7
CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNl
dEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2tseVRv
TmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BVUmVnaXN0ZXIgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAg
IHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlw
ZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9i
YWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5h
dGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xv
YmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxF
bGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFs
dWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRh
cHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4g
dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxB
ZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5
OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2Fu
QWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0g
ICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8v
IGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0
OworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5ndGgs
IG1fbGVuZ3RoKTsKICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNl
cHQ6IGlmIGl0IHJldHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9w
cmlhdGUgZXhjZXB0aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFu
Z2UoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24g
ZXJyb3I7IGlmIGl0IHJldHVybnMgZmFsc2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJv
d24gYW4gZXhjZXB0aW9uLgotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
b2Zmc2V0LCBKU09iamVjdCosIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
LCBDb3B5VHlwZSB0eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQo
SlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU09iamVjdCosIFVDUFVSZWdp
c3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlUeXBlID0gQ29weVR5
cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZp
ZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAgLTMxOCw4ICszMjIsOCBA
QCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ug
b24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90
aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBv
ZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAorICAgICAgICBV
Q1BVUmVnaXN0ZXIgb2JqZWN0T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBDb3B5VHlwZSk7
CiAKICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlw
ZWQgQXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAg
LTM0OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsK
ICAgICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoVUNQVVJl
Z2lzdGVyIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0g
cHVyaWZ5TmFOKGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uZWVkYTU1ZTNjYTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0
Myw3ICsxNDMsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlC
dWZmZXJJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBWaWV3Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9m
ZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBm
aXJzdEFyZ3VtZW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdp
c3Rlcj4gbGVuZ3RoT3B0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcg
QEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgVUNQVVJl
Z2lzdGVyIGxlbmd0aCA9IDA7CiAgICAgICAgIGlmIChsZW5ndGhPcHQpCiAgICAgICAgICAgICBs
ZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAgICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgy
LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlz
IGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkgb2YgdGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlh
bGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAg
ICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoOwogICAgICAgICBKU0FycmF5QnVmZmVyKiBjdXN0b21C
dWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChpc1R5cGVkVmlldyhvYmplY3QtPmNsYXNz
SW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBp
bmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJs
ZW5ndGgiKTsKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0gZmlyc3RWYWx1ZS50b1R5cGVkQXJy
YXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFZpZXdDbGFz
czo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgpKTsKIH0KQEAgLTI3NSw4
ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgfQogCiAgICAgSlNWYWx1ZSBm
aXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICB1bnNpZ25l
ZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aCA9IHN0ZDo6
bnVsbG9wdDsKKyAgICBVQ1BVUmVnaXN0ZXIgb2Zmc2V0ID0gMDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFVDUFVSZWdpc3Rlcj4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAxKSB7CiAg
ICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRleChn
bG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMV0FZU19JTkxJ
TkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0ds
b2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFsdWUgaXMgcHJlc2Vu
dCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAgICAgICAgSlNWYWx1
ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgICAg
ICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgICAgICBs
ZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBl
ZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0
aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVHlwZWRBcnJheUlu
ZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlw
ZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIzODc5MmQx
MC4uMDUzY2ZiNTFlMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5jbHVkZSAi
VHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51
bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2
LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3Ry
dWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlV2l0aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFs
aXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksMTEgKzEw
MCwxMSBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBVQ1BVUmVnaXN0ZXIg
Ynl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIFVD
UFVSZWdpc3RlciBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIEFT
U0VSVChidWZmZXIpOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxl
bmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemUpKSB7CiAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSk7CkBAIC0xNDUsNyArMTQ2LDcg
QEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKAotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBvZmZz
ZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1OSw4
ICsxNjAsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0
ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdp
dGhTcGVjaWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwK
LSAgICB1bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBl
KQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBvZmZzZXQs
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIFVDUFVS
ZWdpc3RlciBvdGhlck9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjE4LDcgKzIxOSw3IEBAIGJvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgICAgIHx8
IGV4aXN0aW5nQnVmZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5nQnVmZmVyKCkKICAgICAgICAgfHwg
KGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUgJiYgdmVjdG9yKCkgPD0gb3RoZXItPnZl
Y3RvcigpKQogICAgICAgICB8fCB0eXBlID09IENvcHlUeXBlOjpMZWZ0VG9SaWdodCkgewotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9y
IChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgc2V0
SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBP
dGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAg
ICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0
KSkpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKICAgICAvLyBOb3cgd2UgZWl0aGVyIGhhdmUg
KDJCKSBvciAoMykgLSBzbyBmaXJzdCB3ZSB0cnkgdG8gY292ZXIgKDJCKS4KICAgICBpZiAoZWxl
bWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBsZW5ndGg7IGktLTspIHsKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxlbmd0aDsg
aS0tOykgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAg
ICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxB
ZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0
aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjM4LDExICsyMzksMTEgQEAgYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAg
ICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGludGVybWVkaWF0ZSB0cmFuc2ZlciBidWZmZXIg
KGkuZS4gY2FzZSAoMykpLgogICAgIFZlY3Rvcjx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlLCAzMj4g
dHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGkt
LTspIHsKKyAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAg
IHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRh
cHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShp
ICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBp
LS07KQorICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBsZW5ndGg7IGktLTspCiAgICAgICAgIHNl
dEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsgaSwgdHJhbnNmZXJCdWZmZXJbaV0p
OwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0ICsyNTEsMTQgQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBv
ZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIFVDUFVSZWdpc3RlciBvYmpl
Y3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNzSW5m
byh2bSk7CiAgICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6dHlw
ZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1l
bWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIgZmFz
dCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCiAg
ICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxlbmd0
aCwgb3RoZXItPmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0zMTIsOSArMzEzLDExIEBAIGJvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgaWYgKCFzdWNj
ZXNzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIC8vIFZlcmlmeSB0aGF0
IHdlIHdvbid0IGV2ZXIgY2FsbCBvYmplY3QtPmdldCgpIHdpdGggYW4gaW5kZXggb2YgVUlOVF9N
QVggb3IgbW9yZQorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1N1bVNtYWxsZXJUaGFuT3JFcXVh
bChzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9i
amVjdE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpKSk7CiAgICAgICAgIC8vIFdlIGNvdWxkIG9wdGltaXplIHRoaXMgY2Fz
ZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+
Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9iamVjdE9mZnNldCk7CisgICAgICAgIGZvciAoVUNQVVJl
Z2lzdGVyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsg
b2JqZWN0T2Zmc2V0KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CiAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3Qs
IG9mZnNldCArIGksIHZhbHVlKTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3Bl
LmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDRjMGViZDFmNjE2NS4uYTk3NDczNzNjNGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpT
Q2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCitjbGFzcyBBcnJheVByb2ZpbGU7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJT
ZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOwpAQCAtMjExLDEwICsyMTIsOCBAQCBwdWJs
aWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIHB1dEJ5SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgaWYgKGNhblNldEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUsIHZhbHVl
KSkgewotICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
KTsKKyAgICAgICAgaWYgKHRyeVNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4g
bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
dW5zaWduZWQpIGNvbnN0OwotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJh
eSh1bnNpZ25lZCkgY29uc3Q7CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFy
cmF5KHVuc2lnbmVkLCBBcnJheVByb2ZpbGUqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiAgICAg
Ym9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC0zNDUs
MTQgKzM0NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICB9CiAgICAgfQotICAgICAgICAKLSAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1
bnNpZ25lZCBpKSBjb25zdAorCisgICAgLy8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9m
aWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAor
ICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlID0gbnVsbHB0cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgICAgICAgICBpZiAoY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVBy
b2ZpbGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9J
TkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDExLDM1ICs0MTEsNzMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gZ2V0KGdsb2JhbE9iamVjdCwgaSk7CiAgICAgfQogCi0g
ICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVl
KSBjb25zdDsKICAgICB2b2lkIHNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQs
IEpTVmFsdWUpOwotICAgICAgICAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9y
YWdlSW5kZXhpbmdUeXBlKFZNJiwgdW5zaWduZWQsIEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJu
IHRydWUgdG8gaW5kaWNhdGUgc3VjY2VzcworICAgIC8vIFVzZSB0aGUgKG9wdGlvbmFsKSBhcnJh
eSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxl
dmFudAorICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwg
SlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHkoVk0m
IHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0
dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdNb2RlKCkpIHsKICAgICAgICAgY2Fz
ZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1cm4gY2FuU2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ5
U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2LCBhcnJheVByb2ZpbGUpOwogICAgICAg
ICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOgot
ICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAg
IGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNh
c2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAo
aSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBj
b252ZXJ0SW50MzJUb0RvdWJsZU9yQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZt
LCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRB
QkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91
dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGlj
TGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSAr
IDEpOworICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgdik7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9E
T1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKCF2LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9D
b250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG91YmxlIHZhbHVl
ID0gdi5hc051bWJlcigpOworICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldElu
ZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRoaXMsIGkp
ID0gdmFsdWU7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgp
KQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9uQXJyYXlX
aXRoQXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAg
ICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKKyAgICAgICAg
ICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdl
SW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVy
Zmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkKLSAgICAgICAgICAgICAgICAmJiAh
IWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQorICAgICAg
ICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkg
fHwgIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5
cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgp
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAg
IAorCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHYpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5Lmdl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aAppbmRleCA2ZTFiYjFiNTlmMWUuLmZiYjQ5NDZjMmNlNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVu
c2lnbmVkIGkpIGNvbnN0CiAgICAgfQogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25z
dAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
dW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dp
dGNoICh0eXBlKCkpIHsKLSNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAg
ICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDpcCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3Qg
SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVl
KTsKLSAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVX
KENBU0VfVFlQRURfQVJSQVlfVFlQRSkKLSN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQorI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFy
cmF5TWF4TGVuZ3RoICYmIGFycmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRN
YXlCZUxhcmdlVHlwZWRBcnJheSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9m
aWxlKTsKKyNlbmRpZgogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3aXRjaCAodHlwZSgpKSB7
CiAjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAgICAgY2FzZSBuYW1lICMj
IEFycmF5VHlwZSA6IHtcCkBAIC01MTIsNyArNTA2LDUwIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9Ci0gICAgCisKK2lubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mIHZtLCB1bnNp
Z25lZCBpLCBKU1ZhbHVlIHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+
YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYg
eCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xkID0geC5nZXQoKTsKKyAg
ICB4LnNldCh2bSwgdGhpcywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAgICAgICAgKytzdG9yYWdl
LT5tX251bVZhbHVlc0luVmVjdG9yOworICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgo
KSkKKyAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7CisgICAgfQorfQorCitp
bmxpbmUgYm9vbCBKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQoreworICAgIHN3
aXRjaCAodHlwZSgpKSB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNkZWZpbmUgVVBE
QVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7XAorICAgICAgICBpZiAoKGkg
PiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoKSAmJiBhcnJheVByb2Zp
bGUpXAorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgp
O1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbHNlCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9G
SUxFKGksIGFycmF5UHJvZmlsZSkgZG8ge1wKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxl
KTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJB
WV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKKyAgICAgICAg
YXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpO1wK
KyAgICAgICAgaWYgKCF0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdikpXAorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlO1wKKyAgICAgICAgdHlwZWRBcnJheS0+c2V0SW5kZXhRdWlj
a2x5KGksIHYpO1wKKyAgICAgICAgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxl
KTtcCisgICAgICAgIHJldHVybiB0cnVlO1wKKyAgICB9CisgICAgRk9SX0VBQ0hfVFlQRURfQVJS
QVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKKyN1bmRl
ZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKKyN1bmRlZiBVUERBVEVfQVJSQVlfUFJPRklMRQorICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIGlubGluZSB2b2lk
IEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCBjZTczMGYzYmY5
NjUuLjA5MTllNzIxODZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaApAQCAtODk4LDggKzg5OCw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUg
Z2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAg
ICAgaWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KGJhc2UpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaW5k
ZXgpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4
UXVpY2tseShpbmRleCkpOworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRy
eUdldEluZGV4UXVpY2tseShpbmRleCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJp
bmcoYmFzZSktPmNhbkdldEluZGV4KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QYWdlQ291bnQuaAppbmRleCBlOGRjMWEzMGFlZGQuLjIzNzBkOThiN2FjZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaApAQCAtOTYsNyArOTYsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQg
KiBLQjsKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291
bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSAvIHN0YXRpY19jYXN0PHVpbnQ2NF90PihwYWdl
U2l6ZSkpOwogCiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhODQ4MDJlODYw
M2IuLmQxMTc0NGNiNTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMC0wNSAgUm9iaW4g
TW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00gdG8g
dXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVTRV9MQVJHRV9UWVBFRF9BUlJB
WVMgZmxhZyB3aGljaCBpcyBlcXVpdmFsZW50IHRvIFVTRV9KU1ZBTFVFNjQsIGl0IHByb3ZlZCB1
c2VmdWwgdG8gdGVzdCB0aGluZ3MgYW5kIGNhdGNoIGJyZWFrYWdlIG9uIDMyLWJpdCBwbGF0Zm9y
bXMgd2l0aG91dCByZWx5aW5nIG9uIEVXUy4KKyAgICAgICAgQWxzbyBtYWRlIHNvbWUgb2YgQ2hl
Y2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVh
c3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAgICogd3RmL0No
ZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAo
V1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVVzZS5oOgorCiAyMDIxLTEwLTA1ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwICMyOiBXVEY6
OlJldGFpblB0cjw+IGFsbG93cyBhc3NpZ25tZW50IG9mIHR3byBwb2ludGVyIHR5cGVzIHRoYXQg
YXJlIG5vdCBhc3NpZ25hYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBmZjE1
NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVD
aGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBzaXplb2Yo
U291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46
OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJj
ZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291
cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBj
b252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4K
ICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4
KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCB0cnVl
PiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBi
b29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBT
YW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGlu
Y3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVt
ZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3RkOjpudW1l
cmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNl
LCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1ZSB3aWxs
IGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAgLy8gQ2Fz
dGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNvdXJjZSBp
cyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQs
IFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCBmYWxz
ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMg
Ym9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8g
VGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFuIHRoZSB0
YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAgIHJldHVy
biB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0
Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBz
dGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGlu
Qm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBz
YW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRy
dWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAg
c3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8v
IFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0No
ZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2lnbmVkIHdp
dGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwgaXQgaXMg
YWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihTb3VyY2Up
KQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0No
ZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5zaWduZWQg
d2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7CiAgICAg
fQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wg
aXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRTYWZlbHko
U291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252ZXJ0U2Fm
ZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0luQm91bmRz
PFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiArOTk2LDEz
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJvZHVjdE92
ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+KGFyZ3Mu
Li4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVja2VkPFQs
IFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVybiAhc3Vt
Lmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQogCiB1c2lu
ZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6
OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6
OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5nIFdURjo6
aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCA5YzlmODBlM2Zk
MWIuLjYwYWE4YWMxMjNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2Uu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xNDcsNiArMTQ3LDExIEBA
CiAjZGVmaW5lIFVTRV9CSUdJTlQzMiAwCiAjZW5kaWYKIAorI2lmIFVTRShKU1ZBTFVFNjQpCisv
LyBXaGV0aGVyIHRvIHN1cHBvcnQgdHlwZWQgYXJyYXlzID4gMkdCCisjZGVmaW5lIFVTRV9MQVJH
RV9UWVBFRF9BUlJBWVMgMQorI2VuZGlmCisKIC8qIEZJWE1FOiBUaGlzIG5hbWUgc2hvdWxkIGJl
IG1vcmUgc3BlY2lmaWMgaWYgaXQgaXMgb25seSBmb3IgdXNlIHdpdGggQ2FsbEZyYW1lKiAqLwog
LyogVXNlIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDEpIHRvIGdldCBDYWxsRnJhbWUqICovCiAj
aWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDM0M2IyNzYyNmM4Yy4uNDNhYTQzOGUxMmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMjEtMTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTb21lIHBhcnRzIG9mIFdlYkNvcmUgdXNlIFR5cGVkQXJyYXlzLCBhbmQgd291bGQg
bm90IGJ1aWxkIGFmdGVyIEkgbWFkZSB0aGUgbGVuZ3RoKCkgZnVuY3Rpb24gb24gdHlwZWQgYXJy
YXlzIHJldHVybiBzaXplX3QgaW5zdGVhZCBvZiB1aW50MzJfdC4KKyAgICAgICAgSSBmaXhlZCBp
dCB0cml2aWFsbHkgYnkgUkVMRUFTRV9BU1NFUlRpbmcgdGhhdCB0aGUgc2l6ZV90IGZpdHMgaW4g
YSB1aW50MzJfdCBhbmQgdGhlbiBjYXN0aW5nIGl0LgorICAgICAgICBObyBuZXcgdGVzdHMgZm9y
IFdlYkNvcmUgYXMgdGhlcmUgaXMgbm8gaW50ZW5kZWQgYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyOjpjb3B5VG9DaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0
aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0
Qnl0ZUZyZXF1ZW5jeURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6
Z2V0RmxvYXRUaW1lRG9tYWluRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5
c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oOgorCiAyMDIxLTEwLTA1ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIy
ODMzMzUpOiBNb21lbnR1bSBzY3JvbGxpbmcgaXMgbm8gbG9uZ2VyIGxvY2tlZCB0byBhbiBheGlz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmlu
ZGV4IGNiN2U4NGQ0NTM4My4uMmRiNDljYTI0YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTkzLDEyICsxOTMsMTIgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFy
cmF5PiYmIGRlc3RpbmF0aW9uLAogICAgIAogICAgIEZsb2F0MzJBcnJheSogY2hhbm5lbERhdGEg
PSBtX2NoYW5uZWxzW2NoYW5uZWxOdW1iZXJdLmdldCgpOwogICAgIAotICAgIHNpemVfdCBkYXRh
TGVuZ3RoID0gY2hhbm5lbERhdGEtPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBkYXRhTGVu
Z3RoID0gY2hhbm5lbERhdGEtPmxlbmd0aCgpOwogICAgIAogICAgIGlmIChidWZmZXJPZmZzZXQg
Pj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBj
b3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgVUNQVVJlZ2lzdGVyIGNvdW50
ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3Rp
bmF0aW9uLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNy
YyA9IGNoYW5uZWxEYXRhLT5kYXRhKCk7CkBAIC0yMjEsMTIgKzIyMSwxMiBAQCBFeGNlcHRpb25P
cjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNv
dXJjZSwgdW5zaWduZQogICAgIAogICAgIEZsb2F0MzJBcnJheSogY2hhbm5lbERhdGEgPSBtX2No
YW5uZWxzW2NoYW5uZWxOdW1iZXJdLmdldCgpOwogICAgIAotICAgIHNpemVfdCBkYXRhTGVuZ3Ro
ID0gY2hhbm5lbERhdGEtPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBkYXRhTGVuZ3RoID0g
Y2hhbm5lbERhdGEtPmxlbmd0aCgpOwogICAgIAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0
YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9
IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgVUNQVVJlZ2lzdGVyIGNvdW50ID0gZGF0
YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKHNvdXJjZS5nZXQo
KS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBzb3VyY2Ut
PmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0
aW1lQW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uYWM4OWNhZWJlY2Y5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5j
cHAKQEAgLTE5Niw4ICsxOTYsOCBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVx
dWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAgZG9GRlRBbmFseXNp
c0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxpbmVhciBtYWduaXR1
ZGUgdG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGgg
PSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWlu
KHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRl
c3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3Qg
bGVuZ3RoID0gc3RkOjptaW4obWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpLCBkZXN0aW5hdGlvbkxl
bmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgY29uc3QgZG91YmxlIHJhbmdl
U2NhbGVGYWN0b3IgPSBtX21heERlY2liZWxzID09IG1fbWluRGVjaWJlbHMgPyAxIDogMSAvICht
X21heERlY2liZWxzIC0gbV9taW5EZWNpYmVscyk7CiAgICAgICAgIGNvbnN0IGRvdWJsZSBtaW5E
ZWNpYmVscyA9IG1fbWluRGVjaWJlbHM7CkBAIC0yMjcsOCArMjI3LDkgQEAgdm9pZCBSZWFsdGlt
ZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5EYXRhKEZsb2F0MzJBcnJheSYgZGVzdGluYXRp
b25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIHVuc2ln
bmVkIGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6
bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0
aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZm
dFNpemUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZm
dFNpemUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAg
ICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRC
dWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNT
RVJUKGlzSW5wdXRCdWZmZXJHb29kKTsKQEAgLTI1MSw4ICsyNTIsOSBAQCB2b2lkIFJlYWx0aW1l
QW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFy
cmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBmZnRT
aXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRT
aXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25M
ZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBmZnRTaXplID0g
dGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBk
ZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBp
c0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6
ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lu
cHV0QnVmZmVyR29vZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjllODQ2N2FkNjJhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC0xMjYzLDggKzEyNjMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICB3cml0ZShJbWFnZURhdGFUYWcpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPndpZHRo
KCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsKLSAgICAgICAgICAg
ICAgICB3cml0ZShkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7CisgICAgICAgICAg
ICAgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFMZW5ndGggPSBkYXRh
LT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGguaGFzT3Zl
cmZsb3dlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhTGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTMxMSw4ICsxMzE2LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIHdyaXRlKEFycmF5QnVmZmVyVGFnKTsKLSAgICAgICAgICAgICAgICB3cml0ZShhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNrZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93
PiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAg
ICBpZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
b2JqLT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCBhNjZiMTkxZDY4NmQuLmJhZjFhYmFk
NjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBA
IC02OCw3ICs2OCw5IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZShXZWJDb3JlOjpC
bG9iJiBibG9iKQogCiAgICAgYXV0byBieXRlTGVuZ3RoID0gYmxvYi5zaXplKCk7CiAgICAgaWYg
KCFieXRlTGVuZ3RoKSB7Ci0gICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRl
KDBVLCAxKSwgMCwgMCk7CisgICAgICAgIC8vIFRoZSBjYXN0IGxvb2tzIHdlaXJkLCBidXQgaXMg
cmVxdWlyZWQgZm9yIHRoZSBvdmVybG9hZGluZyByZXNvbHV0aW9uIHRvIHN1Y2NlZWQuCisgICAg
ICAgIC8vIFdpdGhvdXQgaXQsIHRoZXJlIGlzIGFuIGFtYmlndWl0eSB3aGVyZSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpIGNv
dWxkIGJlIGNhbGxlZCBpbnN0ZWFkLgorICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KDBVKSwgMSksIDAsIDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8Qmxv
YkxvYWRlcj4oW3RoaXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li4xYmEzMjJjMTBiYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBl
Q2FzdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02Myw3ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgc3RhdGljIGJvb2wgY2hlY2tlZFJlYWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVu
c2lnbmVkJiBvZmZzZXQsIEVuZGlhbm5lc3MgZW5kaWFubmVzcykKICAgICB7CiAgICAgICAgIGJv
b2wgcmVhZFN0YXR1cyA9IGZhbHNlOwotICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSBy
ZWFkPFQ+KG9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsK
KyAgICAgICAgVUNQVVJlZ2lzdGVyIGFjdHVhbE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgVCB2
YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihhY3R1YWxPZmZzZXQsIGVuZGlhbm5lc3MgPT0g
TGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5C
b3VuZHM8dWludDMyX3Q+KGFjdHVhbE9mZnNldCkpOworICAgICAgICBvZmZzZXQgPSBhY3R1YWxP
ZmZzZXQ7CiAgICAgICAgIGlmICghcmVhZFN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440817</attachid>
            <date>2021-10-11 12:16:37 -0700</date>
            <delta_ts>2021-10-11 13:19:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229353-20211011121636.patch</filename>
            <type>text/plain</type>
            <size>257323</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDJiMmRhOGE0NmY1MGY0MTY4OTYxZDhmNDM3OGUzY2U2YmFiYjMzLi4zZWJiOTVjZmY4ZTk4ZjM0
YTk2YzFiOGQ2ZjM0ZjM3YzNiNTA5ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NjkgQEAKKzIwMjEtMTAtMTEgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4gYW5kIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGlsZSBpbmNyZWFz
aW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVt
b3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAg
ICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2Vk
IGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BV
UmVnaXN0ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVk
QXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWlu
dDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdy
ZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBu
b3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4g
SW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxh
cmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBl
aXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KKyAgICAgICAgICAgIEkg
YWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1w
bGVzCisgICAgICAgIC0gSSBtb2RpZmllZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgZm9yIEdldEJ5
VmFsL1B1dEJ5VmFsL0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21pY3NYWFggdG8gYWNjZXB0
IG5vbi1JbnQzMiBpbmRpY2VzLCBzaW5jZSBmb3Ige0ludDgvVUludDgvVUludDhDbGFtcGVkfUFy
cmF5LCBhIG1heGltdW0gc2l6ZSBvZiA0R0IgaW1wbGllcyBpbmRpY2VzID4gMkIuCisgICAgICAg
IC0gSSBhZGRlZCBhICJtYXlCZUxhcmdlVHlwZWRBcnJheSIgYml0IHRvIEFycmF5UHJvZmlsZS9V
bmxpbmtlZEFycmF5UHJvZmlsZS9ERkc6OkFycmF5TW9kZSB0byB0cmFjayB3aGV0aGVyIHN1Y2gg
YSBub24tSW50MzIgaW5kZXggd2FzIHNlZW4gdG8gYWxsb3cgcHJvcGVyIHNwZWN1bGF0aW9uIGFu
ZCBzcGVjaWFsaXphdGlvbiBvZiBmYXN0IHBhdGhzIGluIHRoZSBERkcvRlRMLgorICAgICAgICAg
ICAgSSB0aGVuIHVwZGF0ZWQgdGhlIHJ1bnRpbWUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHNsb3cg
cGF0aHMgdG8gY29ycmVjdGx5IHVwZGF0ZSBpdC4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5IEkg
cmFuIG91dCBvZiB0aW1lIHRvIGFkZCB0aGVzZSBzcGVjdWxhdGlvbnMvdXBkYXRlIHRoZSBmYXN0
IHBhdGhzLgorICAgICAgICBTbyB0aGUgZm9sbG93aW5nIHdpbGwgaGF2ZSB0byB3YWl0IGZvciBh
IGZvbGxvdy11cCBwYXRjaDoKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0
aGUgZmFzdCBwYXRoIG9mIEdldEJ5VmFsIGluIHRoZSBMTEludAorICAgICAgICAtIEFjY2VwdGlu
ZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGhzIGdlbmVyYXRlZCBieSBBY2Nlc3NDYXNl
L1BvbHltb3JwaGljQWNjZXNzCisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4g
dGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IHRoZSBERkcvRlRMIGZvciBlYWNoIG9mIEdldEJ5
VmFsL1B1dEJ5VmFsL0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21pY3NYWFgKKworICAgICAg
ICBUaGUgY3VycmVudCBwYXRjaCBpcyBmdW5jdGlvbmFsLCBpdCB3aWxsIGp1c3QgaGF2ZSBkcmVh
ZGZ1bCBwZXJmb3JtYW5jZSBpZiB0cnlpbmcgdG8gdXNlIGluZGljZXMgPjJCIGluIGEge0ludDgv
VUludDgvVUludDhDbGFtcGVkfUFycmF5LgorCisgICAgICAgIE90aGVyIG1pbm9yIGNoYW5nZXMg
aW4gdGhpcyBwYXRjaDoKKyAgICAgICAgLSBGaXhlZCBhbiB1bmRlZmluZWQgYmVoYXZpb3IgaW4g
QXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsIHdoZXJlIG1lbWNweSBjb3VsZCBiZSBjYWxsZWQg
b24gbnVsbHB0ciAodGhlIHNwZWMgZXhwbGljaXRseSBiYW5zIHRoaXMgZXZlbiB3aGVuIGxlbmd0
aCBpcyAwKQorICAgICAgICAtIFJlcGxhY2VkIHNvbWUgcmVwZXRpdGl2ZSBhbmQgZXJyb3ItcHJv
bmUgYm91bmRzIGNoZWNraW5nIGJ5IGNhbGxzIHRvIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwsIHdoaWNoIGlzIGNsZWFyZXIsIHNob3J0ZXIsIGFuZCByZXVzZSBDaGVja2VkQXJpdGhtZXRp
YyBmYWNpbGl0aWVzIHRvIGF2b2lkIG92ZXJmbG93IGlzc3Vlcy4KKyAgICAgICAgLSBGaXhlZCBh
IHZhcmlldHkgb2Ygb2Jzb2xldGUgY29tbWVudHMKKyAgICAgICAgLSBBZGRlZCBzdXBwb3J0IGZv
ciBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1t
NjQgcmlnaHQpCisgICAgICAgICAgICAodGhlcmUgd2FzIGFscmVhZHkgc3VwcG9ydCBmb3IgdGhl
IHNhbWUgYnV0IHdpdGggVHJ1c3RlZEltbTY0KQorICAgICAgICAtIE1hZGUgdmFyaW91cyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyIGZ1bmN0aW9uIGNvbnN0ZXhwciBhcyBwYXJ0IG9mIHRoZSBwcmV2
aW91cyBwb2ludAorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
Y3BwOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OlRydXN0ZWRJ
bW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyOjphc0ludHB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHI6OmFzUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6SW1tUHRyOjpJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OjpJbW1QdHI6OmFzVHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMjo6VHJ1c3RlZEltbTMyKToKKyAgICAgICAgKEpTQzo6QWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tMzI6OkltbTMyKToKKyAgICAgICAgKEpTQzo6QWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjo6SW1tMzI6OmFzVHJ1c3RlZEltbTMyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0OjpUcnVzdGVkSW1tNjQp
OgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6SW1tNjQpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6YXNUcnVzdGVkSW1t
NjQgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpjYW5CbGlu
ZCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaDY0KToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJy
YXlQdHJMZW5ndGg2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjp1bnRh
Z0FycmF5UHRyTGVuZ3RoMzIpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6Y2FuQmxpbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c2hv
dWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmls
ZTo6c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6
Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRBcnJh
eVByb2ZpbGU6OlVubGlua2VkQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRB
cnJheVByb2ZpbGU6OnVwZGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpyZWZpbmUgY29uc3QpOgorICAgICAgICAq
IGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OkFycmF5
TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjptYXlCZUxhcmdlVHlwZWRBcnJh
eSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb24gY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aENvbnZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFR5cGVBbmRDb252ZXJzaW9uIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRp
b25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJy
YXlNb2RlOjpzcGVjdWxhdGlvbkZyb21Qcm9maWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJh
eU1vZGU6OndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OndpdGhQcm9maWxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpB
cnJheU1vZGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6d2l0aEFycmF5Q2xhc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0dldHRlcik6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZW5hYmxlSW50NTIpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnByZXBlbmRHZXRBcnJheUxlbmd0aCk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAgICogZGZn
L0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1N0b3JhZ2VDaGlsZCBjb25zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3RvcmFnZUNoaWxkSW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBl
Lmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5V2l0aFNpemUpOgor
ICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVk
QXJyYXlPdXRPZkJvdW5kcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Z2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXpl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lz
dGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
OjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6Cisg
ICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2Fu
Q29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0
U2V0dGluZ1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QXJyYXlMZW5ndGgp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlwZWRB
cnJheUxlbmd0aEFzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwv
RlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2
ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5j
cHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5
QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFt
cEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1w
ZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAg
IChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFy
cmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRS
YW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0
aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFW
aWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6
CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJy
YXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJy
YXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6
Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKToK
KyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6c2V0KToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmll
dzo6c2V0SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldERhdGEp
OgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UpOgorICAgICAg
ICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmlj
VHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5R2V0SW5k
ZXhRdWlja2x5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVp
Y2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlw
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFy
cmF5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgor
ICAgICAgICAoSlNDOjpnZXRCeVZhbFdpdGhJbmRleCk6CisgICAgICAgICogd2FzbS9XYXNtUGFn
ZUNvdW50Lmg6CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHA6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZElt
bVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHI6OmFzSW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OjpJbW1QdHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OkltbVB0cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAo
SlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02
NCBjb25zdCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5k
KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJh
eVB0ckxlbmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFn
QXJyYXlQdHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBi
eXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRN
YXlCZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVM
YXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmls
ZTo6VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJv
ZmlsZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RG
R0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAg
IChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1h
eUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6
OnNwZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFy
cmF5TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRo
QXJyYXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAg
KEpTQzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVh
cExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICog
ZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OnN0b3JhZ2VDaGlsZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNB
cnJheU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAg
IChKU0M6OkRGRzo6bmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6
CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4
ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRp
ZnlSZWR1bmRhbnRTdHJ1Y3R1cmVDaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVj
a0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50QXJyYXlDaGVja3MpOgorICAgICAgICAq
IGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUp
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdS
ZXN1bHQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpl
bWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogZnRsL0ZUTE91dHB1
dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZDY0Tm9uTmVnYXRpdmUpOgorICAg
ICAgICAqIGppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcik6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6
OmdldEJ5VmFsKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuY3BwOgorICAg
ICAgICAoSlNDOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJD
b250ZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRl
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNy
ZWF0ZUZyb21CeXRlcyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjp0cnlDcmVhdGUpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAg
IChKU0M6OkFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXI6OmNsYW1wVmFsdWUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleCBj
b25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgg
Y29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
OjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZl
clZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVm
ZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudCk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlclZpZXc6OmNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlclZpZXc6OnNldEltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnNl
dFJhbmdlSW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBs
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQXRvbWljc09iamVjdC5jcHA6CisgICAgICAgICogcnVu
dGltZS9EYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkRhdGFWaWV3OjpEYXRhVmlldyk6Cisg
ICAgICAgIChKU0M6OkRhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmlldyk6
CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUp
OgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZl
clZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
Vmlldzo6c2l6ZU9mKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVj
dGlvbkNvbnRleHQ6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpsZW5ndGggY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0SW1w
bCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9JbmRleCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OnRvVHlwZWRBcnJheUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAg
ICAgKEpTQzo6SlNEYXRhVmlldzo6c2V0KToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6c2V0
SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldERhdGEpOgorICAg
ICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UpOgorICAgICAg
ICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmlj
VHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5R2V0SW5k
ZXhRdWlja2x5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVp
Y2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlw
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFy
cmF5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgor
ICAgICAgICAoSlNDOjpnZXRCeVZhbFdpdGhJbmRleCk6CisgICAgICAgICogd2FzbS9XYXNtUGFn
ZUNvdW50Lmg6CisKIDIwMjEtMTAtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIHRvIHN3aXRjaCBmcm9tIFdURjo6VmFyaWFu
dCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOThmMDYxMTUzZjdkNGZiZTcwYzM2MDIxMjU1M2Q5Nzdl
ODZiNGQzYS4uMzViN2U5YTkyM2I0Y2U1MTdhNDU1Y2M4ZDFhZmRmNTc0ZjE0NWI0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAyMS0xMC0xMSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBw
bGUuY29tPiBhbmQgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVTRV9M
QVJHRV9UWVBFRF9BUlJBWVMgZmxhZyB3aGljaCBpcyBlcXVpdmFsZW50IHRvIFVTRV9KU1ZBTFVF
NjQsIGl0IHByb3ZlZCB1c2VmdWwgdG8gdGVzdCB0aGluZ3MgYW5kIGNhdGNoIGJyZWFrYWdlIG9u
IDMyLWJpdCBwbGF0Zm9ybXMgd2l0aG91dCByZWx5aW5nIG9uIEVXUy4KKyAgICAgICAgQWxzbyBt
YWRlIHNvbWUgb2YgQ2hlY2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1T
bWFsbGVyVGhhbk9yRXF1YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJy
YXlCdWZmZXIgYW5kIGVhc3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisg
ICAgICAgICogd3RmL0NoZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3Vu
ZHMpOgorICAgICAgICAoV1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1T
bWFsbGVyVGhhbk9yRXF1YWwpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVVzZS5oOgorCiAyMDIx
LTEwLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUHJlcGFyZSB0byBzd2l0Y2ggZnJvbSBXVEY6OlZhcmlhbnQgdG8gc3RkOjp2YXJpYW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYmEzMDRkZDM2MWQ0ZTY5N2M1MDhlMmJjY2IyZmJkYzZhMTFhMDJmYS4u
NTQ0NWNmNWU1MGRlYWVhMmZhYjk0MDNmODhlYmMzYWY3ZjU0MTM4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDIxLTEwLTExICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+IGFuZCBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBwYXJ0cyBv
ZiBXZWJDb3JlIHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5vdCBidWlsZCBhZnRlciBJIG1h
ZGUgdGhlIGxlbmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5cyByZXR1cm4gc2l6ZV90IGlu
c3RlYWQgb2YgdWludDMyX3QuCisgICAgICAgIEkgZml4ZWQgaXQgdHJpdmlhbGx5IGJ5IFJFTEVB
U0VfQVNTRVJUaW5nIHRoYXQgdGhlIHNpemVfdCBmaXRzIGluIGEgdWludDMyX3QgYW5kIHRoZW4g
Y2FzdGluZyBpdC4KKyAgICAgICAgTm8gbmV3IHRlc3RzIGZvciBXZWJDb3JlIGFzIHRoZXJlIGlz
IG5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlG
cm9tQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5l
bCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21h
aW5EYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6Cisg
ICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Cb3guaDoKKwogMjAyMS0xMC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpW
YXJpYW50IHRvIHN0ZDo6dmFyaWFudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKaW5kZXggZGNjOWU1OTIz
MWNmZmU1ZTQ5NzgyNjRmYmUzN2UyNmRmOWU0MTY5ZC4uNTVmZDc1ZjQ5NmEwNTFlY2IzNzVlYmIz
NDk4NDIzNTc0Y2ExNzcwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXgg
NDNmNzg0YTRhYjkzNWE5YWYyMzlmMjZjOGNiMzM4YWFiMjJlZGQ1ZC4uZWMzMmI3MjIxYzg1N2Q3
MjRjMjE0MjI4ZTE2ZTQ5NmU0NGVkODg4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5OCw5ICsy
OTgsOSBAQCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXJCYXNlIHsKICAgICAvLyBpbiBhIGNsYXNzIHJlcXVpcmluZyBleHBsaWNpdCBj
b25zdHJ1Y3Rpb24gaW4gb3JkZXIgdG8gZGlmZmVyZW50aWF0ZQogICAgIC8vIGZyb20gcG9pbnRl
cnMgdXNlZCBhcyBhYnNvbHV0ZSBhZGRyZXNzZXMgdG8gbWVtb3J5IG9wZXJhdGlvbnMKICAgICBz
dHJ1Y3QgVHJ1c3RlZEltbVB0ciA6IHB1YmxpYyBUcnVzdGVkSW1tIHsKLSAgICAgICAgVHJ1c3Rl
ZEltbVB0cigpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cigpIHsgfQogICAg
ICAgICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkK
KyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFs
dWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQpA
QCAtMzExLDIxICszMTEsMjEgQEAgY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1
ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVl
KQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAg
ICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRwdHIoKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAgICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVl
KTsKICAgICAgICAgfQpAQCAtMzM1LDEyICszMzUsMTIgQEAgY2xhc3MgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlciA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAKICAgICBzdHJ1
Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNp
dCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJ
bW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVz
dGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAg
Ly8gVHJ1c3RlZEltbTMyOgpAQCAtMzU4LDcgKzM1OCw3IEBAIGNsYXNzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgewogICAgICAgICB9
CiAKICNpZiAhQ1BVKFg4Nl82NCkKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTMyKFRydXN0
ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbTMyKFRy
dXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHB0ci5hc0ludHB0cigpKQog
ICAgICAgICB7CiAgICAgICAgIH0KQEAgLTM2OSwxNyArMzY5LDE3IEBAIGNsYXNzIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgewogCiAK
ICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7Ci0gICAgICAgIGV4cGxp
Y2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW0z
MihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIodmFsdWUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBJbW0z
MihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKFRy
dXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIocHRyKQogICAgICAg
ICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdCBUcnVzdGVkSW1tMzImIGFzVHJ1
c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIGNv
bnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsg
fQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIGNsYXNzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgewogICAgIC8v
ICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVp
bmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3Rl
ZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgpIHsgfQorICAgICAg
ICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNp
dCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkg
fHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVzdGVkSW1t
UHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChUcnVzdGVk
SW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAg
ICAgewogICAgICAgICB9CkBAIC00MDksMTcgKzQwOSwxNyBAQCBjbGFzcyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKIAogICAgIHN0
cnVjdCBJbW02NCA6IHByaXZhdGUgVHJ1c3RlZEltbTY0CiAgICAgewotICAgICAgICBleHBsaWNp
dCBJbW02NChpbnQ2NF90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQo
aW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHZhbHVlKQogICAgICAg
ICB7CiAgICAgICAgIH0KICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVND
VjY0KQotICAgICAgICBleHBsaWNpdCBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAg
ZXhwbGljaXQgY29uc3RleHByIEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAg
OiBUcnVzdGVkSW1tNjQocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAg
ICBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRo
aXM7IH0KKyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1t
NjQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogICAgIH07CiAgICAgCiAgICAgLy8gU2VjdGlv
biAyOiBNYWNyb0Fzc2VtYmxlciBjb2RlIGJ1ZmZlciBoYW5kbGVzCkBAIC0xMDg2LDkgKzEwODYs
OSBAQCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlIHsKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAg
ICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAgIHN0YXRpYyBib29sIGNhbkJs
aW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBz
aG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJf
dCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2hvdWxkQmxp
bmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBjbGFz
cyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQgY2xhc3MgRGF0YUxhYmVsUHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
CmluZGV4IGQ3ZmUzYTgxZTM0MTE5YzFlNmVlNGJiNDVmNTg2NWY3MjFmNDYyMTYuLmU2NzY3YzZh
OWE4MTczNjYxNTg2MzEzZGUwMWQ5MTRkMmUwNWNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2ICsxMzksOSBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBD
UFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0
KQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYg
Q1BVKFg4Nl82NCkKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2Vu
ZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmxzaGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBhbmQ2NChpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAg
ICAgfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogI2lmICFDUFUoWDg2KSAmJiAhQ1BV
KFg4Nl82NCkgJiYgIUNQVShBUk02NCkKQEAgLTE3MjcsNyArMTczMSw3IEBAIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAgICAgICAgICBzdG9y
ZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUo
WDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0
KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRy
ZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAgICAgIHJldHVybiBicmFuY2gz
Mihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsKICAgICB9CiAKKyNpZiBDUFUo
WDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMgZG9uJ3QgbmVlZCBibGluZGlu
ZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiwgUmVnaXN0ZXJJRCwgSW1t
NjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUuCisgICAgLy8gV2UgY2Fubm90
IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJlY2F1c2UgaXQgdXNlcyBzaG91
bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwgZXRjLi4gd2hpY2ggYXJlIG9u
bHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tNjQgcmlnaHQpCisgICAgewor
ICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAoaGF2ZVNj
cmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBsb2FkUm90YXRp
b25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50KHJpZ2h0KSwgc2NyYXRjaFJl
Z2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFp
bGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20g
bnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgp
ICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQorICAgICAgICAgICAgICAgIG5v
cCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1
c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBs
ZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82
NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
aWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA0MjUwOTAzYmMzMjIyMGM2
ZDkxY2ZhM2U1MWM3YWQ3MGM3Yzc3Nzk1Li4xNzk2YjY1MWJjNDNmMDFmZjY0YTg4NzA4Y2NkYTkx
YzQyYjM4NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
ICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJNNjRSZWdp
c3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVudGF0aW9u
cyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVy
biB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAw
eDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9
CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwxMSBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAg
IH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA0Y2YyMjQwZDZjM2Yz
MWJmYmZhZjAzMmU3N2JjYjJiYTJjNzUzMjNjLi4wNzY2Mjk4MmQ1YWYzNDQ1YTljNGMzOWM3YWY0
Y2VlZDI4MTFjNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCBjbGFzcyBN
YWNyb0Fzc2VtYmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3Ro
MzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVu
Z3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAgICAg
ICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9hZDY0
KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVBdXRo
ID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlk
R1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRh
dGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0
MDE3NDk2NzEzN2FjMGJjNDI5MDlkNGFmYTBmNDBhMS4uZDc3NDY5OTliZTAyOTdkMjQzNWNlMDhh
ZjM2MWNiMWVmY2M1YzQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkgKzEwOCw5IEBA
IGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNr
UG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAg
ICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3Rh
dGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZm
ZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2go
dWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJp
dGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Y2VhNWZhZDkwOTEwNDc4Y2U0
Mjk2YTU5MzZkNi4uYTg5ZDk3NGEzZGMzNGNmYjE0MjhhNGI4ZDQzOWRmMjkxNzFjNGExOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2
LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAg
ICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6
CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRl
cjoKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2
YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAgLy8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5
cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBwcm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQg
YXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTkxLDEz
ICsxMTkyLDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKIAogICAgICAg
ICBHUFJSZWcgcHJvcGVydHlHUFIgPSBzdGF0ZS51LnByb3BlcnR5R1BSOwogCi0gICAgICAgIAog
ICAgICAgICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFsbFRocm91Z2gu
YXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKSk7
CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
c3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFi
b3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKLQogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKQEAgLTEyMTEsNiArMTIwOCwxNiBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2Vk
UmVnaXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBVQ1BVUmVnaXN0ZXIsIHNv
IGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAg
IGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5zaWduRXh0
ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaDJHUFIpOworICAgICAgICBzdGF0ZS5mYWls
QW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFs
LCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UKKyAgICAgICAgaml0LmxvYWQzMihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBw
ZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIs
IHNjcmF0Y2hHUFIpKTsKKyNlbmRpZgorCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSks
IHNjcmF0Y2gyR1BSKTsKICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsIGZh
bHNlKTsKIApAQCAtMTYzMCwxMCArMTYzNyw2IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVX
aXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgLy8gT3V0
T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0aW9u
IGZ1bmN0aW9uLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikp
OwotCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8u
dXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdz
KCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwpAQCAtMTY0NSw5ICsxNjQ4
LDIyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxv
Y2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCBmYWlsQW5kUmVwYXRjaDsKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQ
cmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJl
Z2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBl
aXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBq
aXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAvLyBPdXRPZkJvdW5k
cyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rp
b24uCisgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaDJH
UFIpOworICAgICAgICBmYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUikpOworI2Vsc2UKKyAg
ICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgLy8gT3V0
T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0aW9u
IGZ1bmN0aW9uLgorICAgICAgICBmYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKEND
YWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworI2Vu
ZGlmCisKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAg
ICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBz
Y3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwogCkBAIC0xNzAxLDYg
KzE3MTcsMTUgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKIAogICAgICAg
ICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZl
ZFN0YXRlKTsKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworCisgICAgICAgIGlmIChhbGxvY2F0
b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgaWYgKCFmYWlsQW5kUmVwYXRj
aC5lbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgZmFpbEFuZFJlcGF0Y2gubGluaygmaml0KTsK
KyAgICAgICAgICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGlu
ZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5mYWlsQW5kUmVw
YXRjaC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGZhaWxBbmRSZXBhdGNoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMDU5NDJlYWQ1NDlmMDIzYjg4NDU0
ZTEzMmRmY2UuLjU4MmZmNWE2YzFhM2M1ZThmZjkxZTE5MmJmYjE3MWZkOWQ3MmQyYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRm
aWVsZCB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRo
YXQgd2UgaGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNl
IHRoZSBsb3dlciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5n
IHRoZSBiaXRzIDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRh
a2luZyB0aGUgYml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9k
ZXM7CiAKIC8vIFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAo
MCAtIDE2LCAyMSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUsMTcgQEAgY2xhc3MgQXJyYXlQcm9m
aWxlIHsKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAg
ewogICAgIH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgLy8gQWNj
ZXNzaW5nIHR5cGVkIGFycmF5cyBsYXJnZXIgdGhhbiB0aGF0IHRlbmRzIHRvIGJlIG1vcmUgY29t
cGxpY2F0ZWQgYXMgd2UgY2FuJ3QgZm9yY2UgY29udmVydCBldmVyeXRoaW5nIHRvIGludDMyX3Qu
CisgICAgLy8gV2Ugb25seSBzdXBwb3J0IHN1Y2ggbGFyZ2UgdHlwZWQgYXJyYXlzIG9uIDY0LWJp
dCBwbGF0Zm9ybXMuCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBzbWFsbFR5cGVkQXJy
YXlNYXhMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICB2
b2lkIHNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0g
dHJ1ZTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorI2Vsc2UK
KyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIFN0cnVjdHVyZUlEKiBhZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJ
RDsgfQogICAgIEFycmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9v
YnNlcnZlZEFycmF5TW9kZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgp
IHsgcmV0dXJuICZtX21heVN0b3JlVG9Ib2xlOyB9CkBAIC0yNDQsNiArMjU0LDkgQEAgY2xhc3Mg
QXJyYXlQcm9maWxlIHsKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQgeyAw
IH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsgLy8gVGhpcyBmbGFnIG1h
eSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQg
d2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGlu
ZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBp
bmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZv
ciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29s
IG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgYm9vbCBtX21heUJlTGFyZ2VUeXBlZEFycmF5IHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJv
b2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgOiAxOwogICAgIGJvb2wgbV91c2VzT3Jp
Z2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5Q
cnVuaW5nIDogMTsKQEAgLTI1Myw3ICsyNjYsMTMgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoQXJy
YXlQcm9maWxlKSA9PSAxMik7CiAKIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlIHsKIHB1Ymxp
YzoKLSAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBV
bmxpbmtlZEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV91c2VzT3JpZ2luYWxBcnJheVN0cnVj
dHVyZXModHJ1ZSkKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAsIG1fbWF5
QmVMYXJnZVR5cGVkQXJyYXkoZmFsc2UpCisjZW5kaWYKKyAgICB7CisgICAgfQogCiAgICAgdm9p
ZCB1cGRhdGUoQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGUpCiAgICAgewpAQCAtMjgwLDYgKzI5
OSwxMyBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiAgICAgICAgICAgICBhcnJheVBy
b2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBhcnJheVByb2Zp
bGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7CisKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgICAgICBpZiAobV9tYXlCZUxhcmdlVHlwZWRBcnJheSkKKyAgICAgICAgICAg
IGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGFycmF5UHJvZmlsZS5tX21h
eUJlTGFyZ2VUeXBlZEFycmF5OworI2VuZGlmCiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjkwLDcg
KzMxNiwxMSBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiAgICAgYm9vbCBtX21heVN0
b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJv
b2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3Vz
ZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3Rh
dGljX2Fzc2VydChzaXplb2YoVW5saW5rZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAyYjJmNWUwMzAxOWY5ZTY5MjJkNWM1
MjY3M2M4OGFlMzU2ZGUwN2Q4Li5mNWI3ZjJiNjg5ZDFmZmNlNmYyMmFhZjlmNDdkZDZmNjdjNDBi
MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDYzLDcgKzM0NjMsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKICAgICAgICAgSlNBcnJh
eUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKICAgICAgICAg
ICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsK
LSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgaWYgKHZpZXcgJiYgaXNJbkJvdW5kczxpbnQz
Ml90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
TnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAg
ICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmll
dygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFy
cmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsK
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAg
ICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAgICAgICBKU0FycmF5QnVm
ZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBpZiAodmlldykgewotICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJy
ZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25j
dXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0ICYmIGlzSW5Cb3VuZHM8aW50
MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRG
b2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSk7CisgICAgICAgIGlm
ICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9m
ZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChi
eXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIo
KmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewog
ICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0
KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAK
aW5kZXggNmUyNzUzMTA0YmQzODE1OWNjYjFiMWQzOTM3MTUzODZiNjQ4NmI1NC4uYTNiOTM0MGY2
OTA3ZGNlNzUxZDRjZGNiMWM1NDdmNjQ2MjM3ZWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBA
IC0zMjUsNiArMzI1LDExIEBAIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgp
LCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgICAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIG5vZGUgaXMgb25seSB1c2VkIGZvciBUeXBlZEFycmF5cywgc28gc2hvdWxkIG5vdCBiZSBy
ZWxldmFudCBmb3IgYXJndW1lbnRzIGVsaW1pbmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGVz
Y2FwZShub2RlLT5jaGlsZDIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAg
ICAgICAgICAgQml0VmVjdG9yKiBiaXRWZWN0b3IgPSBub2RlLT5iaXRWZWN0b3IoKTsKICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50ID0g
bV9ncmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpOyAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAppbmRleCA2ZTRmZTlhZmEzZWI3
MWMzODk3MTA3NzY1ZjRjNDRmYTVkZGJiZDViLi43MjU4ZTM3MTU4NmUxMTFmZWQzZTc3ZjMzZGMw
N2M2ZTA3YTI1MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
Y3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFjdGlvbigpKTsKICAgICB9
CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpKQorICAgIGlmICghaXNJ
bnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKICAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAgIAogICAg
IC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMgb2JqZWN0IGJlaGF2aW9y
LCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYgKzI5NCw4IEBAIEFycmF5
TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAg
ICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdVaW50NjRB
cnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9ubHkgcHJlc2VydmUgdGhp
cyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBhbmQgbm90IEdldEJ5VmFs
IGFzIHdlbGwuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWwpIHsKICAgICAg
ICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE91dE9m
Qm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlZEFy
cmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3VuZHMpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGEwMjZhYWQxODkzYmYyM2M1NzE5
NmZjYzZjOTFmYzIwMDAzYzQ1NjcuLmRmNzVjNzg5MGQ2NGFiZjJmYTczOTg4Y2I5M2JlNWEzNmE4
ZmM1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtMTI3
LDYgKzEyNyw3IEBAIGNsYXNzIEFycmF5TW9kZSB7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxh
dGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBB
cnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0ZTsKKyAg
ICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAg
IAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6QWN0aW9u
IGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBjbGFzcyBBcnJheU1vZGUgewogICAgICAgICB1
LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRl
cy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBh
Y3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwog
ICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNz
IGFycmF5Q2xhc3MsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTQ1LDE1ICsxNDcsMTcgQEAg
Y2xhc3MgQXJyYXlNb2RlIHsKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6
OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwog
ICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5
QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFy
cmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRp
b24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rp
b24gYWN0aW9uKQorICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3Mg
YXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVy
c2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlw
ZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwog
ICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVy
c2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247Cisg
ICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFy
cmF5OwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6
OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpB
Y3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2Nyw3IEBAIGNsYXNzIEFycmF5TW9kZSB7CiAgICAg
ICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5h
c0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9u
ID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxz
ZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEFycmF5OjpUeXBlPih1LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUs
NyBAQCBjbGFzcyBBcnJheU1vZGUgewogICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpTcGVjdWxhdGlvbj4odS5hc0J5
dGVzLnNwZWN1bGF0aW9uKTsgfQogICAgIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6Q29udmVyc2lvbj4odS5hc0J5dGVzLmNv
bnZlcnNpb24pOyB9CiAgICAgQXJyYXk6OkFjdGlvbiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxBcnJheTo6QWN0aW9uPih1LmFzQnl0ZXMuYWN0aW9uKTsgfQorICAgIGJvb2wg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSBjb25zdCB7IHJldHVybiB1LmFzQnl0ZXMubWF5QmVMYXJn
ZVR5cGVkQXJyYXk7IH0KICAgICAKICAgICB1bnNpZ25lZCBhc1dvcmQoKSBjb25zdCB7IHJldHVy
biB1LmFzV29yZDsgfQogICAgIApAQCAtMTc5LDM1ICsxODUsNTAgQEAgY2xhc3MgQXJyYXlNb2Rl
IHsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBt
YWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlw
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5
OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBB
cnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCks
IGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3Mo
KSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6
OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24o
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
KCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xh
c3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBl
ZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFu
ZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
bikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3Vs
YXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJy
YXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBj
b25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwg
Y29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAor
ICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29s
IG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlT
cGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJh
eTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xl
KGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAg
ICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBB
cnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVBy
b2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxl
LCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1h
a2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsK
LQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51
c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5h
bEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9m
aWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIGNs
YXNzIEFycmF5TW9kZSB7CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6OkFy
cmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5Q2xh
c3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5Q2xh
c3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygp
LCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0g
ICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24p
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAgfQotICAgIAot
ICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJy
YXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBB
cnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBh
Y3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uID0gc3Bl
Y3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKworICAgICAg
ICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBlZEFycmF5KGxv
Y2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRN
YXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBsYXJnZVR5cGVk
QXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTI2LDcgKzUz
Niw4IEBAIGNsYXNzIEFycmF5TW9kZSB7CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gb3RoZXIu
dHlwZSgpCiAgICAgICAgICAgICAmJiBhcnJheUNsYXNzKCkgPT0gb3RoZXIuYXJyYXlDbGFzcygp
CiAgICAgICAgICAgICAmJiBzcGVjdWxhdGlvbigpID09IG90aGVyLnNwZWN1bGF0aW9uKCkKLSAg
ICAgICAgICAgICYmIGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCk7CisgICAgICAg
ICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpCisgICAgICAgICAgICAm
JiBtYXlCZUxhcmdlVHlwZWRBcnJheSgpID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFycmF5KCk7
CiAgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUmIG90aGVy
KSBjb25zdApAQCAtNTc5LDcgKzU5MCw4IEBAIGNsYXNzIEFycmF5TW9kZSB7CiAgICAgICAgICAg
ICB1aW50OF90IGFycmF5Q2xhc3M7CiAgICAgICAgICAgICB1aW50OF90IHNwZWN1bGF0aW9uOwog
ICAgICAgICAgICAgdWludDhfdCBjb252ZXJzaW9uIDogNDsKLSAgICAgICAgICAgIHVpbnQ4X3Qg
YWN0aW9uIDogNDsKKyAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogMTsKKyAgICAgICAgICAg
IHVpbnQ4X3QgbWF5QmVMYXJnZVR5cGVkQXJyYXkgOiAxOwogICAgICAgICB9IGFzQnl0ZXM7CiAg
ICAgICAgIHVuc2lnbmVkIGFzV29yZDsKICAgICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGM4OGRlNGIyMzljNzNjZDM0OTMw
MTBkZDczOTcxMjNjNzZiMGUzNjQuLjRiMTMxN2EwNzk2N2M0MWE2ZjNhYmQ5MmMyMjc2NTA4MWIx
MDU5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC0zODA3LDggKzM4MDcsMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
RE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRl
bXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IEdldEJ5VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgIHN0YXRpY19hc3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRj
aCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJ
bnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKCFp
c0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAg
ICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4o
KSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBAIC0zODIyLDI2ICszODMw
LDMxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5k
IHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlU
eXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgTm9kZSogbGVu
Z3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJy
YXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAgICAgIE5vZGVU
eXBlIG9wID0gR2V0QXJyYXlMZW5ndGg7CisgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAgICAgICAgIG9wID0gR2V0VHlwZWRB
cnJheUxlbmd0aEFzSW50NTI7CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBo
KG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwg
dGhpc05vZGUpOwogICAgICAgICAvLyBPdXIgQXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0
byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJlIG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgog
ICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAot
CiAgICAgICAgIGlmICghbG9nU2l6ZSkgewogICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3Ro
Tm9kZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8v
IFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5l
dmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAgICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgot
ICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsK
LSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9k
ZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkgaGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxv
d3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigx
IDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwg
bGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyNpZiAhVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyAgICAgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikg
fHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODUzLDEzICszODY2LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwg
T3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNO
b2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gR2V0QXJyYXlMZW5ndGg7CisgICAgICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAg
ICAgICAgIG9wID0gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI7CisgICAgICAgIHNldChyZXN1
bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVh
ZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
fQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJpbnNpYzogeworI2lmICFVU0Uo
TEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBPdmVyZmxvdykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlw
ZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVk
QXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NzEsNyArMzg5MSwxMCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCku
YXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlwZSBvcCA9IEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBPdmVyZmxvdykpCisgICAgICAgICAgICBvcCA9IEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFy
cmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAppbmRleCBhOGRkM2ZkZTk3NzljYzgxMzZmY2QyM2NmY2EwMWM0NzU4Mzcy
OThhLi43NDkyMDVkNjRlZDU4NTg0ZmY2OWMwM2RlMTA0YWRjNDE1YzY2MTY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9w
ZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFs
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMTMzNyw2ICsxMzM4LDExIEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9y
JiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJh
eUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9k
ZSkpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
QXNJbnQ1MjoKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2Nh
dGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGls
ZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkg
ewogICAgICAgICBjYXNlIEFycmF5VXNlOgpAQCAtMTQ0NCw2ICsxNDUwLDE0IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFk
LCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlN
b2RlKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXco
KSk7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24o
VHlwZWRBcnJheUxlbmd0aEludDUyTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExh
enlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOiB7CiAgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7
CiAgICAgICAgIHN3aXRjaCAobW9kZS50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCmluZGV4IGM2NmZiMjIzOWY4ZmQyN2ZhOTFjN2E5N2U2YjVjNmJiODE3ZTkxODYu
LmFmZGMxMGE4YTA1ODQ4YmEzN2YxZmE3OWJmNTY5ZWI5MzA5ZTM4NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxp
ZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQor
aW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CmluZGV4IDA3MGE0ODU0N2E5N2ZkYzNhZGQxYzIxOGNmZjYzMDc1ZDA2NjQxNzkuLjVhYmRlZTg2
NzVkZGU5NDQ5NGU5ZjdkZWU0YzhmYzAxNDJjYTdhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE5NywxMCArMTk3LDEyIEBAIGJvb2wgZG9lc0dDKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEdldHRlcjoKICAgICBjYXNlIEdldFNl
dHRlcjoKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdD
aGFyQ29kZUF0OgogICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAg
IGNhc2UgR2V0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAppbmRleCA4ZTFiOTNlZWU2Y2EwN2Q3OTdmMzQ2NzI3YWZkOTUxNGQ2NzkwNmJhLi43
NTgzNTlhNzc1MTdlMzJhNWMxNDNjNjg0YjRiYjQwMmRhNTAzMGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBj
bGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgJiYg
aXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikKICAgICAgICAgICAgICAg
ICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNTcGVjaWZpYygpCiAgICAgICAgICAgICAgICAg
ICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKQorICAgICAgICAgICAgICAgICAg
ICAmJiAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKQogICAgICAgICAg
ICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMs
IE92ZXJmbG93KSkgewogCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTEwNzMsNyArMTA3NCw3IEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogCiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4
aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZl
IG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2RlLgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
RSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEVudW1lcmF0b3JHZXRCeVZhbCkKICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhU
eXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMzLDYg
KzExMzQsMTggQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAw
KSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAg
ICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6
OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJheToK
KyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVyU3BlY3Vs
YXRpb24oaW5kZXhTcGVjdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJy
YXlNb2RlKCkuaXNTcGVjaWZpYygpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5
TW9kZSgpLmlzSW5Cb3VuZHMoKQorICAgICAgICAgICAgICAgICAgICAmJiAhbm9kZS0+YXJyYXlN
b2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAmJiAhbV9n
cmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgewogCiAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKQEAgLTE3MTcsMTIgKzE3MzEsMTYgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OiB7CiAgICAg
ICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJS
ZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE0OSw2
ICsyMTY3LDI3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUobV9ncmFwaCwgbm9kZSwg
bm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1bnVzZWRJbmRleFNwZWN1
bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTb21lVHlwZWRBcnJh
eVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsKKyAg
ICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwgbm9k
ZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAgICAgICAgIGZpeEVkZ2U8
S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7Cisg
ICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6
IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTQwOTYsMTQgKzQxMzUsNiBAQCBjbGFzcyBGaXh1cFBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGlsZDIoKSA9
IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRBcnJheUxl
bmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJheU1vZGUp
Ci0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1vZGUsIG9y
aWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAgIHJldHVy
biBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAgICBPcElu
Zm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShz
dG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHko
Tm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVy
YXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwZDI4NDhiYjFhYmEyMzcxYTU0OWNmNzg1ZTVh
MC4uMmQ4NmViNzU3MzliZWI2NzcxYTAyYWQ4NzgwMmVmMjY2OTc2NTg4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaApAQCAtMzksOCArMzksNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQg
dG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGxpdmUgdmFsdWVzIGR1cmluZyBjb2RlIGdl
bmVyYXRpb24uCiAvLyBDYW4gcHJvdmlkZSBpbmZvcm1hdGlvbiBhcyB0byB3aGV0aGVyIGEgdmFs
dWUgaXMgaW4gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBpZiBzbyB3aGljaCwKIC8vIHdoZXRoZXIg
YSB2YWx1ZSBoYXMgYmVlbiBzcGlsbGVkIHRvIHRoZSBSZWdpc3RlckZpbGUsIGFuZCBpZiBzbyBt
YXkgYmUgYWJsZSB0byBwcm92aWRlCi0vLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5
IChhbGwgdmFsdWVzIGFyZSBzcGlsbGVkIGluIGEgYm94ZWQgZm9ybSwgYnV0IHdlIG1heSBiZQot
Ly8gYWJsZSB0byB0cmFjayB0aGUgdHlwZSBvZiBib3gpLCBhbmQgdHJhY2tzIGhvdyBtYW55IG91
dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCisvLyBkZXRhaWxzIG9mIHRoZSBmb3Jt
YXQgaW4gbWVtb3J5LCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2
YWx1ZSByZW1haW4sCiAvLyBzbyB0aGF0IHdlIGtub3cgd2hlbiB0aGUgdmFsdWUgaXMgZGVhZCBh
bmQgdGhlIG1hY2hpbmUgcmVnaXN0ZXJzIGFzc29jaWF0ZWQgd2l0aCBpdAogLy8gbWF5IGJlIHJl
bGVhc2VkLgogY2xhc3MgR2VuZXJhdGlvbkluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCmluZGV4IDJiYjlkNGJlYTgwMDkwMWZlYzc3OGNlYzRl
OGFkMDY5YTZmZmVlMGYuLjA2NjFlNWI4MjZiN2EwOTcxNWQ3YjA2ZjZmYWMxNjFmMzE1Yzg1Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAg
LTE4Miw2ICsxODIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExv
Y2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0
TG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJ
bnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9j
Iik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludDUyTG9j
OgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYyIpOworICAgICAg
ICByZXR1cm47CisKICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAgICAgb3V0LnByaW50KCJQ
cm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggMjY5MTcxY2IzNDFkYzRhYmFkMzhiMWU1OGIxZTVk
ZDMxYzczNWZlMi4uNDBmYjcxNjczMjg0NGVkZTYxNjdjZGNiYzIwMWVhYzlmNjkwNmUwMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02Nyw2ICs2
Nyw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0ZXJMb2MsCiAgICAgU3RydWN0dXJl
TG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAorICAgIFR5cGVkQXJyYXlCeXRlT2Zm
c2V0SW50NTJMb2MsCisgICAgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jLAogICAgIFByb3RvdHlw
ZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxvYWRMb2MsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0
aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MTkzMTQwNDMwYTExZmJjMGYzYTg5MjIxNTFl
NDQuLmIzYjE0NWE5MTA5ZGM5ZGQ0MDk1OWE0NWZjNWRjYTIxNzU5Y2EyOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwCkBAIC0xNDk5LDYgKzE0OTksNyBAQCBjbGFzcyBJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAg
ICAgICAgICAgc2V0UmVsYXRpb25zaGlwKFJlbGF0aW9uc2hpcChub2RlLCBtX3plcm8sIFJlbGF0
aW9uc2hpcDo6R3JlYXRlclRoYW4sIC0xKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTljY2RmMGI2NzZmN2RkMDRhNGJk
ZDhiNzUzMDFkZi4uMGJhN2I5ZmYzZWJiZDM4MGQ5NDYwODlhZDZhZWE0MDFkYTBmNzI4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTY1LDYgKzE5NjUsNyBAQCBzdHJ1
Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBjYXNlIEFycmF5UG9w
OgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICAg
ICAgY2FzZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZToKICAgICAgICAgY2FzZSBB
cnJheUluZGV4T2Y6CkBAIC0yMDA0LDYgKzIwMDUsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICAg
ICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgIHJldHVybiAyOwog
CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgpAQCAtMjI3Niw2ICsyMjc4LDcgQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
RGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBh
NGNmZGFjOGYyMzUxODI4NzIyNGVkYmVlNWZkODlmNjQzZGQuLjAwNjZmN2IwMjYyYjIwNDZmMTQw
ZWY3YzZiMGEwN2FkNTFiMzk5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTI2MSw4ICsyNjEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8q
IFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBv
bmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBi
aXRzLiAqLyBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIsIE5vZGVSZXN1
bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFZlY3Rvckxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBc
CiAgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE5vZGVSZXN1bHRJbnQzMikgXAor
ICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgTm9kZVJlc3VsdEludDUy
KSBcCiAgICAgbWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNraXBT
Y29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUmVzb2x2ZVNjb3BlLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAppbmRleCBlNTA3ZjFlODBhYzA3ZDlhNTY5MzM3NWMzYTIwOWU2Y2Y4Y2U5
MWQ5Li5iM2YyYmI3YTkxM2E4MTEyZThkZDY2ZTNjMjE5ZWNkODNmYjdlODZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
LSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsK
LSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVl
LCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciog
bmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hh
ciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3Rv
cikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4
MywxMSArMTgxLDEzIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBVQ1BVUmVnaXN0ZXIgdW5zaWduZWRTaXplID0gc3Rh
dGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0
b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBz
aXplKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNy
ZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUs
IHVudGFnQXJyYXlQdHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCB1bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4K
QEAgLTE5MDgsNyArMTkwOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVn
aXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVy
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTk4OCw3ICsxOTg4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lz
dGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjAyMCw3ICsyMDIwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwg
Y2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDM2LDcgKzIwMzYsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVn
aXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0yMDUyLDcgKzIwNTIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjgsNyArMjA2OCw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2
NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51
bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApp
bmRleCAzOTNkZTg4NTA3MDdjYmJhMTZjNmQ5MjM4MDNmMDcwNjI0NGQ3OTY0Li44Zjk2ZWMwYjA3
ZWQ2ZDc2OGYwZDkwMjljMWU4OTVkNGYzMzMyYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1wdHlBcnJh
eSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3Rl
ciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJB
cnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1
ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hh
ciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVy
LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZB
cnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMy
X3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0lu
dDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQ
VVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwq
LCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVjMDFkMTEzZTk4MjliM2YyMjYyZWMwOTdlMThkOGIu
LmQ1ZjBmZmNkZjU5N2ZjNWUyMTEyNzVlMmRkY2IxYzA5NDhmNDkzN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC05ODYsNiArOTg2LDEyIEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rp
b24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAg
ICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0
OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA5MjRmYzhjMzEwODY2
OWY3MjlkMTAyNzMxOWM3NmUyYzQ3NWZjYmZlLi4xOTlmNmNjM2IxM2YyZjU5ZDg0ODI2ZDVjMWNj
MTI3YTYyNzM3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaApAQCAtMzczLDYgKzM3Myw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAg
Y2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2Fz
ZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGln
bm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAg
ICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNU
eXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggNDk0NTRjODdkZGZlODg1NmM4ZDRkZGNjZWE1ODhmYTU2NjFiYTFiZC4uYTdmYWNlMjJiZjNi
ZjVlZmVkOGQ4MjAxNDI1OWE5MmM5NjQ3MDYwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyNDUsMTYgKzMyNDUsMjggQEAgSklU
Q29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3Vu
ZHMoTm9kZSogbm9kZSwgR1BSUmUKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0
LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobV9q
aXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkpOwog
ICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXctPmxlbmd0aCgp
OworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAgICAg
IE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgpOwot
ICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUtPmFz
VUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29uc3Rh
bnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICByZXR1
cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAg
ICAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOwor
I2Vsc2UKICAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihs
ZW5ndGgpKTsKKyNlbmRpZgogICAgIH0KKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBpbmRleEdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFs
LCBpbmRleEdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCkBAIC03OTYwLDcgKzc5NzIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2UoR1BSUmVnIGJhc2VSZWcsIEdQUlJl
ZyBzdG9yYWdlUmVnLCBibwogewogICAgIGF1dG8gdW50YWdBcnJheVB0ciA9IFsmXSgpIHsKICNp
ZiBDUFUoQVJNNjRFKQotICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3RoMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOworICAgICAgICBtX2ppdC51bnRhZ0Fy
cmF5UHRyTGVuZ3RoNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOwog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHZhbGlkYXRlQXV0aCk7CiAgICAgICAgIFVOVVNF
RF9QQVJBTShiYXNlUmVnKTsKQEAgLTgwNzYsNiArODA4OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxs
VmVjdG9yLmxpbmsoJm1faml0KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKyAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhl
cmUuCisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0
ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0
ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgor
CiAgICAgc3RyaWN0SW50MzJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0Miwx
MiArODM1OSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgo
Tm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFz
ZSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0
LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQo
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBt
X2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0
cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0g
fQogfQogCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5v
ZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMTExMTIsMTAgKzExMTM1LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5
cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKwogICAgIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcg
c2l6ZUdQUiA9IHNpemUuZ3ByKCk7Ci0gICAgCisKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgIC8vIFRoZSBvcGVyYXRpb25zIHdlIGNhbGwgb24gdGhlIHNsb3cgcGF0aCBleHBlY3Qg
YSBDUFVSZWdpc3Rlciwgc28gaW50NjRfdCBvbiA2NCBiaXQgcGxhdGZvcm1zCisgICAgbV9qaXQu
c2lnbkV4dGVuZDMyVG9QdHIoc2l6ZUdQUiwgc2l6ZUdQUik7CisjZW5kaWYKKworICAgIGVtaXRO
ZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1
Y3R1cmUsIHNpemVHUFIpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRB
cnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0eXBlZEFy
cmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKQor
ewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEzMSw2ICsx
MTE2NCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKEpTQXJy
YXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSkpOworICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdo
IHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1i
ZXIuCisgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJW
aWV3OjpmYXN0U2l6ZUxpbWl0KSk7CiAgICAgCiAgICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3Jh
dGNoR1BSKTsKICAgICBtX2ppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUo
dHlwZWRBcnJheVR5cGUpKSwgc2NyYXRjaEdQUik7CkBAIC0xMTE4Niw5ICsxMTIyMSwxNSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5v
ZGUpCiAgICAgbV9qaXQuc3RvcmVQdHIoCiAgICAgICAgIHN0b3JhZ2VHUFIsCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mVmVjdG9yKCkpKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIG1faml0LnN0
b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNl
CiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgc2l6ZUdQUiwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgVHJ1c3RlZEltbTMy
KEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAgLTE0MTYwLDYgKzE0
MjAxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUobm9kZSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBVbnR5
cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNW
YWx1ZVJlZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAppbmRleCBiNjUxNWQ4YjcyMTk0ODQwMDJmODdkZjUyNjA3YWY2NDk3NzUwMGUzLi5iYTBm
ZGEyMzI2N2VmMDYyYmYzYThhYzc4OGU0Nzc4MmMwZTA1ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5ICsxMzAwLDEzIEBA
IGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dp
dGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29t
cGlsZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5v
ZGUqKTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0
ZXIoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6
ZUdQUik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAg
ICAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVk
QXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50
MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAg
ICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAg
Y2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9k
ZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTIoTm9kZSopOworI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxh
Z3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzNSw2
ICsxNDQyLDkgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIEpJVENvbXBpbGVyOjpKdW1w
IGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBi
YXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAgICAgdm9pZCBlbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BS
KTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7CisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxP
bkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8
c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRG
b3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsK
ICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFy
cmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFG
b3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcg
KzI0MzcsNyBAQCBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgewogICAgIEdQUlJl
ZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAo
aS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5
b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBi
aXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIGNsYXNzIFNwZWN1
bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8g
R2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cg
NDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBh
IHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJpdHMsIGhp
Z2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1
Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggNmEwZjI1MjBlYTM3ZTdiNjM2NGFhNWE0N2IwMzM3Zjc2OTI1NDZmZS4uYjM2NTliYTAy
OTEzYWJjZTgxZTY4MzNkNWNiMTg4ZDEwNWZjYzczZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMTM0LDYgKzIx
MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwg
Y29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBjb21waWxlR2V0QnlWYWxP
blNjb3BlZEFyZ3VtZW50cyhub2RlLCBwcmVmaXgpOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OiB7CisgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5
VmlldygpKTsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IG5vZGUtPmFycmF5TW9kZSgp
LnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShub2RlLCB0eXBlLCBwcmVmaXgpOwpAQCAt
MzUzOCw2ICszNTM5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsK
IAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIC8vIFdlIGRv
IG5vdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBsYXJnZXIgdGhhbiAyR0Igb24gMzItYml0IHBsYXRm
b3Jtcy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzYyMCw2ICszNjI2LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZTEzNWZkNTM0OGU4ZDljOWQ0OGMwNDNhNjE2Mzk2NjNl
MDlhMzJhOC4uY2ExNDdjNmNiNjFhNWQ5ZjU5ZGYxMTY2ZWYzYWJmMWFjYjZmMTgwOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjY5NCw2ICsyNjk0LDg5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9
CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5
cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2pp
dC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0
cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwor
CisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJh
eVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAg
IG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2Vy
dChNQVhfQVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sg
dGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOwor
ICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9k
ZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRh
KHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2
ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigp
OworICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7CisgICAgQVNTRVJUKGJhc2VHUFIg
IT0gZGF0YUdQUik7CisgICAgQVNTRVJUKHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKKworICAgIEdQ
UlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBl
bXB0eUJ5dGVPZmZzZXQgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIoV2Fz
dGVmdWxUeXBlZEFycmF5KSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdmVj
dG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIG51bGxWZWN0b3IgPSBtX2ppdC5icmFu
Y2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW1QdHIoSlNBcnJh
eUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
LCBkYXRhR1BSKTsKKyAgICBtX2ppdC5jYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6SlNW
YWx1ZSwgZGF0YUdQUik7CisKKyAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UoYmFzZUdQUiwgdmVj
dG9yR1BSKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0
YUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQUik7
CisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgY2FnaW5nLgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGFycmF5QnVmZmVyR1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0T2ZE
YXRhKCkpLCBkYXRhR1BSKTsKKyNpZiBDUFUoQVJNNjRFKQorICAgIG1faml0LnJlbW92ZUFycmF5
UHRyVGFnKGRhdGFHUFIpOworI2VuZGlmCisKKyAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwgdmVj
dG9yR1BSKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisK
KyNpZiBDUFUoQVJNNjRFKQorICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisg
ICAgZW1wdHlCeXRlT2Zmc2V0LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIHZlY3RvckdQUik7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyNp
ZiAhQ1BVKEFSTTY0RSkKKyAgICBBU1NFUlQoIUpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9y
UHRyKCkpOworICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisKKyAgICBzdHJp
Y3RJbnQ1MlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOworfQorI2VuZGlmCisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUt
Pm9wKCk7CkBAIC00Mzc1LDYgKzQ0NTgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTIobm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAg
ICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ0OTMs
NiArNDU4NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJvdG90eXBl
T2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4Myw3ICs1NjgzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5k
MzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQog
ICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwg
dDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZp
ZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAgICAg
ICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKQEAg
LTU3ODQsNyArNTg4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAgICAg
ICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0
ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA1ZjUxZjIyNTEwNGY5
YmE1MjI2OThkZDAzNjc1YmRkNWJlMjc1ZmFhLi5lMTBkNjJlNDI3ZDBkODAzYWQwZTQzM2U0ZTM1
ZGUyZDJkNmYxODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBAIGNsYXNz
IFR5cGVDaGVja0hvaXN0aW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJy
YXk6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICAgICAgICAg
IGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBjYXNlIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAg
ICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5
T2Zmc2V0OgpAQCAtMzU5LDYgKzM2MSw3IEBAIGNsYXNzIFR5cGVDaGVja0hvaXN0aW5nUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MjoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBk
MTI0OGM5ZmFkNjc4NDI1ODQ4MDU2MjY2YmI1OWFhYzY0Y2M4YzJhLi43NGZlODk1MjZkZWY2ZmZk
OGRiZjIxNDZiOGQyODg1YjU1MmI0OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlOgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlX
cml0ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKQEAgLTM5MSw2ICszOTIsNyBAQCBpbmxpbmUg
Q2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEluaXRpYWxp
emVFbnRyeXBvaW50QXJndW1lbnRzOgogICAgIGNhc2UgQ1BVSW50cmluc2ljOgogICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAg
ICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0
QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAppbmRleCAyYWRkZmY3N2IwMzU2Yzg0Y2E2YWU4MWJlZmE3NTE3YmI5ODgwOGI5Li45
ZjAwZWE0ZTdhYzUyMDkzMzFjN2QzNzRhYTE3MmU3ZGFhOWJiOWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDMsNiArMTAzLDEwIEBA
CiAjaW5jbHVkZSA8d3RmL1JlY3Vyc2FibGVMYW1iZGEuaD4KICNpbmNsdWRlIDx3dGYvU3RkVW5v
cmRlcmVkU2V0Lmg+CiAKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNlcnJvciAiTGFy
Z2UgdHlwZWQgYXJyYXlzIG11c3QgYmUgZW5hYmxlZCIKKyNlbmRpZgorCiAjdW5kZWYgUkVMRUFT
RV9BU1NFUlQKICNkZWZpbmUgUkVMRUFTRV9BU1NFUlQoYXNzZXJ0aW9uKSBkbyB7IFwKICAgICBp
ZiAoIShhc3NlcnRpb24pKSB7IFwKQEAgLTEwMjUsNiArMTAyOSw5IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxl
R2V0QXJyYXlMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRWZWN0
b3JMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTExNzUsNiArMTE4Miw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxl
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgICAgICAgICAgY29tcGlsZUdldFByb3RvdHlw
ZU9mKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ4MjgsOSArNDgzOCw5IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5pc051bGwobV9vdXQubG9hZFB0cihjZWxs
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3RvcikpKTsKICAgICB9CiAKLSAgICB2b2lk
IGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgTFZhbHVlIGVtaXRHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKQogICAgIHsKLSAgICAgICAgTFZh
bHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOyAgICAKKyAgICAgICAgTFZh
bHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIExCYXNp
Y0Jsb2NrIHdhc3RlZnVsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Js
b2NrIG5vdE51bGwgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNDg0Niw3ICs0ODU2LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyh3YXN0ZWZ1bENhc2UsIG5vdE51bGwpOwogCiAgICAgICAgIExWYWx1ZSB2ZWN0b3Ig
PSBtX291dC5sb2FkUHRyKGJhc2VQdHIsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9y
KTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3RvciwgbV9vdXQuY29uc3RJ
bnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLCAKKyAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3RvciwgbV9vdXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1
ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLAogICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVh
dGlvbiksIHVuc3VyZShub3ROdWxsKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90TnVs
bCwgY29udGludWF0aW9uKTsKQEAgLTQ4NjYsNyArNDg3NiwyMSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgIHNldEludDMyKG1fb3V0
LmNhc3RUb0ludDMyKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxsVmVjdG9yT3V0LCB3YXN0
ZWZ1bE91dCkpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxs
VmVjdG9yT3V0LCB3YXN0ZWZ1bE91dCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsKKyAgICAgICAgLy8g
QUkgcHJvbWlzZXMgdGhhdCB0aGUgcmVzdWx0IG9mIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0IHdp
bGwgYmUgSW50MzIsIHNvIHdlIG11c3QgdXBob2xkIHRoYXQgcHJvbWlzZSBoZXJlLgorICAgICAg
ICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVx
dWFsKHJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkpKTsKKyAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIocmVzdWx0KSk7
CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldFN0cmljdEludDUyKHJlc3Vs
dCk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQpAQCAtNTA1NCw4
ICs1MDc4LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIAogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRB
cnJheVZpZXcoKSkgewotICAgICAgICAgICAgICAgIHNldEludDMyKAotICAgICAgICAgICAgICAg
ICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICAgICAgICAgIExWYWx1
ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAg
c3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVh
bChsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVu
Z3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC01MDY0LDYgKzUwODksMTMgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
fQogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkK
KyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21l
VHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5v
bk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfbGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVHZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5
TW9kZSgpLnR5cGUoKSkgewpAQCAtODE2OSw5OCArODIwMSwxOSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAKLSAg
ICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7Ci0KLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291
dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgK
LSAgICAgICAgICAgICAgICBtX291dC5hYm92ZShzaXplLCBtX291dC5jb25zdEludDMyKEpTQXJy
YXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCi0gICAgICAgICAgICAgICAgcmFyZWx5KHNs
b3dDYXNlKSwgdXN1YWxseShzbWFsbEVub3VnaENhc2UpKTsKLQotICAgICAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNl
KTsKLQotICAgICAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KLSAgICAgICAgICAgICAgICBtX291
dC5zaGwobV9vdXQuemVyb0V4dFB0cihzaXplKSwgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50
U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKLSAgICAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBl
ZEFycmF5VHlwZSkgPCA4KSB7Ci0gICAgICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRB
bmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJ
bnRQdHIoNykpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KDcpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAg
ICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwotICAgICAgICAgICAgTFZh
bHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBzcGxhdFdvcmRzKAotICAgICAgICAgICAgICAgIHN0b3Jh
Z2UsCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAotICAgICAgICAgICAgICAgIG1f
b3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMp
KSksCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAotICAgICAgICAgICAgICAgIG1f
aGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBt
X291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotI2lmIENQ
VShBUk02NEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIg
PSBtX291dC56ZXJvRXh0UHRyKHNpemUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogYXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAg
ICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAg
ICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAo
QjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVu
dGljYXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAg
ICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7
Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2
ZVN0b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBm
YXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOwotICAgICAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5
VHlwZSkgewotI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAotICAgICAgICAg
ICAgY2FzZSBUeXBlICMjIG5hbWU6IFwKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUg
PSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd0Nhc2UpOyBcCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBG
T1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlf
VFlQRV9DQVNFKQotI3VuZGVmIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRQotICAgICAgICAgICAgY2Fz
ZSBUeXBlRGF0YVZpZXc6Ci0gICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2Nh
dGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2Fz
ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3Jh
Z2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwot
ICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9v
dXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19tb2RlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbXV0YXRv
ckZlbmNlKCk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlU
eXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlw
ZSkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9u
KTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5
cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9
IGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlT
bG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9u
PiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0
eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwotICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAg
ICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCiAg
ICAgICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKIApAQCAtODI3Nyw3ICs4MjMwLDEwMCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlU
eXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2NEJpdHMpCisgICAgeworICAgICAg
ICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOworCisg
ICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMs
IG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAg
ICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisK
KyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3Vn
aENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qg
b2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICAg
ICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3Ojpm
YXN0U2l6ZUxpbWl0KSk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAg
IG1fb3V0LnNobChzaXplNjRCaXRzLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5
cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUp
IDwgOCkgeworICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAg
ICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCisgICAgICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwor
ICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUo
dm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2Up
OworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBz
bG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisg
ICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQz
MihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAg
ICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVy
dGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgICAgICB7CisgICAgICAgICAgICBQYXRjaHBv
aW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7
CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsK
KyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJl
cChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRp
Y2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFy
YW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGppdC50YWdB
cnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRp
ZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0
b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAg
ICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVf
Q0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBm
YXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVy
ZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVE
X0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAg
Y2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0
ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6
ZTY0Qml0cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0
aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJh
eSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKKwor
ICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3Vs
dCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVh
dGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5
cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAg
ICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+
IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9u
c1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRp
cmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkp
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jl
c3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKQEAgLTE0NjU2LDYgKzE0NzAyLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIGJhc2UgYW5kIHZhbHVlIGFyZSA2NC1iaXRzLCBi
ZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRzCisgICAgLy8gc3RvcmVzIHZhbHVlIGF0IGV2ZXJ5IDY0
LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2UrYmVnaW4qOCBhbmQgYmFzZStlbmQqOAogICAgIHZvaWQg
c3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwgTFZhbHVlIGJlZ2luLCBMVmFsdWUgZW5kLCBMVmFsdWUg
dmFsdWUsIGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCkKICAgICB7CiAgICAgICAgIGNvbnN0IHVp
bnQ2NF90IHVucm9sbGluZ0xpbWl0ID0gMTA7CkBAIC0xNTU5MSw3ICsxNTYzOSw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRh
dGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRy
KG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVn
YXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAg
ICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAg
ICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291
dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7
CkBAIC0xNTczNCw3ICsxNTc4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAg
RGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExW
YWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRh
dGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1f
b3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAg
ICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5j
b25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzI4NCw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0gWyZdKExW
YWx1ZSB0YWdnZWRQdHIpIHsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYgKGtpbmQg
PT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSkgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQ2NChiYXNlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVudGFnQXJy
YXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
biBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBhOTQyMDA5M2Y1
MjliZTQ3ZGQ5ZDdjMDQ3OWNkNjY4ZjM3YmZlZDgzLi5lZDhmZjczZTFhM2E1MjlkZGM4NWZiMjIw
MjA3MmUzNjY2ODdkMDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAg
LTMyOSw2ICszMjksNyBAQCBjbGFzcyBPdXRwdXQgOiBwdWJsaWMgQ29tbW9uVmFsdWVzIHsKICAg
ICBMVmFsdWUgbm9uTmVnYXRpdmUzMihMVmFsdWUgbG9hZEluc3RydWN0aW9uKSB7IHJldHVybiBs
b2FkSW5zdHJ1Y3Rpb247IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoVHlwZWRQb2lu
dGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsgfQogICAgIExWYWx1ZSBsb2Fk
MzJOb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyBy
ZXR1cm4gbG9hZDMyKGJhc2UsIGZpZWxkKTsgfQorICAgIExWYWx1ZSBsb2FkNjROb25OZWdhdGl2
ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDY0
KGJhc2UsIGZpZWxkKTsgfQogCiAgICAgTFZhbHVlIGVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKICAg
ICBMVmFsdWUgbm90RXF1YWwoTFZhbHVlLCBMVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKaW5kZXggZjc4NmY3NjUxYTYwYjQzZmI3YTIz
MjQwMzc1NDhkYjk2OTQ0ZGJlMC4uOTQ5Njg5MzdjMzdlNWYxYmI1OWU1NDRiNjE1ODE1MDBlNjMy
NGEzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODMsMjMgKzgzLDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6
ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBz
d2l0Y2ggKGludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2lj
OiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BS
LCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQog
ICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAg
ICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3Rh
dGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFy
cmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0g
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKQorICAg
ICAgICAgICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSks
IHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3Rh
dGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlmIChlbGVtZW50
U2l6ZSh0eXBlKSA+IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBo
ZXJlIHNpbmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVy
Zmxvd3MgYW4gaW50MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVHUFIsIEltbTMy
KGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAgLy8gV2UgY2Fu
IHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gMzItYml0IHBsYXRmb3JtcyBUeXBlZEFycmF5
cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgorICAgICAg
ICAgICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZh
bHVlR1BSKTsKICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFs
dWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xMzAsOCArMTM5LDEyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAg
ICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVlR1BSKTsKICAgICAg
ICAgCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBz
dGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5i
b3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNj
ZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMwNjgxZjI3OTMzMDM4YjQzMmY2
MzQwZGVlYTFiLi5mYWM4ZTBhYzY2OGJlNGQ3Yjg0ZjA5MGQ4M2JjNTg2OTBiN2ZiMzg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCAr
OTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICpp
bmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChv
YmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBv
YmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9i
amVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChh
cnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwpAQCAtMjM0MiwyMSArMjM0MCwyMiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVl
IGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBz
dWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0
QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAg
IGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYg
YXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxP
YmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAg
ICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVp
Y2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBv
YmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3Vs
dCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091
dE9mQm91bmRzID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlw
ZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAg
ICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzCisg
ICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2JqZWN0LT5idXR0
ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogZXhw
YW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJsZToKICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgy
OTQwCiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxP
YmplY3Qodm0pOwpAQCAtMjM3Miw4ICsyMzcxLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNW
YWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpID49IDApCi0gICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAo
c3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmls
ZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXgg
NDFjNzFiNjAwNDRlN2JjYWYyNzk4N2M3ZGViZTdmNWNlZTNhMTdjZC4uYzFkZmNmOWM4NzMzYWMz
N2E5ZmJiNjlhOWEwY2FhNTUwNTdmNTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMTQ5LDYgKzE0OSwxOCBAQAog
I2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAwCiAjZW5kaWYKIAorI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJHRV9UWVBFRF9BUlJBWVMgMAorI2VuZGlmCisK
KyNpZiBDUFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgT0ZGTElORV9BU01fUkVHSVNURVI2NCAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9SRUdJU1RFUjY0IDAKKyNlbmRpZgorCiAjaWYgQ1BV
KEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1Njgx
Mzc3YmI5ODQyYjJkMzU1ZDg5ZjNmOWU0NTk0MWMzNThmZTA2Li40OTRlZjc2MWUzMjc5MjNmMTQy
MDJmYThjNGUxY2QzMTI4NDIwYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEwNDcsOCArMTA0Nyw4IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlCiAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9i
amVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmpl
Y3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9
IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9m
Qm91bmRzID0gZmFsc2U7CiAKQEAgLTExNzAsMTQgKzExNzAsMTMgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpCiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBib29sIGlz
U3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgCiAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5k
ZXgoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoYmFzZVZh
bHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5
KGksIHZhbHVlKSkKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwg
aSwgdmFsdWUpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCFvYmplY3QtPnRy
eVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkp
CiAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBpc1N0cmljdE1vZGUpOwogICAgICAgICAgICAg
TExJTlRfRU5EKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkYmM0NzAwM2NjYmZmZTM1YjliMzgx
ODQyMzMyOTkwMGIwMTlhMjFkLi43NTgyYzMwNzU3MDE4YTBiNDQ5Mzk0NmZkODJkNzQzODcxOTlh
ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0
IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6
c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdFX1RZ
UEVEX0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhw
ciBBcnJheVByb2ZpbGU6OnNtYWxsVHlwZWRBcnJheU1heExlbmd0aAorZW5kCisKIGNvbnN0IG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID0gY29uc3RleHByIG1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsCiAKIGlmIFg4Nl82NCBvciBYODZfNjRfV0lOIG9yIEFSTTY0IG9yIEFSTTY0
RSBvciBSSVNDVjY0CkBAIC0xMzAwLDcgKzEzMDQsOCBAQCBtYWNybyBhcnJheVByb2ZpbGUob2Zm
c2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKICAgICBsb2FkYiBK
U0NlbGw6Om1faW5kZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIAot
bWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwg
ZmluaXNoRG91YmxlR2V0QnlWYWwsIHNsb3dQYXRoKQorIyBOb3RlIHRoYXQgaW5kZXggaXMgYWxy
ZWFkeSBzaWduLWV4dGVuZGVkIHRvIGJlIGEgcmVnaXN0ZXIgd2lkdGguCittYWNybyBnZXRCeVZh
bFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVH
ZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCBzbG93UGF0aCkKICAgICAjIEZpcnN0IGxldHMg
Y2hlY2sgaWYgd2UgZXZlbiBoYXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21l
IGJvaWxlcnBsYXRlIHVwIGZyb250LgogICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBlW2Jhc2VdLCB0
MgogICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKQEAgLTEzMTEsMTMgKzEzMTYsMjIg
QEAgbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZh
bCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHMKICAgICBpZiBBUk02NEUKICAgICAgICAgY29uc3Qg
bGVuZ3RoID0gdDYKICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpT
QXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIGlu
ZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X2xlbmd0aFtiYXNlXSwgbGVuZ3RoCisgICAgICAgIGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQ
YXRoCisgICAgZWxzaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgICMgbGVuZ3RoIGFuZCBz
Y3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNl
IHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5k
ZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNl
CiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5l
ZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRm
b3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFti
YXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAorICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAg
ICAgICBicWJlcSBpbmRleCwgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxUeXBlZEFy
cmF5CisgICAgICAgIHNldExhcmdlVHlwZWRBcnJheSgpCisuc21hbGxUeXBlZEFycmF5OgorICAg
IGVuZAorCiAgICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2VdLCB0Mwog
ICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5ndGgsIGJhc2UsIHNjcmF0Y2gpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KaW5kZXggNTBkNWRiZGY2MDJhOTE5NmJkNWNhNTE5NDAyNjRmZmQ4OWQ3MDZiNC4uNjc4
ZWM2NGM2NzRhODdkZTJjMjdhMTYxOGE1MmQzYTg3MDRjNTVkNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
QEAgLTE2NjksNyArMTY2OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwg
T3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0
Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRB
cnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9w
R2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdl
dEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgbWFjcm8gKCkgZW5kLCAub3BHZXRCeVZhbFNs
b3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkODRiNmVhZDM3ZmRkYjQzMjBiODQ1MzlkYjc3
YzRiNmI4MDQ3ZjhjLi41ZDkxOTNjNzJmZmFmZWY3YmM3NzgyMWNkMTNlNTgxYmNiNWZhNzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEzLDE2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
CiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAor
ICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJy
YXkoKQorICAgICAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQorICAgICAgICBlbmQKKyAgICBlbHNl
CisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAgICBjcmFzaCgp
CisgICAgICAgIGVuZAorICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQyKQogCiAgICAgZ2V0
KG1fYmFzZSwgdDIpCkBAIC0xNzIzLDcgKzE3MzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZAogCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJ
bnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKKyAg
ICBzeGkycSB0MSwgdDEgIyBUaGlzIHNpZ24tZXh0ZW50aW9uIGlzIG1ha2VzIGxvYWQgd29yayBh
Z2FpbnN0IDRHQiBUeXBlZEFycmF5LgogCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6
bV9idXR0ZXJmbHlbdDBdLCB0MywgbnVtYmVyVGFnKQogICAgIG1vdmUgVGFnTnVtYmVyLCBudW1i
ZXJUYWcKQEAgLTE3NjMsNyArMTc3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAg
ZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFs
VHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZh
bCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlz
aEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAu
b3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuY3BwCmluZGV4IGM5YjhmMmE3MTkxZTNhYzcyMGQ4OWRmZTA0NmE2MTU4
OWYzZjQwYzcuLjljZDdlNDM2ZjVjZGM2YmVlMzQ4NjU1YThhOTQ4NTA1MGQ5NjAzYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3
ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnByaW1p
dGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCkuY29w
eVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZl
ckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIHNpemUsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRh
LCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAgLCBt
X3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29udGVudHM6
OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQogICAgIG90
aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRzOjpB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBzaXplSW5CeXRlcywg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRh
KGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKIHsK
QEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQog
ICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRy
eUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6
dHJ5QWxsb2NhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3QgYWxs
b3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVtZW50
cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRC
eXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRC
eXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAg
ICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVja2Vk
U2l6ZSBzaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzOworICAgIHNpemVJbkJ5dGVzICo9IGVsZW1l
bnRCeXRlU2l6ZTsKKyAgICBpZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJ
bkJ5dGVzLnZhbHVlKCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKKyAgICAgICAgcmVzZXQo
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KG51bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVu
dEJ5dGVTaXplKTsKLSAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlczsKKwor
ICAgIFVDUFVSZWdpc3RlciBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAg
ICAgaWYgKCFhbGxvY2F0aW9uU2l6ZSkKICAgICAgICAgYWxsb2NhdGlvblNpemUgPSAxOyAvLyBN
YWtlIHN1cmUgbWFsbG9jIGFjdHVhbGx5IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9v
IG11Y2guIFdlIHVzZSBudWxsIHRvIG1lYW4gdGhhdCB0aGUgYnVmZmVyIGlzIGRldGFjaGVkLgog
CiAgICAgdm9pZCogZGF0YSA9IEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgYWxsb2NhdGlvblNpemUpOwotICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5
dGVzKTsKKyAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRhLCBzaXplSW5CeXRlcy52YWx1ZSgpKTsK
ICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTM0LDcgKzEzMiw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAgICAgaWYgKHBvbGljeSA9
PSBaZXJvSW5pdGlhbGl6ZSkKICAgICAgICAgbWVtc2V0KGRhdGEsIDAsIGFsbG9jYXRpb25TaXpl
KTsKIAotICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlczsKKyAgICBtX3NpemVJbkJ5dGVz
ID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVz
IDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiAgICAgbV9kZXN0cnVjdG9yID0gQXJyYXlCdWZm
ZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQpAQCAtMTc4LDcgKzE3Niw3IEBA
IHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMm
IG90aGVyKQogICAgIFJFTEVBU0VfQVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FS
UkFZX0JVRkZFUl9TSVpFKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVh
dGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0x
OTEsNyArMTg5LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5
QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci5kYXRh
KCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BV
UmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShzb3Vy
Y2UsIGJ5dGVMZW5ndGgpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjA4LDcgKzIwNiw3IEBAIFJl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYg
Y29udGVudHMpCiAvLyBDdXJyZW50IHRoaXMgaXMgb25seSB1c2VkIGZyb206CiAvLyAtIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PD46OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkuIEJ1dCBpbiB0aGF0
IGNhc2UsIHRoZSBtZW1vcnkgc2hvdWxkIGhhdmUgYWxyZWFkeSBjb21lCiAvLyAgIGZyb20gdGhl
IGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0
IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBieXRl
TGVuZ3RoKQogewogICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRW5hYmxlZCgpIHx8IChHaWdhY2Fn
ZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNhZ2U6OmNvbnRhaW5zKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5ndGggLSAxKSkpOwogICAgIHJldHVybiBjcmVhdGVG
cm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdl
RGVzdHJ1Y3RvcigpKTsKQEAgLTIyMCw3ICsyMTgsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5n
dAogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdlIGNvdWxkIGludHJvZHVjZSBhIG5ldyBzZXQgb2Yg
dHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUgdW5jYWdlZCBhbmQgZ2V0IGFjY2Vzc2VkCiAvLyAg
IGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3NlbWJseS4gV2FzbSBzaG91bGQgYWxsb2NhdGUgZnJv
bSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRl
cyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5n
dGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKIHsKICAgICBp
ZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGF0YSkp
CiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKTsKQEAgLTIyOSw3
ICsyMjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbgogICAgIHJldHVybiBjcmVhdGUoV1RG
TW92ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkK
K1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5
Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzOSw3ICsyMzcsNyBAQCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVy
biB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7
CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxv
Y2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7
CkBAIC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZwogICAgIHJldHVy
biBjcmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRlbnRzKSwgc291cmNlLCBieXRlTGVuZ3RoKTsK
IH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gY3JlYXRl
KG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJ
bml0aWFsaXplKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5
IHBvbGljeSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShVQ1BVUmVnaXN0
ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250
ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIGF1dG8gYnVmZmVyID0g
dHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CiAgICAgaWYg
KCFidWZmZXIpCkBAIC0yNjYsMTUgKzI2NCwxNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlUwog
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRl
bnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYg
Y29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7
Ci0gICAgQVNTRVJUKCFieXRlTGVuZ3RoIHx8IHNvdXJjZSk7CiAgICAgYXV0byBidWZmZXIgPSBh
ZG9wdFJlZigqbmV3IEFycmF5QnVmZmVyKFdURk1vdmUoY29udGVudHMpKSk7Ci0gICAgbWVtY3B5
KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIGlmIChieXRlTGVuZ3Ro
KSB7CisgICAgICAgIEFTU0VSVChzb3VyY2UpOworICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRh
KCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgfQogICAgIHJldHVybiBidWZmZXI7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJ
bml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGlj
eSkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRy
eUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEs
NyArMjkxLDcgQEAgQXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMm
JiBjb250ZW50cykKIHsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91
YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQorVUNQVVJlZ2lzdGVyIEFycmF5
QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBVQ1BVUmVnaXN0ZXIgbGVmdCwgVUNQVVJlZ2lz
dGVyIHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0KTsKICAgICBpZiAoeCA8IGxl
ZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUo
ZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQogICAgIHJldHVybiB4Owog
fQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
CitVQ1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25z
dAogewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CisgICAgVUNQ
VVJlZ2lzdGVyIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CiAgICAgaWYgKGluZGV4IDwg
MCkKICAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7CiAgICAgcmV0dXJuIGNs
YW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3QK
ICAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRl
TGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdp
dGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleChVQ1BVUmVn
aXN0ZXIgYmVnaW4sIFVDUFVSZWdpc3RlciBlbmQpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgc2l6
ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKKyAgICBVQ1BVUmVnaXN0ZXIgc2l6
ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKICAgICBhdXRvIHJlc3VsdCA9IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBi
ZWdpbiwgc2l6ZSk7CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmVzdWx0LT5zZXRTaGFyaW5n
TW9kZShzaGFyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5oCmluZGV4IDY4ZmY5MGUxM2ViYTNjMmY3YmNmYTY5MjcwNWZkN2Y3NTdkZDUyNmEu
LmM2NTMzZmE4MjZiY2YyNmQ2MDY2YjU1MGQwM2ExOTAzMDQyMGMzMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJ
bnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNkZWZp
bmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFICgxdWxsIDw8IDMyKQorc3RhdGljX2Fzc2VydChzaXpl
b2YoVUNQVVJlZ2lzdGVyKSA9PSBzaXplb2YodWludDY0X3QpKTsKKyNlbHNlCisvLyBCZWNhdXNl
IHdlIGFyZSB1c2luZyBhIFVDUFVSZWdpc3RlciB0byBzdG9yZSB0aGUgc2l6ZSBpbiBieXRlcyBv
ZiBhcnJheSBidWZmZXJzLCB3ZSBjYW5ub3Qgc3VwcG9ydCA0R0Igb24gMzItYml0IHBsYXRmb3Jt
cy4KKy8vIE5vdGUgdGhhdCBzdG9yaW5nIHRoZSBzaXplIGluIGEgdWludDY0X3Qgd291bGQgYmUg
cXVpdGUgbWVzc3kgb24gMzItYml0cyBhcyB0aGUgSklUIGhhdmUgdG8gYmUgYWJsZSB0byBtYW5p
cHVsYXRlIGl0LgorLy8gU28gd2UgYXJlIHN0aWNraW5nIHdpdGggMkdCLiBJdCBzaG91bGQgaW4g
dGhlb3J5IGJlIHBvc3NpYmxlIHRvIHN1cHBvcnQgdXAgdG8gKDRHQiAtIDFCKSBpZiBhbnlvbmUg
Y2FyZXMuCiAjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAweDdmZmZmZmZmdQorI2VuZGlm
CiAKIGNsYXNzIFZNOwogY2xhc3MgQXJyYXlCdWZmZXI7CkBAIC01MSw3ICs2MCw3IEBAIHVzaW5n
IFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uID0gUGFja2VkUmVmUHRyPFNoYXJl
ZFRhc2s8dm9pZCh2b2lkKik+CiAKIGNsYXNzIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gewog
cHVibGljOgotICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWdu
ZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgU2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIsIEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIH5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKCk7CiAg
ICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwo
bV9zaXplSW5CeXRlcyk7IH0KQEAgLTYwLDE0ICs2OSwxNCBAQCBjbGFzcyBTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVm
ZmVyQwogICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwg
dm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7Ci0gICAgdW5zaWduZWQgbV9z
aXplSW5CeXRlczsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNz
IEFycmF5QnVmZmVyQ29udGVudHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVm
ZmVyQ29udGVudHMpOwogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVy
Q29udGVudHMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZv
aWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQq
IGRhdGEsIFVDUFVSZWdpc3RlciBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50
cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVm
ZmVyQ29udGVudHMmIG9wZXJhdG9yPShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpAQCAtNzksNyAr
ODgsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQotICAgIHVu
c2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQorICAg
IFVDUFVSZWdpc3RlciBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7
IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0K
ICAgICAKQEAgLTk0LDcgKzEwMyw3IEBAIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewogICAg
ICAgICBEb250SW5pdGlhbGl6ZQogICAgIH07CiAKLSAgICB2b2lkIHRyeUFsbG9jYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9u
UG9saWN5KTsKKyAgICB2b2lkIHRyeUFsbG9jYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgCiAg
ICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29u
dGVudHMmKTsKQEAgLTEwNSwyOCArMTE0LDI4IEBAIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMg
ewogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgVUNQ
VVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1Ymxp
YyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRl
TGVuZ3RoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVu
Z3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBV
Q1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdp
c3RlciBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoVUNQ
VVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJh
eUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIAogICAgIC8v
IE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFs
aXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGluZSBjb25z
dCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdDsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsKICAgICAK
ICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5QnVm
ZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0Niw3IEBAIGNsYXNzIEFycmF5QnVmZmVyIDog
cHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91Ymxl
IGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBz
bGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25l
ZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
c2xpY2VXaXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVyIGVu
ZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQg
dW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGlj
IEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VE
ZXN0cnVjdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKLSAgICBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZv
aWQqLCB1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAg
ICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRl
bnRzJiYsIGNvbnN0IHZvaWQqLCBVQ1BVUmVnaXN0ZXIpOworICAgIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kp
OwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgaW5saW5lIHVu
c2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKLSAgICBzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJp
Z2h0KTsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBj
b25zdDsKKyAgICBzdGF0aWMgaW5saW5lIFVDUFVSZWdpc3RlciBjbGFtcFZhbHVlKGRvdWJsZSB4
LCBVQ1BVUmVnaXN0ZXIgbGVmdCwgVUNQVVJlZ2lzdGVyIHJpZ2h0KTsKIAogICAgIHZvaWQgbm90
aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTE5Miw3ICsyMDEsNyBAQCBjb25zdCB2b2lkKiBBcnJh
eUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQog
Ci11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitVQ1BVUmVnaXN0ZXIg
QXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRlbnRz
LnNpemVJbkJ5dGVzKCk7CiB9CkBAIC0yMDUsNyArMjE0LDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6
aXNTaGFyZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVmZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0
ZXMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIHNjYWxlIHRo
aXMgYnkgdGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29tZXRoaW5nLgotICAgIHJldHVybiBzaXpl
b2YoQXJyYXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlTGVuZ3RoKCkpOworICAg
IHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0ZUxlbmd0aCgpOwogfQogCiB2b2lkIEFy
cmF5QnVmZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNzY4ZmVhOTA5YmFiYTFhZjg5Y2I4YjZjYWNlNjc3YmEy
N2Q5ZWEwMi4uZWIwNTA5ZWNkY2FjZjg1YmZhNDVjMDIxMzExNjdmNGU0Y2U1NTYyZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZm
ZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygKLSAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBi
eXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5dGVPZmZz
ZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAgICAgICAs
IG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChi
eXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPFVDUFVSZWdpc3RlciwgQ3Jhc2hPbk92ZXJmbG93PiBs
ZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5
dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTlkM2RlMmE0MzQz
ZGM2NzVjOWM3ZThhMDljNzA0Li43NzQ3NDRhNDAzNmU0YThhOGI4NTNmNDNkYTljODIyYzI0YWM0
MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIGNsYXNzIEFycmF5QnVmZmVyVmll
dyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogCiAgICAgdm9pZCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VBZGRyZXNzKCk7IH0KIAotICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQoKSBjb25zdAorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc2V0RGV0YWNoYWJsZShib29sKTsKICAgICBib29sIGlzRGV0YWNoYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxlOyB9CkBAIC05MiwxOSArOTMsMTggQEAgY2xh
c3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAg
ICAvLyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBz
dGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQo
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBlbGVtZW50U2l6ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0
dXJuICEoYnl0ZU9mZnNldCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBI
ZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIg
aXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VM
ZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkg
dGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2Uu
CisgICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXIm
IGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5n
dGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFp
bmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNpemU7CisgICAgICAg
IFVDUFVSZWdpc3RlciByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9mZnNl
dCkgLyBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KGVsZW1lbnRTaXplKTsKICAgICAgICAgaWYg
KG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgY2xhc3MgQXJy
YXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7CiAgICAg
dmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFs
T2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFy
cmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVy
VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BV
UmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVm
ZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldEltcGwo
QXJyYXlCdWZmZXJWaWV3KiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5l
IGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0
aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQpOworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBVQ1BV
UmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KTsKKyAgICBp
bmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIFVDUFVSZWdpc3RlciBk
YXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJv
b2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVu
Z3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgo
Ci0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLAotICAgICAg
ICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9vbCB6
ZXJvUmFuZ2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgcmFuZ2VC
eXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxlbWVu
dHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51
bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1FbGVt
ZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwKLSAgICAgICAgdW5zaWdu
ZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAgICAgICB1
bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIFVDUFVSZWdpc3RlciBhcnJheUJ5dGVPZmZz
ZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciAqb2Zmc2V0LAorICAgICAgICBVQ1BVUmVnaXN0ZXIg
Km51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRf
TUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVy
IG1heE9mZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdpc3Rlcj46Om1heCgpIC0g
YXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhP
ZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAg
ICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihU
KTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZz
ZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxl
bmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIENoZWNrZWQ8VUNQVVJlZ2lz
dGVyLCBSZWNvcmRPdmVyZmxvdz4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBh
ZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFy
cmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQo
KSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAg
ICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgVUNQVVJl
Z2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0
KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5n
RWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zm
c2V0IDogMzE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB1aW50NjRfdCBtX2J5
dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisgICAgdWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7Cisj
ZW5kaWYKICAgICBib29sIG1faXNEZXRhY2hhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVM
ZW5ndGg7CisgICAgVUNQVVJlZ2lzdGVyIG1fYnl0ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VB
ZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+
OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFn
ZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0xNjAsODEgKzE2NSw0NiBAQCBjbGFzcyBBcnJh
eUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6
OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jv
b2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9m
ZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAg
aWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0
aCgpLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAor
CiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygp
KTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwg
YXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlC
dWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJh
bmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgo
KQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7
Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlz
U3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVu
Z3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFz
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJh
c2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIFVDUFVSZWdpc3Rl
ciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5
dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRl
TGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxl
bmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBv
dmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgZGF0
YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGluYXRpb24sIGJhc2UgKyBieXRlT2Zm
c2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlC
dWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5n
ZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbChVQ1BVUmVn
aXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIHJhbmdlQnl0ZUxlbmd0aCkKIHsKLSAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFu
Z2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5n
ZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZz
ZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZz
ZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zmc2V0LCAwLCByYW5n
ZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFycmF5QnVmZmVyVmll
dzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5z
aWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQotewot
ICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBpZiAo
c3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAg
IGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7Ci0g
ICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAgICBl
bmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBzdGFy
dDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAqbGVu
Z3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCA2ODgzYTE3YzQ3MmQ0
ZGE1MTE0OWQ3MDk5ZTk1OTc4ZWExNjlmM2I3Li5kMzYyNDUwYTJmOGI5MmQ4MzZjMTE0ZTZhZTI5
OWZkZTQ1YzQ5YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
dG9taWNzT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcApAQCAtMTIwLDggKzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0
ZUF0b21pY0FjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJy
CiAgICAgICAgIGFjY2Vzc0luZGV4ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9i
amVjdCwgImFjY2Vzc0luZGV4Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IDApOwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXgg
Pj0gdHlwZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21p
YyBhY2Nlc3MuIl9zKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRhVmlldy5jcHAKaW5kZXggZGNjMmY1MDY0YWYyMWFjYjE3ZTQ4Zjc5MzhkMGRm
N2M5NmZhMWNhOS4uN2IxZWQ3Y2Y1NjA1MGY1YzZhYmEyNjRkY2UzNjNhNmNjM2M1ZjhjNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMCAr
MzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKICAgICA6
IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgp
CiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRl
T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsK
IH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIx
NDQ2YjZlYjZlOTVmZGZiOWUyNDVmYjYxYjM1YzgzLi5kZTcxNGI2MjUwOWExN2VmNmRmOWFkMzdk
NWY5ZDAxOThkM2QxMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmlldyBm
aW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogICAgIHN0YXRp
YyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogICAgIAogICAg
IFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbApAQCAtNDMsNyArNDMsNyBAQCBj
bGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5h
bDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9m
ZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBn
ZXQoVUNQVVJlZ2lzdGVyIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAo
b2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIGNs
YXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiAgICAgfQogICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVuc2lnbmVkJiBvZmZzZXQs
IGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgcmVhZChV
Q1BVUmVnaXN0ZXImIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51
bGxwdHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRoaXMtPnRlbXBsYXRlIGdldDxUPihv
ZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAgICAgaWYgKCFzdGF0dXMgfHwgKnN0
YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgRGF0YVZpZXcgZmluYWwgOiBwdWJsaWMgQXJy
YXlCdWZmZXJWaWV3IHsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBi
b29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3RlciBvZmZzZXQs
IFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVv
ZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBjbGFzcyBEYXRhVmlldyBm
aW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBE
YXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOworICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQ
VVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBiZTdlNmMwNTM0ZmE4MzVlODA3OTgyYjVm
YWQzYWE0M2ExOGFkNzEwLi5iMjg3OWIzZGYwNjlhMzg2YmViN2U2NWY2NDgxMWMzNDQ3MTEyNzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRB
cnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMywyNCArMzMsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVi
bGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFy
cmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGlj
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAK
LSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lz
dGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgCiAgICAgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIAotICAgIGJvb2wg
c2V0KEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJyYXksIHVuc2lnbmVkIG9mZnNl
dCkKKyAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIGFycmF5LCBV
Q1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXks
IG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6
ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgY291bnQsIFVDUFVSZWdpc3Rl
ciBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksCkBAIC01OCwzOSArNTgsMzkg
QEAgY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVy
VmlldyB7CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNp
emVfdCBjb3VudCkKKyAgICBib29sIHplcm9SYW5nZShVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BV
UmVnaXN0ZXIgY291bnQpCiAgICAgewogICAgICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZz
ZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksIGNvdW50ICogc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsg
emVyb1JhbmdlKDAsIGxlbmd0aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRl
TGVuZ3RoKCkgLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbShVQ1BVUmVnaXN0ZXIgaW5kZXgpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMt
Pmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAot
ICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9p
ZCBzZXQoVUNQVVJlZ2lzdGVyIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0
aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJs
ZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXROYXRpdmUodW5zaWduZWQgaW5kZXgsIHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXROYXRpdmUoVUNQ
VVJlZ2lzdGVyIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlz
LT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1ZTsKICAgICB9CiAKLSAg
ICBib29sIGdldFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3Vu
dCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogZGF0YSwgVUNQVVJlZ2lzdGVyIGNvdW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIGdldFJhbmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGRhdGEpLApAQCAtOTgsMTggKzk4LDExIEBAIGNsYXNzIEdlbmVyaWNUeXBl
ZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogICAgICAgICAgICAg
b2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAKLSAgICBi
b29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0
CisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdp
c3RlciBjb3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMt
Pmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAg
ICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZs
b3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAgICAgIHJl
dHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGNvdW50LCB0aGlzLT5sZW5ndGgo
KSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFy
cmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAgICBUeXBlZEFycmF5
VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9y
Ojp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlW
aWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiAgICAgSlNBcnJheUJ1ZmZlclZp
ZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2
YXRlOgotICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVD
UFVSZWdpc3RlciBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKaW5kZXggYWU1YmRkOGM2YTMxNzM5ZDAwYzljYTE3Y2RiZGZmMDk5NTJiZTdh
Ni4uNTljNjllMzEyMmE4ZGQzMzhkYWYxYzYzMTM2ZjMxZGE4NTNhZDhjNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OkdlbmVyaWNUeXBlZEFycmF5VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgobGVuZ3Ro
IC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
VUNQVVJlZ2lzdGVyPjo6bWF4KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
UmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoVUNQ
VVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00Nyw3ICs0OCw3IEBAIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKHVuc2lnCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BV
UmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGFycmF5LCBs
ZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01Niw3ICs1Nyw3IEBAIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAg
IGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRl
KFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBp
ZiAoIWJ1ZmZlcikKQEAgLTc0LDcgKzc1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAg
IGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisg
ICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVSZWdpc3RlciBsZW5n
dGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3Jl
YXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04NSw3ICs4Niw3IEBAIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEw
MSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVn
aXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcg
QEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBs
ZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2IEBAIEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAg
cmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3Rh
cnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAg
Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zm
c2V0LCAmbGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlTaGFyZWRC
dWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1l
bnRzPEFkYXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVPZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0
aCk7Ci0gICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsKLX0KLQog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJyYXlCdWZmZXJWaWV3KiBHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggODllYWVi
ZDNjMmNjNjViZWMwNjNmMmM0ZWNhNGE1NGZhODVhYjBkMC4uMjdhOTc3OWY0OTZmOGQ5ZGJiNTMx
MDMwYTQ1ZWI5NmQ4M2FmNjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFz
c0luZm8gSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAg
IDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgp
CiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgK
LSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQz
Ml90IGVsZW1lbnRTaXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVS
ZWdpc3RlciBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9u
TW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKQEAgLTYzLDcgKzYzLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgaWYgKGxlbmd0aCA8PSBmYXN0U2l6ZUxp
bWl0KSB7CiAgICAgICAgIC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCog
dGVtcDsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7
CisgICAgICAgIFVDUFVSZWdpc3RlciBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNpemUp
OwogICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTgxLDE4ICs4MSwxOCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERv
bid0IGFsbG93IGEgdHlwZWQgYXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxl
bmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAg
IENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gc2l6ZSA9IGxlbmd0aDsKKyAg
ICBzaXplICo9IGVsZW1lbnRTaXplOworICAgIGlmIChzaXplLmhhc092ZXJmbG93ZWQoKSB8fCBz
aXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzdGF0aWNfY2FzdDxz
aXplX3Q+KGVsZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3RoKTsKKworICAgIG1f
dmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHNpemUudmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3RvcikKICAgICAgICAg
cmV0dXJuOwogICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBtZW1zZXQodmVjdG9y
KCksIDAsIHNpemUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0
ZWQoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUpOworICAgIHZtLmhl
YXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsKICAgICAKICAgICBt
X3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6ZVR5cGVkQXJyYXk7
CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZz
ZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoV2FzdGVmdWxUeXBlZEFycmF5KQpA
QCAtMTE0LDcgKzExNCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0
OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9u
Q29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1
cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKERhdGFW
aWV3TW9kZSkKQEAgLTIzOCw5ICsyMzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZWxlbWVu
dFNpemUoSlNUeXBlIHR5cGUpCiAgICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50
OEFycmF5VHlwZV07CiB9CiAKLXVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3Ro
KCkgY29uc3QKK1VDUFVSZWdpc3RlciBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNv
bnN0CiB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBDaGVja2VkPFVDUFVSZWdpc3Rlcj4gcmVz
dWx0ID0gbGVuZ3RoKCk7CisgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplKHR5cGUoKSk7CisgICAg
cmV0dXJuIHJlc3VsdC52YWx1ZSgpOworI2Vsc2UKKyAgICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVy
ZmxvdyBpcyBhbHJlYWR5IGNoZWNrZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRk
IHRoZSBleHRyYSBzYW5pdHkgY2hlY2sgd2hlbiBhc3NlcnRzIGFyZSBlbmFibGVkLgogICAgIHJl
dHVybiBsZW5ndGgoKSAqIGVsZW1lbnRTaXplKHR5cGUoKSk7CisjZW5kaWYKIH0KIAogQXJyYXlC
dWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2
Nyw3ICsyNzQsNyBAQCBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5k
V2FzdGVNZW1vcnkoKQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJl
KHZtKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5n
dGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CiAKICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgIGNh
c2UgRmFzdFR5cGVkQXJyYXk6IHsKQEAgLTMxNSw4ICszMjIsOCBAQCBSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKICAgICBBcnJh
eUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IHRo
aXMtPmJ5dGVPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsK
KyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKKyAgICBV
Q1BVUmVnaXN0ZXIgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNoICh0eXBlKCkp
IHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMjIEFycmF5VHlwZTog
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmgKaW5kZXggZGQwMWY3ZjgyYTUzNmJmNWMxMDZjYTJhYjBhN2U3YzIzMDkzMjYxNC4uNDY3MGI0
NmQ4Yjc2MGUzZGE1ZGNiYTQzZjUxMWNjZGJhYjlmZmJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcg
QEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIFVDUFVSZWdpc3RlciBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0
b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2Fn
ZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsx
MTcsMTIgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgICAgIHJldHVybiBudWxsLnJhd0JpdHMoKTsKICAgICB9CiAgICAgCi0gICAgc3Rh
dGljIHNpemVfdCBzaXplT2YodWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkK
KyAgICBzdGF0aWMgVUNQVVJlZ2lzdGVyIHNpemVPZihVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB1bnNp
Z25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSkK
LSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CisgICAgICAgIENo
ZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBsZW5ndGg7CisgICAgICAgIHJlc3VsdCAqPSBl
bGVtZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAx
OworICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNr
ZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSArMTM4LDI1IEBAIGNsYXNzIEpT
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1YmxpYzoK
ICAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxp
emUgfTsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNv
bnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRT
aXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0Zp
bGwpOwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3Rpbmcg
ZmFzdCB0eXBlZCBhcnJheXMuIEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAg
ICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9p
ZCogdmVjdG9yKTsKKyAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBVQ1BV
UmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0
dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgICAgIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZp
ZXdUYWcgeyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAg
ICAgICAgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAg
ICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZp
ZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAg
ICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBV
Q1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAg
VHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBC
dXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAg
ICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3IDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogICAg
ICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9p
ZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwotICAgICAgICB1
aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG1fbGVuZ3RoOwogICAgICAg
ICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7
CiAgICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChsZW5ndGgoKSk7IH0KICAgICB2b2lkKiB2ZWN0b3JX
aXRob3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldFVuc2FmZSgp
OyB9CiAgICAgCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKTsKLSAgICBpbmxpbmUg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOworICAgIGlu
bGluZSBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCgpOworICAgIGlubGluZSBzdGQ6Om9wdGlvbmFs
PFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwogCi0gICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKCkgY29uc3Q7CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGVuZ3RoOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsKIAogICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAgY2xhc3MgSlNBcnJh
eUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgQXJyYXlCdWZmZXIq
IGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3RvclB0ciBtX3ZlY3RvcjsK
LSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9sZW5ndGg7CiAgICAg
VHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCAxZDA3MmI3
MWFjYjczMzc1ZWI0YzNhZDY0NmMwNWI5ZmNkNmE3YWNmLi42MzE4MTU1ZTY0MGFhYzFkYzQ4Y2Nm
NGMyZWU4MDQyNzM2NTE0ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTksNyArOTksNyBAQCBp
bmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAg
IHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVjdG9y
V2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5k
YXRhKCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRl
bHRhKTsKKyAgICBVQ1BVUmVnaXN0ZXIgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVy
PihkZWx0YSk7CiAgICAgaWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8cHRyZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAg
LTExMCwxNCArMTEwLDE0IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlT2Zmc2V0SW1wbCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVk
IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKK2lubGluZSBVQ1BVUmVnaXN0ZXIgSlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1w
bDxNdXRhdG9yLCB1bnNpZ25lZD4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRv
ciwgVUNQVVJlZ2lzdGVyPigpOwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1
cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PigpOworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxD
b25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4+KCk7CiB9CiAKIGlu
bGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVk
KFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAppbmRleCBiMWVhOWRhMGZlNGNlZTU4OWE5YThhYmIyYzRiNGJkMWEzNzQxMzQz
Li5lNWJkZmM2ODc4MDljN2IzYzg1NmU3YmNlZWYyYjFjZDI2ZDg4OTJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL05vbm1vdmFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgog
CkBAIC0yOTgsNiArMjk5LDcgQEAgY2xhc3MgSlNWYWx1ZSB7CiAgICAgaW50MzJfdCB0b0ludDMy
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9VSW50MzIoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAgICBVQ1BVUmVnaXN0ZXIgdG9UeXBlZEFycmF5
SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OwogICAg
IGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXgg
MzRlYTIxNDYwYTBkYjQ1YTdkMDI2MDdhZjdiYWU0NWE3NzNjNWIzNC4uODBjMjNmNmM2OTZkMmMw
YzY0NGJhODFjOGYzZGU5ZTVkM2FmMDU1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxNCArNjksNDcgQEAgaW5saW5l
IHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1l
LCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAg
ICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgeworCisgICAg
aWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKworICAgIGlmIChkID4g
c3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
KSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2Ui
KSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGluZSBVQ1BVUmVnaXN0ZXIgSlNWYWx1
ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
Y2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91
YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3Ry
aW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gYXNJbnQzMigp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsKKworICAg
IGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJSQVlfQlVGRkVSX1NJWkUpKSB7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBBbGwgb2YgdGhpcyBtb25zdHJvc2l0
eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0IG9uIDE8PDMyLgorICAgIFVDUFVS
ZWdpc3RlciBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1dE9mZnNldCA9IDA7Cisg
ICAgVUNQVVJlZ2lzdGVyIGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCk7CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4KSkgeworICAg
ICAgICBvdXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZzZXQgPSBpbnQz
Mk1heDsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRwdXRPZmZzZXQg
KyBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0M6OnRv
SW50MzIoZCAtIGlucHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEy
NjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOTQyNzdmZTQ0YjRiZGY3ODc5OWI3
ZTBmYjdiN2MuLjk4NWQ5ZTI0NDk4MTQ2YTQ1NjkzODkxM2JhNDEyMDU4MmE0ZGNiNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyAr
NDIsNyBAQCBKU0RhdGFWaWV3OjpKU0RhdGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4
dCYgY29udGV4dCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcgogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNl
dCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcw
LDI1ICs3MCwyNSBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNE
YXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIpCiB7CiAg
ICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LWJvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0
KiwgdW5zaWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmpl
Y3QqLCBVQ1BVUmVnaXN0ZXIsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBVQ1BVUmVnaXN0ZXIp
CiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQs
IEpTVmFsdWUpCitib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgVUNQ
VVJlZ2lzdGVyLCBKU1ZhbHVlKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuaAppbmRleCAyYzc4NWU0NzYxMWE5ZTNmMjI4ZGUyOGI4YWU2MDhiNWU3NmMyZmM3Li41ZWUx
ZDg2MTllOTQ5ZWMyZGQwNmI5MGZlNzU2ZGVkYmNiMjEwNzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMTUgKzQ2LDE1IEBAIGNsYXNzIEpT
RGF0YVZpZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgIH0KIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0LAorICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAgICAg
CiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2Ug
YXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVV
bmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wg
c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGlj
IEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAg
Ym9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpTT2JqZWN0KiwgVUNQVVJl
Z2lzdGVyLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFs
T2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBKU1ZhbHVlKTsKICAgICAKICAgICBBcnJheUJ1ZmZlciog
cG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIEFy
cmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDk0OTA2MjQ3
ZWE2NWZlZmQ3YmRhY2IwOTczMzFmNWRjODgxODk0NGMuLmQ4Yzk5YzNjNjhhNTBiMzViN2Y5YTBi
ZTllMzNmMWM2MTY0MmJhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDExICsxMzYsMTEgQEAgRW5j
b2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0
aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNl
dCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zm
c2V0Iik7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxl
RW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lzdGVyIGVsZW1lbnRTaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAg
LTE0OSw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNE
ZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRo
ZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3Ro
KCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAg
ICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0
aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApAQCAtMTgyLDcgKzE4
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERh
dGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVk
IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0
LCAiYnl0ZU9mZnNldCIpOworICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0
IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwpAQCAt
MTk1LDcgKzE5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4g
PSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0LDcg
KzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVk
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXci
X3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAg
ICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAo
ZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxl
bWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBj
MjJjNTVhMGQ4MWQ1NTJkYTFiYjRhMTUzYzhkZDM0NjA2ZjJlZDQxLi4wNTY4MzhjOWU0MTgwYTQ4
ZjU3YTZjYzY2YThlMmZhMzI1ZGY4MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUu
aCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEwIEBAIEpT
X0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlDbGFzc0lu
Zm8oKTsKIC8vICAgICBTdHJ1Y3R1cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAgICAgQnV0
dGVyZmx5KiBCICAgICAvLyBmcm9tIEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUqIFYKLS8v
ICAgICB1aW50MzJfdCBMCisvLyAgICAgVUNQVVJlZ2lzdGVyIEwKIC8vICAgICBUeXBlZEFycmF5
TW9kZSBNCiAvLwotLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3VyIHBvaW50
ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRv
dGFsIG9mIGZpdmUgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0IHRha2Ug
bGVzcyB3b3JkcyEKIC8vCiAvLyBCIGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3RvcmVkIHNv
bWUgYWRkaXRpb25hbCAib3ZlcmZsb3ciIGRhdGEgZm9yCkBAIC0xMDMsMTUgKzEwNCwxNSBAQCBj
bGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBKU0FycmF5QnVmZmVy
VmlldyB7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZh
c3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHZv
aWQqIHZlY3Rvcik7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVV
bmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5n
dGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RW
ZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2
b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBs
ZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlwZW5hbWUg
QWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8dHlwZW5h
bWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZUxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOyB9Ci0gICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1f
bGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CisgICAgVUNQVVJlZ2lz
dGVyIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKTsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsg
fQogICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVjdG9yKCkg
Y29uc3QKICAgICB7CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBjbGFzcyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyBmaW5hbCA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsKICAgICB9
CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBpbkJvdW5k
cyhVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5n
dGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2ggaW5k
ZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBoZW5j
ZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5z
aWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIg
aSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9yOjpj
YW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRleFF1
aWNrbHkoVUNQVVJlZ2lzdGVyIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2Fu
Q29udmVydFRvSlNRdWlja2x5OwogICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoVUNQVVJl
Z2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUg
Z2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1
aWNrbHkoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRv
cjo6dG9KU1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwog
ICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWdu
ZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUoVUNQVVJlZ2lzdGVyIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
dmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlw
ZWRWZWN0b3IoKVtpXSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVp
Y2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5
KFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2
YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShp
LCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICBi
b29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGksIEpT
VmFsdWUganNWYWx1ZSkKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSArMTc3LDE1IEBAIGNsYXNzIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5h
dGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFs
dWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNW
YWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpz
VmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0
b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7
IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVl
KTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRp
dmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFs
dWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsyMDUsMTgg
QEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1
ZmZlclZpZXcgewogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1
aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBjYW5BY2Nl
c3NSYW5nZVF1aWNrbHkoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYm
IG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZs
b3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAgIHJl
dHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwog
ICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0
dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRp
b24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9i
amVjdCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogCiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYgaXQg
cmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNlcHRp
b24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTT2Jq
ZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5
cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVj
dCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9iamVjdE9m
ZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZh
YmxlKTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3Np
Ymx5U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdU
eXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIGNsYXNzIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpdCB3
aWxsIHRocm93IG9uIGVycm9yLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4K
ICAgICBib29sIHNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwK
LSAgICAgICAgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBl
KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG9i
amVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUpOwogCiAgICAgLy8gVGhl
IEVDTUEgNiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5nIHBvaW50IFR5cGVkIEFycmF5cyBzaG91
bGQgaGF2ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgogICAgIC8vCkBAIC0zNDksNyArMzUzLDcg
QEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgSlNBcnJheUJ1
ZmZlclZpZXcgewogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAgICAgICAgRWxlbWVu
dFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSAwOyBp
IDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFOKGFycmF5
W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZmRmMjY5ZmMwYThkY2Y5ZDAxZTJkNDRkYTQwOTQuLmVl
ZGE1NWUzY2EyMDgyZDRhZjhmYTNiMWQxOWU3MjkzOGY3YzYxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIGlu
bGluZSBKU0FycmF5QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4K
LWlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
RW5jb2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIFVD
UFVSZWdpc3RlciBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5ndGhPcHQp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbmxpbmUgSlNPYmpl
Y3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxP
YmplY3QqIGdsbwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0g
MDsKICAgICAgICAgaWYgKGxlbmd0aE9wdCkKICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aE9w
dC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBpbmxpbmUgSlNP
YmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9i
YWxPYmplY3QqIGdsbwogICAgIC8vIC0gQSBwcmltaXRpdmUuIFRoaXMgY3JlYXRlcyBhIG5ldyB0
eXBlZCBhcnJheSBvZiB0aGF0IGxlbmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBpdC4KIAogICAg
IGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBmaXJz
dFZhbHVlKSkgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgICAgIFVDUFVSZWdpc3Rl
ciBsZW5ndGg7CiAgICAgICAgIEpTQXJyYXlCdWZmZXIqIGN1c3RvbUJ1ZmZlciA9IG51bGxwdHI7
CiAKICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlKSkgewpAQCAtMjUwLDcgKzI1MCw3IEBAIGlubGluZSBKU09iamVjdCog
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVj
dCogZ2xvCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVu
Z3RoID0gZmlyc3RWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOworICAgIFVD
UFVSZWdpc3RlciBsZW5ndGggPSBmaXJzdFZhbHVlLnRvVHlwZWRBcnJheUluZGV4KGdsb2JhbE9i
amVjdCwgImxlbmd0aCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCkpOwogfQpAQCAtMjc1LDggKzI3NSw4IEBAIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1w
bChKU0dsb2JhbE9iamVjdCoKICAgICB9CiAKICAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0g
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OworICAgIFVD
UFVSZWdpc3RlciBvZmZzZXQgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBs
ZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZl
cio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAgICAgb2Zmc2V0ID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5
dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0yODUsNyArMjg1LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1
ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAg
ICAgICAgICAgLy8gSWYgdGhlIGxlbmd0aCB2YWx1ZSBpcyBwcmVzZW50IGJ1dCB1bmRlZmluZWQs
IHRyZWF0IGl0IGFzIG1pc3NpbmcuCiAgICAgICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICAgICAgICAgIGlmICghbGVuZ3Ro
VmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZh
bHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlw
ZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CisgICAgICAgICAg
ICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0
LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0
ZUxlbmd0aCIgOiAibGVuZ3RoIik7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwM2FhMjA5Y2ZhMzgzNzA5
ZDNlMWY1NDk3MWM4MS4uMDUzY2ZiNTFlMmM4YTUzYzY2ZTM3M2IwNGJhNjE1NzZhMjdmZmMwZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2lu
Y2x1ZGUgIlR5cGVkQXJyYXlzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtNDcsNyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVX
aXRoRmFzdFZlY3RvcigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3Rl
ciBsZW5ndGgsIHZvaWQqIHZlY3RvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2
ZWN0b3IpOwpAQCAtNzgsNyArNzksNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
PiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNp
Z25lZCBsZW5ndGgpCitKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5n
dGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTk5LDExICsxMDAsMTEgQEAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpjcmVhdGVVbmluaXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVS
ZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBzaXplX3Qgc2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgc2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKICAg
ICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoLCBzaXplKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQg
b2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwpAQCAtMTQ1LDcgKzE0Niw3IEBAIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQgb3Ro
ZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBVQ1BVUmVnaXN0ZXIgb3RoZXJPZmZz
ZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTIxOCw3ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigp
ICE9IG90aGVyLT5leGlzdGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBv
dGhlckVsZW1lbnRTaXplICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAg
fHwgdHlwZSA9PSBDb3B5VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0
aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1w
bGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJ
bmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsy
MjksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKAogCiAgICAgLy8gTm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28g
Zmlyc3Qgd2UgdHJ5IHRvIGNvdmVyICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVy
RWxlbWVudFNpemUpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7
CisgICAgICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAg
ICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0
ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAg
ICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhl
ck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDog
d2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJhbnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4K
ICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxl
bmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChV
Q1BVUmVnaXN0ZXIgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICB0cmFuc2ZlckJ1ZmZlcltp
XSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAg
ICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7
CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICBmb3IgKFVD
UFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05h
dGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ldKTsKICAgICAKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCog
b2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUg
dHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BVUmVnaXN0ZXIgb2Zm
c2V0LCBKU09iamVjdCogb2JqZWN0LCBVQ1BVUmVnaXN0ZXIgb2JqZWN0T2Zmc2V0LCBVQ1BVUmVn
aXN0ZXIgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChj
aS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAg
ICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUg
dGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1
c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihv
YmplY3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgo
KSk7CiAgICAgICAgIApAQCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBldmVyIGNh
bGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZzZXQpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkp
OwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3cs
IHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1
ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAh
c3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA0
YzBlYmQxZjYxNjU3MmQwOGFmYjM4NWI2ZmU1MjllYjhjYjczZGI4Li5hOTc0NzM3M2M0ZmVhODUx
NmM3MzM4ZjQ5OTRjMjhiYjU4OTc4YjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlv
bihKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVBy
b2ZpbGU7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRl
cm5hbEZ1bmN0aW9uOwpAQCAtMjExLDEwICsyMTIsOCBAQCBjbGFzcyBKU09iamVjdCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1l
LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFt
ZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICAgICAg
cmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgs
NyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIGJvb2wg
Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgSlNW
YWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKKyAgICBK
U1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEFycmF5UHJvZmls
ZSogPSBudWxscHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1
bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1IEBAIGNsYXNzIEpTT2Jq
ZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICB9CiAgICAgfQotICAgICAgICAKLSAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1
bnNpZ25lZCBpKSBjb25zdAorCisgICAgLy8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9m
aWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAor
ICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlID0gbnVsbHB0cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgICAgICAgICBpZiAoY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVBy
b2ZpbGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9J
TkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDExLDM1ICs0MTEsNzMgQEAg
Y2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGdldChnbG9i
YWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0gICAgYm9vbCBj
YW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNl
dEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVuc2lnbmVkLCBK
U1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nlc3MKKyAgICAv
LyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSopOworICAgIGJv
b2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4
aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgotICAg
ICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdmFsdWUp
OworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwg
diwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZ
UEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFMTF9XUklUQUJM
RV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxF
X0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lO
REVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19U
WVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNJbnQz
MigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNX
aGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7
CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91
cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAgICAgICAgICBp
ZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRl
cmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhlYXAud3JpdGVC
YXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAg
ICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7CisgICAgICAg
ICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4
KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRp
Z3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAgaWYgKGkgPj0g
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNl
dFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBB
cnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNldElu
ZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAg
ICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0
aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3Zl
Y3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0NvcHlPbldyaXRl
KGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+YXJyYXlT
dG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5t
X3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5
Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXND
b3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZN
JiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNmUxYmIxYjU5ZjFlZTEwMTk5NWRiYjhl
MzBlZTkzMjFkMWViNWEyMi4uYTA3MDgyYTVjOWJmOGMxNzg5MzBmYmM3ZmMwYzZiODkwYWJhODc1
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpjYW5HZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgfQogfQogCi1pbmxp
bmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNkZWZpbmUgQ0FTRV9UWVBF
RF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDpcCi0gICAg
ICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKS0+Y2Fu
U2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlf
VFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKLSN1bmRlZiBD
QVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgaWYgKGkgPiBBcnJh
eVByb2ZpbGU6OnNtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUpCisgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7CisjZW5kaWYKIAotaW5saW5lIEpTVmFsdWUgSlNP
YmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKLXsK
ICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFt
ZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcgKzUwNiw1MiBA
QCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogfQotICAgIAor
CitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5k
ZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAgIEFycmF5U3Rv
cmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKKyAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICBKU1Zh
bHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAgIGlmICghb2xk
KSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAgICAgICAgaWYg
KGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgo
aSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFy
cmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkg
XAorICAgIGRvIHsgXAorICAgICAgICBpZiAoKGkgPiBBcnJheVByb2ZpbGU6OnNtYWxsVHlwZWRB
cnJheU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKSBcCisgICAgICAgICAgICBhcnJheVByb2Zp
bGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNl
bHNlCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgXAorICAg
IGRvIHsgXAorICAgICAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTsgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorI2VuZGlmCisjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBc
CisgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHsgXAorICAgICAgICBhdXRvKiB0eXBlZEFy
cmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyk7IFwKKyAgICAgICAgaWYg
KCF0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdikpIFwKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsgXAorICAgICAgICB0eXBlZEFycmF5LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7
IFwKKyAgICAgICAgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKTsgXAorICAg
ICAgICByZXR1cm4gdHJ1ZTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBF
X0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQorI3VuZGVmIENBU0Vf
VFlQRURfQVJSQVlfVFlQRQorI3VuZGVmIFVQREFURV9BUlJBWV9QUk9GSUxFCisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGNlNzMwZjNiZjk2NTg0N2M0
OGQ5NDFiNTZjZGJjMmU1ZmJmYmM3ZjMuLjA5MTllNzIxODZkMzlkNmQ1NmVkZDcxOGE5Y2ZiOGEz
MDRmNTkxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
QEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFs
V2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChi
YXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChi
YXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHko
aW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRl
eFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2Up
LT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFn
ZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkNDViYTM1ZDYwZTA2Yzk0YzFmMGVmNGE3ODA5Yy4u
NWViZjMxYTllMmU4NmY0YTllZTA0Mjk3OWJmNTQ0MDdiMmY3N2ZkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRl
IDxsaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5Nyw3IEBAIGNsYXNzIFBh
Z2VDb3VudCB7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQg
KiBLQjsKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291
bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSAvIHN0YXRpY19jYXN0PHVpbnQ2NF90PihwYWdl
U2l6ZSkpOwogCiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRB
cml0aG1ldGljLmgKaW5kZXggZmYxNTY1ZjExZGVkNGU5OGQ0YzM5ZjdlOTc3MmE4MGVjOGJmZWY3
YS4uZWZhYjRhZDNiYzlmNzBkNjdlYjYyM2QwNzMxNjEwOTI5OThkM2UzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXpl
b2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3Vu
ZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5l
c3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNp
c2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252
ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUg
JiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3
ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQs
IFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMo
U291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWdu
ZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdh
dGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRh
cmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVy
IHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwg
d2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6
bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBm
YWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNh
bWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBp
bkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJj
ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lv
bi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZh
bHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAv
LyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3Ry
aWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFy
Z2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0
cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAv
LyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBp
bmxpbmUgY29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0
dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGlu
ZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25z
dGV4cHIgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7
CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4u
IEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNo
ZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3Vu
ZCkKK3sKKyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSAr
PSBiOworICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBi
b3VuZDsKK30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMg
KzEwMjQsNCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6Omlz
SW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92
ZXJmbG93czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1V
c2UuaAppbmRleCBiZWNlOTU5NDU1NDJiNTNkZTU3NTRjNjNlMDM0Yjg5NmVhYTQ3OGRlLi5kNTVl
YTg5ZjY2ZmVlYTY4MzYyMDNmOWVlN2FiZTJlYzkwNDUxYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgK
QEAgLTE0Nyw2ICsxNDcsMTEgQEAKICNkZWZpbmUgVVNFX0JJR0lOVDMyIDAKICNlbmRpZgogCisj
aWYgVVNFKEpTVkFMVUU2NCkKKy8vIFdoZXRoZXIgdG8gc3VwcG9ydCB0eXBlZCBhcnJheXMgPiAy
R0IKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUyAxCisjZW5kaWYKKwogLyogRklYTUU6
IFRoaXMgbmFtZSBzaG91bGQgYmUgbW9yZSBzcGVjaWZpYyBpZiBpdCBpcyBvbmx5IGZvciB1c2Ug
d2l0aCBDYWxsRnJhbWUqICovCiAvKiBVc2UgX19idWlsdGluX2ZyYW1lX2FkZHJlc3MoMSkgdG8g
Z2V0IENhbGxGcmFtZSogKi8KICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShB
Uk02NCkgfHwgQ1BVKFg4Nl82NCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IGNiN2U4NGQ0NTM4M2U5OGY4MmU2ODI0M2Y1MmIyYTc1
NjhmYmZlODEuLjJkYjQ5Y2EyNGExZWZjZDM4NjA2MWE5OWM1YjYzZDUyZjU1ZTcxOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0x
OTMsMTIgKzE5MywxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21D
aGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgZGVzdGluYXRpb24sCiAgICAgCiAgICAgRmxvYXQz
MkFycmF5KiBjaGFubmVsRGF0YSA9IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAg
ICAgCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAg
VUNQVVJlZ2lzdGVyIGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAg
ICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9Owog
ICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAg
ICBVQ1BVUmVnaXN0ZXIgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNv
dW50ID0gc3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAK
ICAgICBjb25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyMSwxMiAr
MjIxLDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKFJl
ZjxGbG9hdDMyQXJyYXk+JiYgc291cmNlLCB1bnNpZ25lCiAgICAgCiAgICAgRmxvYXQzMkFycmF5
KiBjaGFubmVsRGF0YSA9IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0g
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJl
Z2lzdGVyIGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYg
KGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAot
ICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BV
UmVnaXN0ZXIgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0g
c3RkOjptaW4oc291cmNlLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3Qg
ZmxvYXQqIHNyYyA9IHNvdXJjZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkNTNm
MDliNzkzODFkYjljMWI4ZTVkMzY2MjMwOC4uYWM4OWNhZWJlY2Y5NmRmNjhhMjAzNjE1NDdjMTU3
NTBmMzAyMjM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0xOTYsOCArMTk2LDggQEAgdm9pZCBSZWFsdGltZUFu
YWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5
KQogICAgIGRvRkZUQW5hbHlzaXNJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIC8vIENvbnZlcnQg
ZnJvbSBsaW5lYXIgbWFnbml0dWRlIHRvIHVuc2lnbmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5z
aWduZWQgc291cmNlTGVuZ3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVf
dCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3Ro
KCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVu
Z3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKG1hZ25pdHVkZUJ1ZmZlcigpLnNp
emUoKSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAg
IGNvbnN0IGRvdWJsZSByYW5nZVNjYWxlRmFjdG9yID0gbV9tYXhEZWNpYmVscyA9PSBtX21pbkRl
Y2liZWxzID8gMSA6IDEgLyAobV9tYXhEZWNpYmVscyAtIG1fbWluRGVjaWJlbHMpOwogICAgICAg
ICBjb25zdCBkb3VibGUgbWluRGVjaWJlbHMgPSBtX21pbkRlY2liZWxzOwpAQCAtMjI3LDggKzIy
Nyw5IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YShGbG9h
dDMyQXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwotICAgIHNp
emVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgp
KTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0
aCgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBs
ZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYgKGxl
bmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZm
ZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZm
dFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lucHV0QnVmZmVyR29vZCk7CkBAIC0yNTEsOCArMjUy
LDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhB
cnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVu
Z3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAg
c2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAg
ICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0g
c3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAw
KSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUo
KSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwog
ICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYTFhOGZhMjky
OWNhYzFmZDNiMjQ0MDZmZDhhZjc0ZGZjMWNjMmE4NC4uOWU4NDY3YWQ2MmE4Zjc0NWY1MzVjNTU1
ZjgxOTZjZDZhZDlmZmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjYzLDggKzEyNjMsMTMgQEAgY2xhc3Mg
Q2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgICAgICB3cml0ZShJbWFn
ZURhdGFUYWcpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPndpZHRoKCkpOwogICAgICAg
ICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShk
YXRhLT5kYXRhKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEo
KS5kYXRhKCksIGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQ2hlY2tl
ZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFMZW5ndGggPSBkYXRhLT5kYXRhKCkubGVu
Z3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0
YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAg
ICAgICB3cml0ZShkYXRhLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQpAQCAtMTMxMSw4ICsxMzE2LDEzIEBAIGNsYXNzIENsb25lU2Vy
aWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIHdyaXRlKEFycmF5QnVmZmVyVGFnKTsKLSAgICAgICAgICAgICAg
ICB3cml0ZShhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNrZWQ8dWludDMyX3Qs
IFJlY29yZE92ZXJmbG93PiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVF
cnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdy
aXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0
ZUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCBhNjZiMTkx
ZDY4NmQzZGQ0OGRlYjBkN2Q3YWMwYmIyY2EwN2I5Mzc3Li5iYWYxYWJhZDY3YmQ1MTc1NGNlZWFh
MTU2OTRlZDg4ZmJjMDU0OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05l
dHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1Nl
bmRRdWV1ZS5jcHAKQEAgLTY4LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1
ZXVlKFdlYkNvcmU6OkJsb2ImIGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNp
emUoKTsKICAgICBpZiAoIWJ5dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5
QnVmZmVyOjpjcmVhdGUoMFUsIDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mg
d2VpcmQsIGJ1dCBpcyByZXF1aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8g
c3VjY2VlZC4KKyAgICAgICAgLy8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdo
ZXJlIEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCkgY291bGQgYmUgY2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlND
OjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oMFUpLCAxKSwg
MCwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFr
ZVVuaXF1ZVJlZjxCbG9iTG9hZGVyPihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUx
MGQzNjJlNTM0MzM5ZGE5NjBhNzBmYmJiNDkxLi4xYmEzMjJjMTBiYWViZWM3YzhiY2VjYjQ2NTRi
Y2VlMmFiZDJlZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT0JveC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjMsNyArNjQsMTAg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPQm94IHsKICAgICBzdGF0aWMgYm9vbCBjaGVja2Vk
UmVhZChSJiByZXR1cm5WYWx1ZSwgViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVz
cyBlbmRpYW5uZXNzKQogICAgIHsKICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0g
ICAgICAgIFQgdmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNz
ID09IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgYWN0
dWFsT2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFk
PFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVz
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zm
c2V0KSk7CisgICAgICAgIG9mZnNldCA9IGFjdHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFk
U3RhdHVzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2ZjNjMzE1NGY3OTEyMDI2MjAx
OWUzYmM0NTM2Zjc1YWIxMTdhOTIuLmIzYmM2N2YzZGNkZmEwMTg0YWUyYWJlYzdmNWQ5OWQ2YmM4
NGQxNmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMTAtMTEgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlz
c2V0QGFwcGxlLmNvbT4gYW5kIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
YmlnLXdhc20tbWVtb3J5IHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00gYXQgMkdC
LgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWlsdXJlIGF0
IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93IG1vcmUg
c3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUgdGhhdCB3
YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3duIChyZXN1
bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29kZSkuCisg
ICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRmb3JtcyBz
aW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRzLCBhbmQg
SSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBjYW4g
dGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBmZXcg
bmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxhcmdlIHR5
cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9NQVguCisK
KyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanM6
IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgor
ICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5
cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlM
ZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAg
ICAodGVzdCk6CisKIDIwMjEtMTAtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBSZWZpbmUgUmVnRXhwI2NvbXBpbGUgYmFzZWQgb24gcmVnZXhw
LWxlZ2FjeS1mZWF0dXJlcyBwcm9wb3NhbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVt
b3J5LWdyb3ctbm8tbWF4LmpzCmluZGV4IGViNDgwMjcxYWEyZWY2MjUyNDZhYWQxZGI3N2NhOGFm
OTE1ZDVjZjQuLmY4NjU4OTMzNmRjYTg3NDc1MDZiZjZmNjFkNDc1MjkxMTk1MzUzNjAgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCAr
MSw1IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4
ODYtNjQiKQorLy9AIHJ1bkRlZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwx
OSArMjUsMjUgQEAgZnVuY3Rpb24gZm9vKGFycmF5KSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxz
ZTsKLSAgICB0cnkgeworICAgIGxldCBtYXhTaXplID0gMHgxMDAwMDsKKyAgICB7CiAgICAgICAg
IHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwIH0p
OwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhT
aXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheSht
ZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKICAgICAgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisgICAgfQor
CisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5l
dyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7CisgICAgICAgIG1lbW9y
eS5ncm93KG1heFNpemUgLSAweDEwMDAgKyAxKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhu
ZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsKICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91
dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBX
ZWJBc3NlbWJseS5NZW1vcnkuZ3JvdyBleHBlY3RzIHRoZSBncm93biBzaXplIHRvIGJlIGEgdmFs
aWQgcGFnZSBjb3VudCIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAgIGlmIChv
aykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcwppbmRleCAxMWFhNWU1ZDI1NzE1Y2RjNTMzMzY0
MGNjYTg3N2I5ZWFhNmMzYzQ2Li5kYmVmMDRkOTY1ZjUzNDE4N2I4MzhlODZkNmU0OTQ4NmMxZTAz
OWExIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcwor
KysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsy
NSwyNiBAQCBmdW5jdGlvbiBmb28oYXJyYXkpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwot
ICAgIHRyeSB7Ci0gICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsg
aW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiAweDgwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisKKyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7
CiAgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikp
OwogICAgICAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9
IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplKzEgfSk7CisgICAgICAg
IG1lbW9yeS5ncm93KG1heFNpemUgKyAxIC0gMHgxMDAwKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGZvbyhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsK
ICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJy
b3I6IE91dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVy
cm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ21heGltdW0nIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdl
IikKICAgICAgICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0
aHJvdyAiRXJyb3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1v
cnkuanMKaW5kZXggZDhlN2ZiNjliNGJhMzExZGEyZmZiMWNlMDY4YWYwNGZlYWQ4YjU1OC4uODBm
ZjA2YjI2N2FkNmQ5NTc2ZTEyMThiYmVhYzI4YWJkNDA4MTczOCAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNt
LW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisv
L0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYm
ICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9u
IHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsyNSwyMSBAQCBmdW5jdGlvbiBmb28oYXJyYXkpIHsKICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsK
IAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBm
b28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4ODAw
MCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcikpOworICAgIGxldCBtYXhTaXplID0gMHgxMDAw
MDsKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdl
YkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IG1heFNpemUsIG1heGltdW06IG1heFNpemUgfSku
YnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKICAgICAgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisgICAgfQorCisgICAg
dmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcg
VWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogbWF4U2l6ZSsxLCBt
YXhpbXVtOiBtYXhTaXplKzEgfSkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsKICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91
dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBX
ZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIikKICAg
ICAgICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAi
RXJyb3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJh
eS1hbHdheXMtbGFyZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjNjAzYmEyMGE5YmRjZTY2
ZWUzMTc2ODAyZDlkZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFy
cmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCwwICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5
TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0g
Ing4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgpCisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFy
cmF5KQoreworICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxl
bmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFy
cmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFy
cmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lu
bGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitm
dW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5n
dGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0
aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVj
dGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZh
ciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAw
OworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJl
c3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFs
dWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAi
ICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVl
R2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZvdXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3Qo
bmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0
ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdzKSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIp
OwordGVzdChuZXcgVWludDhDbGFtcGVkQXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWlu
dDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1h
cnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZl
bnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWVlZGQwMTRkMDQzYzc4N2RmMWFjYjc3MGY0
OTM2ZDVmOTVlOGNkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJy
YXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCwwICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVt
b3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUg
IT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgpCisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3Ro
KGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJh
eUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJu
IGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFs
KGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citu
b0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0Owor
CitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlM
ZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAg
ICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4
cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgICAg
IHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1
dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAg
ICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAi
IGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZh
ciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7CisgICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhyb3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAi
IGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2FzZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRo
cmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZvdXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rl
c3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7
Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdzKSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRH
QiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAi
VWludDhDbGFtcGVkQXJyYXkvM0dCIik7Cg==
</data>
<flag name="commit-queue"
          id="464891"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440828</attachid>
            <date>2021-10-11 13:19:42 -0700</date>
            <delta_ts>2021-10-11 14:19:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>242651</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
Y2UwMDcxMzQ2YjE4Li5hMzI2YjVhNGM4OTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMDUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmlnLXdhc20tbWVtb3J5IHRl
c3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00gYXQgMkdCLgorICAgICAgICBUaGV5IG5v
dyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWlsdXJlIGF0IDRHQisxLgorICAgICAgICBU
aGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZp
b3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUgdGhhdCB3YXMgY2F1c2luZyB0aGUgc3Bl
Y2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3duIChyZXN1bHRpbmcgaW4gdGhlIGdlbmVy
aWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29kZSkuCisgICAgICAgIEZpbmFsbHkgSSBt
YWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRmb3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBw
b3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRzLCBhbmQgSSBtYWRlIHRoZW0gb25seSBy
dW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQg
b2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZp
Y2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxhcmdlIHR5cGVkIGFycmF5cywgYW5kIGVz
cGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9NQVguCisKKyAgICAgICAgKiBzdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzOiBBZGRlZC4KKwogMjAyMS0x
MC0wNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlIGltcGxlbWVudGF0aW9uIG9mIF9fcHJvdG9fXyBuZWVkcyB0byBo
YW5kbGUgZ2V0X2J5X2lkX3dpdGhfdGhpcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVt
b3J5LWdyb3ctbm8tbWF4LmpzCmluZGV4IGViNDgwMjcxYWEyZS4uZjg2NTg5MzM2ZGNhIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCkBAIC0xLDQg
KzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlM
aW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAi
eDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQs
MTkgKzI1LDI1IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsK
LSAgICB0cnkgeworICAgIGxldCBtYXhTaXplID0gMHgxMDAwMDsKKyAgICB7CiAgICAgICAgIHZh
ciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwIH0pOwot
ICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXpl
IC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShtZW1v
cnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKICAgICAgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisgICAgfQorCisg
ICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBX
ZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7CisgICAgICAgIG1lbW9yeS5n
cm93KG1heFNpemUgLSAweDEwMDAgKyAxKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcg
VWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsKICAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91dCBv
ZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBXZWJB
c3NlbWJseS5NZW1vcnkuZ3JvdyBleHBlY3RzIHRoZSBncm93biBzaXplIHRvIGJlIGEgdmFsaWQg
cGFnZSBjb3VudCIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAgIGlmIChvaykK
ICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcwppbmRleCAxMWFhNWU1ZDI1NzEuLmRiZWYwNGQ5NjVm
NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cuanMKQEAgLTEsNCArMSw1IEBA
Ci0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQg
b3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQi
KQorLy9AIHJ1bkRlZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUs
MjYgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRy
eSB7Ci0gICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlh
bDogMHgxMDAwLCBtYXhpbXVtOiAweDgwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93KDB4NzAw
MCk7CisKKyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgbWVt
b3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTog
bWF4U2l6ZSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAg
ICAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNl
OworICAgIHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5
KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplKzEgfSk7CisgICAgICAgIG1lbW9y
eS5ncm93KG1heFNpemUgKyAxIC0gMHgxMDAwKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhu
ZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsKICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91
dCBvZiBtZW1vcnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBX
ZWJBc3NlbWJseS5NZW1vcnkgJ21heGltdW0nIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIikKICAg
ICAgICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAi
RXJyb3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9iaWctd2FzbS1tZW1vcnkuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
aW5kZXggZDhlN2ZiNjliNGJhLi44MGZmMDZiMjY3YWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1v
cnkuanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AIHNr
aXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJj
aGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0
KCkgewogCkBAIC0yNCwxNyArMjUsMjEgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAgIGZvbyhva0FycmF5KTsKIAotICAgIHZh
ciBvayA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVp
bnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4ODAwMCwgbWF4aW11
bTogMHg4MDAwIH0pLmJ1ZmZlcikpOworICAgIGxldCBtYXhTaXplID0gMHgxMDAwMDsKKyAgICB7
CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeSh7IGluaXRpYWw6IG1heFNpemUsIG1heGltdW06IG1heFNpemUgfSkuYnVmZmVyKSk7
CiAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0g
ZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJh
eShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogbWF4U2l6ZSsxLCBtYXhpbXVtOiBt
YXhTaXplKzEgfSkuYnVmZmVyKSk7CiAgICAgICAgIG9rID0gdHJ1ZTsKICAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1v
cnkiKQorICAgICAgICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJs
eS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2UgY291bnQgaXMgdG9vIGxhcmdlIikKICAgICAgICAgICAg
IHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJyb3I6IGRp
ZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1h
cnJheS1hbHdheXMtbGFyZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1hbHdheXMt
bGFyZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZjVlYTE2
ZDg1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1hbHdh
eXMtbGFyZ2UuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQg
b3IgKCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQi
KQorLy9AIHJ1bkRlZmF1bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sK
KyAgICByZXR1cm4gYXJyYXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOwor
ZnVuY3Rpb24gZ2V0QnlWYWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRl
eF07Cit9Citub0lubGluZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5k
ZXgsIHZhbHVlKQoreworICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0
QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24g
dGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5
KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJX
cm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsg
YWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXgg
PSAoMiAqIG9uZUdpZ2EpICsgaTsKKyAgICAgICAgdmFyIHZhbHVlID0gaSAlIDEwMDsKKyAgICAg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0ICE9IHZhbHVlKQorICAg
ICAgICAgICAgdGhyb3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3Vs
dCArICIgaW4gY2FzZSAiICsgc3RyaW5nKTsKKyAgICB9Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAz
ICogb25lR2lnYTsKK2xldCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4
QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcg
VWludDhBcnJheShmb3VyR2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3Qo
bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBl
ZEFycmF5LzNHQiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZl
bnR1YWxseS1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHkt
bGFyZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZWVlZGQw
MTRkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVu
dHVhbGx5LWxhcmdlLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1p
dGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2
LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKworZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkp
Cit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3Ro
KTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlb
aW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXks
IGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5l
KHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0
aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChh
cnJheSk7CisgICAgICAgIGlmIChsICE9IGFjdHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93
ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsgbCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQg
IiArIGFjdHVhbExlbmd0aCArICIgaW4gY2FzZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGlu
ZGV4ID0gaTsKKyAgICAgICAgdmFyIHZhbHVlID0gaSAlIDEwMDsKKyAgICAgICAgcHV0QnlWYWwo
YXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJh
eSwgaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0ICE9IHZhbHVlKQorICAgICAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICB9CisgICAgdmFyIHZhbHVlID0gNDI7CisgICAgdmFyIGluZGV4
ID0gMiAqIG9uZUdpZ2EgKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsK
KyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICBpZiAocmVzdWx0
ICE9IHZhbHVlKQorICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdv
dCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworfQorCitsZXQgdGhyZWVHaWdz
ID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdpZ3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcg
SW50OEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3Qo
bmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBmb3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0
ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENs
YW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRmNTIyYmIzMGFh
ZS4uMjhmN2UxMzExNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNDYg
QEAKKzIwMjEtMTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGls
ZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdh
cyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29y
azoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28g
SSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBi
ZWluZyBVQ1BVUmVnaXN0ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5n
IE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0
IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3Jt
YW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRM
LCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQg
dGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisgICAgICAg
IC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQg
bm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KKyAgICAg
ICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2VlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIg
Zm9yIGV4YW1wbGVzCisgICAgICAgIC0gSSBtb2RpZmllZCB0aGUgcnVudGltZSBmdW5jdGlvbnMg
Zm9yIEdldEJ5VmFsL1B1dEJ5VmFsL0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21pY3NYWFgg
dG8gYWNjZXB0IG5vbi1JbnQzMiBpbmRpY2VzLCBzaW5jZSBmb3Ige0ludDgvVUludDgvVUludDhD
bGFtcGVkfUFycmF5LCBhIG1heGltdW0gc2l6ZSBvZiA0R0IgaW1wbGllcyBpbmRpY2VzID4gMkIu
CisgICAgICAgIC0gSSBhZGRlZCBhICJtYXlCZUxhcmdlVHlwZWRBcnJheSIgYml0IHRvIEFycmF5
UHJvZmlsZS9VbmxpbmtlZEFycmF5UHJvZmlsZS9ERkc6OkFycmF5TW9kZSB0byB0cmFjayB3aGV0
aGVyIHN1Y2ggYSBub24tSW50MzIgaW5kZXggd2FzIHNlZW4gdG8gYWxsb3cgcHJvcGVyIHNwZWN1
bGF0aW9uIGFuZCBzcGVjaWFsaXphdGlvbiBvZiBmYXN0IHBhdGhzIGluIHRoZSBERkcvRlRMLgor
ICAgICAgICAgICAgSSB0aGVuIHVwZGF0ZWQgdGhlIHJ1bnRpbWUgZnVuY3Rpb25zIHVzZWQgYnkg
dGhlIHNsb3cgcGF0aHMgdG8gY29ycmVjdGx5IHVwZGF0ZSBpdC4KKworICAgICAgICBVbmZvcnR1
bmF0ZWx5IEkgcmFuIG91dCBvZiB0aW1lIHRvIGFkZCB0aGVzZSBzcGVjdWxhdGlvbnMvdXBkYXRl
IHRoZSBmYXN0IHBhdGhzLgorICAgICAgICBTbyB0aGUgZm9sbG93aW5nIHdpbGwgaGF2ZSB0byB3
YWl0IGZvciBhIGZvbGxvdy11cCBwYXRjaDoKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5k
aWNlcyBpbiB0aGUgZmFzdCBwYXRoIG9mIEdldEJ5VmFsIGluIHRoZSBMTEludAorICAgICAgICAt
IEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGhzIGdlbmVyYXRlZCBieSBB
Y2Nlc3NDYXNlL1BvbHltb3JwaGljQWNjZXNzCisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGlu
ZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IHRoZSBERkcvRlRMIGZvciBlYWNo
IG9mIEdldEJ5VmFsL1B1dEJ5VmFsL0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21pY3NYWFgK
KworICAgICAgICBUaGUgY3VycmVudCBwYXRjaCBpcyBmdW5jdGlvbmFsLCBpdCB3aWxsIGp1c3Qg
aGF2ZSBkcmVhZGZ1bCBwZXJmb3JtYW5jZSBpZiB0cnlpbmcgdG8gdXNlIGluZGljZXMgPjJCIGlu
IGEge0ludDgvVUludDgvVUludDhDbGFtcGVkfUFycmF5LgorCisgICAgICAgIE90aGVyIG1pbm9y
IGNoYW5nZXMgaW4gdGhpcyBwYXRjaDoKKyAgICAgICAgLSBGaXhlZCBhbiB1bmRlZmluZWQgYmVo
YXZpb3IgaW4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsIHdoZXJlIG1lbWNweSBjb3VsZCBi
ZSBjYWxsZWQgb24gbnVsbHB0ciAodGhlIHNwZWMgZXhwbGljaXRseSBiYW5zIHRoaXMgZXZlbiB3
aGVuIGxlbmd0aCBpcyAwKQorICAgICAgICAtIFJlcGxhY2VkIHNvbWUgcmVwZXRpdGl2ZSBhbmQg
ZXJyb3ItcHJvbmUgYm91bmRzIGNoZWNraW5nIGJ5IGNhbGxzIHRvIFdURjo6aXNTdW1TbWFsbGVy
VGhhbk9yRXF1YWwsIHdoaWNoIGlzIGNsZWFyZXIsIHNob3J0ZXIsIGFuZCByZXVzZSBDaGVja2Vk
QXJpdGhtZXRpYyBmYWNpbGl0aWVzIHRvIGF2b2lkIG92ZXJmbG93IGlzc3Vlcy4KKyAgICAgICAg
LSBGaXhlZCBhIHZhcmlldHkgb2Ygb2Jzb2xldGUgY29tbWVudHMKKyAgICAgICAgLSBBZGRlZCBz
dXBwb3J0IGZvciBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgSW1tNjQgcmlnaHQpCisgICAgICAgICAgICAodGhlcmUgd2FzIGFscmVhZHkgc3VwcG9y
dCBmb3IgdGhlIHNhbWUgYnV0IHdpdGggVHJ1c3RlZEltbTY0KQorICAgICAgICAtIE1hZGUgdmFy
aW91cyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIGZ1bmN0aW9uIGNvbnN0ZXhwciBhcyBwYXJ0IG9m
IHRoZSBwcmV2aW91cyBwb2ludAorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
Lmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6
OlRydXN0ZWRJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyOjphc0ludHB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjo6SW1tUHRyOjpJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW1QdHI6OmFzVHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMjo6VHJ1c3RlZEltbTMyKToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tMzI6OkltbTMyKToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tMzI6OmFzVHJ1c3RlZEltbTMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0OjpUcnVz
dGVkSW1tNjQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6
SW1tNjQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02NDo6YXNU
cnVzdGVkSW1tNjQgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaDY0KToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NEUuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6
OnVudGFnQXJyYXlQdHJMZW5ndGg2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjRFOjp1bnRhZ0FycmF5UHRyTGVuZ3RoMzIpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6Y2FuQmxpbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpBcnJh
eVByb2ZpbGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRBcnJheVByb2ZpbGU6OlVubGlua2VkQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRBcnJheVByb2ZpbGU6OnVwZGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpyZWZpbmUgY29uc3QpOgor
ICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1v
ZGU6OkFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjptYXlCZUxhcmdl
VHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlw
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb24g
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aENvbnZlcnNpb24gY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFR5cGVBbmRDb252ZXJzaW9u
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjpzcGVjdWxhdGlvbkZyb21Qcm9maWxlKToKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhQcm9maWxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6
OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29t
bW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZW5hYmxlSW50NTIpOgorICAgICAgICAqIGRmZy9E
RkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvR2V0QXJyYXlM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnByZXBlbmRHZXRBcnJheUxl
bmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAg
ICAgICogZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1N0b3JhZ2VDaGls
ZCBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3RvcmFnZUNoaWxkSW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5V2l0
aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6anVt
cEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lz
dGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChK
U0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNo
ZWNrcyk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50
NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QXJy
YXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAg
ICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjRO
b25OZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRl
bnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250
ZW50czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRp
YWxpemVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVm
ZmVyOjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNl
V2l0aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5o
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6Cisg
ICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9S
YW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNl
dEFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZp
ZXc6OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChK
U0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAo
SlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVN
ZW1vcnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJ
bXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChK
U0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0Rh
dGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRp
YWxpemVkKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6c2V0KToKKyAgICAgICAgKEpTQzo6
SlNEYXRhVmlldzo6c2V0SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmdldERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2Up
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0
aFNwZWNpZmljVHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
dHJ5R2V0SW5kZXhRdWlja2x5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNl
dEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNr
bHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0
aW9ucy5oOgorICAgICAgICAoSlNDOjpnZXRCeVZhbFdpdGhJbmRleCk6CisgICAgICAgICogd2Fz
bS9XYXNtUGFnZUNvdW50Lmg6CisKIDIwMjEtMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSByZXR1cm4gdmFsdWVzIGluIG5pY2VyIHdheSBp
biB0aGUganNjIFJFUEwgYW5kIGFkZCBhIHByZXR0eVByaW50IGZ1bmN0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggNDNmNzg0YTRhYjkzLi5lYzMyYjcyMjFjODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCkBAIC0yOTgsOSArMjk4LDkgQEAgcHVibGljOgogICAgIC8vIGluIGEgY2xh
c3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZmZXJlbnRp
YXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3NlcyB0byBt
ZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGljIFRydXN0
ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0ZXhwciBU
cnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1t
UHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkK
ICAgICAgICAgewogICAgICAgICB9CkBAIC0zMTEsMjEgKzMxMSwyMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpu
dWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHN0ZDo6
bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0
ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgaW50
cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRwdHIoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
bV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAgICAgIGNv
bnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBjb25z
dF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzM1LDEyICszMzUsMTIgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0cgogICAg
IHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAg
OiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBU
cnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAg
IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlz
OyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTM1OCw3ICszNTgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBU
cnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUo
cHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzY5LDE3ICszNjksMTcg
QEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7
Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
MzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQotICAgICAg
ICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29u
c3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
MzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdCBUcnVz
dGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAg
ICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7
IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIHB1
YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZyb20gYWNj
aWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMuCiAgICAg
c3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tNjQo
KSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAgICAKLSAg
ICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxp
Y2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDog
bV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1t
NjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVk
SW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50
cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDA5LDE3ICs0MDksMTcgQEAgcHVibGlj
OgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7Ci0gICAg
ICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQodmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkg
fHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1QdHIgcHRy
KQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2Vu
ZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBjb25zdCB7
IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTY0JiBh
c1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAgICAKICAg
ICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMKQEAgLTEw
ODYsOSArMTA4Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAgIHN0YXRp
YyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBz
dGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQgY2xhc3Mg
RGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCmluZGV4IGQ3ZmUzYTgxZTM0MS4uZTY3NjdjNmE5YTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMzks
NiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNo
TXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4Nl82NCkg
fHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmxzaGlmdDMy
OwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNlbmRpZiAv
LyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAmJiAhQ1BV
KEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3RvcmU2
NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8gQ1BVKFg4
Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShBUk02NCkg
fHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwgQWRkcmVz
cyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsKICAgICB9
CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMgZG9uJ3Qg
bmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiwgUmVn
aXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUuCisgICAg
Ly8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJlY2F1c2Ug
aXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwgZXRjLi4g
d2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVtcCBicmFu
Y2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tNjQgcmln
aHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAgICAgICAg
ICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAg
ICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50KHJpZ2h0
KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCBy
ZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAgLy8gcGxh
Y2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBub3BDb3Vu
dCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQorICAgICAg
ICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQs
IHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisjZW5kaWYg
Ly8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA0MjUw
OTAzYmMzMjIuLjE3OTZiNjUxYmM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3RlciA9IEFS
TTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBpbXBsZW1l
bnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAg
ICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYgKzMzMDUs
MTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAg
ICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChj
b25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJy
YW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNz
IHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNGNmMjI0MGQ2YzNm
Li4wNzY2Mjk4MmQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5
UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlk
YXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFk
ZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAg
ewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAg
ICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFs
aWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkg
OiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdl
dCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXgg
Y2NlMGQwMWY0MDE3Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5
ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNr
UG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAg
ICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3Rh
dGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZm
ZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2go
dWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJp
dGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li42MmQ1NGE2M2RmNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTQ4
Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAg
ICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVy
OgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5zaWNHZXR0
ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENoZWNrUHJp
dmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3Jh
dGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3RvcmU6CiAg
ICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIEluZGV4ZWRU
eXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxlbmd0aC9U
eXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIgcmVzdWx0
IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTE5MSwx
MiArMTE5MiwxOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogCiAgICAg
ICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKLSAgICAgICAg
CiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxsVGhyb3Vn
aC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkp
KTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAg
ICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICAvLyBBbGwg
b2YgdGhpcyBjb2RlIGlzIGEgYml0IG1lc3N5IHdpdGggbGVuZ3RoIGFuZCBwcm9wZXJ0eSB0YWtp
bmcgdHVybnMgYmVpbmcgaW4gc2NyYXRjaEdQUiwgYnV0IEkgZG9uJ3Qgc2VlIGFueSBzaW1wbGVy
IHNvbHV0aW9uIHdpdGhvdXQgcmVxdWlyaW5nIHNvbWUgZXh0cmEgc2NyYXRjaCByZWdpc3RlcnMu
CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hH
UFIpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgVUNQ
VVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRm
b3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KEND
YWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsK
KyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgp
KTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Io
c3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LmJhc2VSZWdzKCkpOwpAQCAtMTIxMSw5ICsxMjE4LDEzIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2Vy
dmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPSBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3Rl
cnNCeVB1c2hpbmcoCiAgICAgICAgICAgICBqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6
RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisg
ICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgog
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGpp
dC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gy
R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25F
eHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50
KHR5cGUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CkBAIC0x
NjMwLDkgKzE2NDEsMTUgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAg
ICAgICAgICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAotICAgICAgICBqaXQubG9h
ZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQg
b2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCi0g
ICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIC8v
IEFsbCBvZiB0aGlzIGNvZGUgaXMgYSBiaXQgbWVzc3kgd2l0aCBsZW5ndGggYW5kIHByb3BlcnR5
IHRha2luZyB0dXJucyBiZWluZyBpbiBzY3JhdGNoR1BSLCBidXQgSSBkb24ndCBzZWUgYW55IHNp
bXBsZXIgc29sdXRpb24gd2l0aG91dCByZXF1aXJpbmcgc29tZSBleHRyYSBzY3JhdGNoIHJlZ2lz
dGVycy4KKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3NPZkxlbmd0aCA9IEND
YWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSk7CisgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2Ny
YXRjaEdQUik7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMg
YSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUg
cGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNo
NjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0
aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFu
Y2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxl
bmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9j
YXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVJlZ3MoKSk7CkBAIC0xNjQ4LDkgKzE2NjUsMTMgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQ
cmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJl
Z2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBDUFUoUkVHSVNURVI2
NCkKKyAgICAgICAgaml0LmxvYWQ2NChhZGRyZXNzT2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2Vs
c2UKKyAgICAgICAgaml0LmxvYWQzMihhZGRyZXNzT2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2Vu
ZGlmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHNjcmF0Y2gyR1BSKTsKICAgICAg
ICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2Ny
YXRjaDJHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsIGZhbHNlKTsKLQogICAgICAgICBqaXQu
c2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBpZiAo
aXNJbnQodHlwZSkpIHsKICAgICAgICAgICAgIGlmIChpc0NsYW1wZWQodHlwZSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCA2OTE2Nzk0
ODQzYjAuLmJlZTdhOWZjZGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJv
ZmlsZTsKIAogLy8gVGhpcyBpcyBhIGJpdGZpZWxkIHdoZXJlIGVhY2ggYml0IHJlcHJlc2VudHMg
YW4gdHlwZSBvZiBhcnJheSBhY2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4uCiAvLyBUaGVyZSBhcmUg
MTkgaW5kZXhpbmcgdHlwZXMgdGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMuCi0vLyBUaGVyZSBhcmUg
OSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYgdG8gMjUuCisvLyBUaGVyZSBh
cmUgMTEgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2LTIwIGFuZCAyNi0zMS4K
IHR5cGVkZWYgdW5zaWduZWQgQXJyYXlNb2RlczsKIAogLy8gVGhlIHBvc3NpYmxlIEluZGV4aW5n
VHlwZXMgYXJlIGxpbWl0ZWQgd2l0aGluICgwIC0gMTYsIDIxLCAyMywgMjUpLgpAQCAtMjA1LDcg
KzIwNSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5n
KGZhbHNlKQogICAgIHsKICAgICB9Ci0gICAgCisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAv
LyBBY2Nlc3NpbmcgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9y
ZSBjb21wbGljYXRlZCBhcyB3ZSBjYW4ndCBmb3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50
MzJfdC4KKyAgICAvLyBXZSBvbmx5IHN1cHBvcnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24g
NjQtYml0IHBsYXRmb3Jtcy4KKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxU
eXBlZEFycmF5TWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7
CisgICAgdm9pZCBzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9tYXlCZUxhcmdlVHlwZWRB
cnJheSA9IHRydWU7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0K
KyNlbHNlCisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBTdHJ1Y3R1cmVJ
RCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3Ry
dWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyByZXR1
cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5U3RvcmVU
b0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjQ0LDYgKzI1NCw5IEBA
IHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEIHsgMCB9Owog
ICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRoaXMgZmxhZyBtYXkgYmVj
b21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUg
ZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGlu
ZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhp
bmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93
IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291
dE9mQm91bmRzIHsgZmFsc2UgfTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBib29sIG1fbWF5
QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpA
QCAtMjUzLDcgKzI2NiwxMyBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09
IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlu
a2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQ
cm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICAsIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkoZmFs
c2UpCisjZW5kaWYKKyAgICB7CisgICAgfQogCiAgICAgdm9pZCB1cGRhdGUoQXJyYXlQcm9maWxl
JiBhcnJheVByb2ZpbGUpCiAgICAgewpAQCAtMjgwLDYgKzI5OSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxz
ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVy
ZXMgPSBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7CisKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAg
ICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2Zp
bGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTI5MCw3ICszMTYsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21h
eUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmln
aW5hbEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzIDogMTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBib29sIG1fbWF5QmVM
YXJnZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5s
aW5rZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCBiMWRmY2EyNzQ5YzEuLjgyOGY1ZTU0YmI2YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMzQ3OCw3ICszNDc4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0g
bV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7
CisgICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkp
KSB7CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0ODYsNiArMzQ4NiwxNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJW
aWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAg
IGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3
LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0
Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zODEx
LDggKzM4MjIsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dy
YXBoLnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsK
ICAgICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAg
ICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0
ZXI+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAg
ICAgICBpZiAoYnl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7
CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MjEsNiArMzgz
MiwxOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0Fy
cmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zm
c2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0
Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5t
X3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0
dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1MzEwNGJkMy4u
YTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICszMjUsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwg
bm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBub3QgYmUgcmVs
ZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAgICAgICBlc2Nh
cGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKwog
ICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAgICAgICAgICAg
ICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCA9IG1f
Z3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5YWZhM2ViLi43
MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZpbmUoCiAgICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkpOwogICAgIH0K
ICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAgaWYgKCFpc0lu
dDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgpKQogICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAgICAgCiAgICAg
Ly8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3QgYmVoYXZpb3Is
IHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDggQEAgQXJyYXlN
b2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAg
ICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJpZ1VpbnQ2NEFy
cmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVzZXJ2ZSB0aGlz
IG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3QgR2V0QnlWYWwg
YXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkgewogICAgICAg
ICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3V0T2ZC
b3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJy
YXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNiLi5kZjc1Yzc4
OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtMTI3
LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJy
YXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lz
OwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAgICAgICB1LmFz
Qnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgZXhw
bGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpA
QCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9u
ID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5
OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFz
Qnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJy
YXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6
QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgdS5h
c0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMu
Y29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0
aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAg
ICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBh
cnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5TW9kZShBcnJh
eTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9u
IHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9u
IGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAgICAg
ICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFzcyA9
IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9u
OwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUu
YXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlw
ZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAgICBBcnJheU1v
ZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpDb252
ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91
bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAg
IHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdl
VHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRlcy50eXBlKTsg
fQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3Bl
Y3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3BlY3VsYXRpb24+
KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNpb24+KHUuYXNC
eXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlvbik7IH0KKyAg
ICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5hc0J5dGVzLm1h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3JkKCkgY29uc3Qg
eyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtl
U2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygp
LCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRB
cnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpT
cGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFj
dGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwg
c3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5
KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJy
YXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBB
cnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCks
IGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3Mo
KSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVBy
b2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENv
bnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygp
LCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRp
b25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6
OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBjb25z
dAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CisgICAg
ICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgY29u
dmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAorICAg
IHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1h
a2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlTcGVj
dWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6
T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxv
Y2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAgICAg
ICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0dXJu
IHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJh
eTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlv
bkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2Zp
bGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
d2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VT
YWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKLQog
ICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2Vz
T3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFy
cmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxl
LT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwotICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAg
IAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9u
KCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUg
d2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0
aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2Rl
IHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBl
LCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKKwor
ICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZyb21Q
cm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJvb2wgbGFyZ2VU
eXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKKworICAg
ICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBl
ZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7CiAgICAg
fQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51c2VkSW5kZXhT
cGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAgICAgICAgJiYg
YXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAgJiYgc3BlY3Vs
YXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBjb252ZXJzaW9u
KCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVyc2lvbigpID09
IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXko
KSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAKICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3OSw3ICs1OTAs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwogICAgICAgICAg
ICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29udmVyc2lvbiA6
IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAgICB1aW50OF90
IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBlZEFycmF5IDog
MTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7CiAgICAgfSB1
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCA4ODExYjg5ZjI0YTcuLmRjOTJlMTE3YmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDYsOCArMzgwNiwxNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIE9w
ZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3Vs
dCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50JiB2YXJpYW50
LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgIHN0YXRpY19hc3NlcnQoZW5hYmxlSW50NTIoKSk7Cisj
ZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlw
ZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8
fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBPdmVyZmxvdyk7CisjaWYgIUNQVShSRUdJU1RFUjY0KQorICAgICAgICBpZiAod2lsbE5l
ZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlw
ZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+
dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzgyMSwyNiArMzgzMCwzMCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2Vu
ZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dy
YXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJl
YWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVk
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPyBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA6
IEdldEFycmF5TGVuZ3RoOworICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChv
cCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRo
aXNOb2RlKTsKICAgICAgICAgLy8gT3VyIEFycmF5TW9kZSBzaG91bGRuJ3QgY2F1c2UgdXMgdG8g
ZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0byBleGl0IHdpdGhvdXQgZWZmZWN0cy4KICAg
ICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CiAKLQog
ICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAgICAgICAgIHNldChyZXN1bHQsIGxlbmd0aE5v
ZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBX
ZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgd2lsbCBuZXZl
ciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAvLyB0aGF0IG92ZXJmbG93cyBpbnQzMi4KLSAg
ICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25zdGFudChqc051bWJlcihsb2dTaXplKSk7Ci0g
ICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhCaXRMU2hpZnQsIGxlbmd0aE5vZGUs
IHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBjYW5ub3QgdXNlIGEgQml0TFNoaWZ0IGhlcmUg
YmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUgYSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dz
IEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6ZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSA8
PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhNdWwsIGxl
bmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5l
ZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA9ICFpc0ludDMyU3BlY3VsYXRpb24ocHJlZGlj
dGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgT3ZlcmZsb3cpOworI2lmICFDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaWYg
KHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRB
cnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJ
bmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTIsMTMgKzM4NjUsMTkgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJy
YXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJl
YWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVl
ZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIg
OiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwgT3BJ
bmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2Rl
KSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJy
YXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8
IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGlmICh3aWxsTmVl
ZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5
VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8o
KS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MCw3ICszODg5LDggQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6Okdl
bmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6
OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxs
TmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQp
LmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3
OS4uNzQ5MjA1ZDY0ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVk
UHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxl
bmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0
OgpAQCAtMTMzNyw2ICsxMzM4LDExIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAg
IGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5v
ZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAKKyAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyAgICAgICAgcmVhZChNaXNjRmll
bGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUy
TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEFycmF5VXNlOgpAQCAt
MTQ0NCw2ICsxNDUwLDE0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEFy
cmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7
CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUxlbmd0aEludDUyTG9jLCBNaXNj
RmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIEFycmF5TW9k
ZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CiAgICAgICAgIHN3aXRjaCAobW9kZS50eXBlKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCmluZGV4IGM2NmZiMjIzOWY4Zi4u
YWZkYzEwYThhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKQEAgLTky
LDcgKzkyLDcgQEAgaW5saW5lIGJvb2wgdmFsaWRhdGlvbkVuYWJsZWQoKQogI2VuZGlmCiB9CiAK
LWlubGluZSBib29sIGVuYWJsZUludDUyKCkKK2lubGluZSBib29sIGNvbnN0ZXhwciBlbmFibGVJ
bnQ1MigpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjVhYmRlZTg2
NzVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTk3LDEw
ICsxOTcsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdD
b2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4u
ZjBjMWI2MDVkZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAg
ICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAg
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXgg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0
dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQx
NkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENs
YW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNw
ZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1Nw
ZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxh
cmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRT
aXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcx
NywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2Rl
ID0gbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7Cisg
ICAgICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVz
c0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBs
ZW5ndGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgZml4
RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisjZWxzZQorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyNl
bmRpZgogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OiB7CiAgICAgICAgICAg
ICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC00MDk2LDE0ICs0MTM1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICBub2RlLT5jaGlsZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUq
IHByZXBlbmRHZXRBcnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFy
cmF5TW9kZSBhcnJheU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tB
cnJheShhcnJheU1vZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFn
ZSk7Ci0gICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4s
Ci0gICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25v
d25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9I
YXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3
NTczOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlv
bkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZv
LmgKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8g
VGhpcyBjbGFzcyBpcyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZh
bHVlcyBkdXJpbmcgY29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24g
YXMgdG8gd2hldGhlciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28g
d2hpY2gsCiAvLyB3aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0
ZXJGaWxlLCBhbmQgaWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZv
cm0sIGJ1dCB3ZSBtYXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5k
IHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8g
ZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRz
dGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4g
dGhlIHZhbHVlIGlzIGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdp
dGggaXQKIC8vIG1heSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRleCAyYmI5ZDRi
ZWE4MDAuLjA2NjFlNWI4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdIZWFwTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgICAgIG91dC5wcmludCgi
VHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MiKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBU
eXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJy
YXlCeXRlT2Zmc2V0SW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBUeXBl
ZEFycmF5TGVuZ3RoSW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUxlbmd0
aEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgUHJvdG90eXBlTG9jOgog
ICAgICAgICBvdXQucHJpbnQoIlByb3RvdHlwZUxvYyIpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAppbmRleCAyNjkxNzFjYjM0
MWQuLjQwZmI3MTY3MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5oCkBAIC02Nyw2ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0
ZXJMb2MsCiAgICAgU3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAor
ICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsCisgICAgVHlwZWRBcnJheUxlbmd0aElu
dDUyTG9jLAogICAgIFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxv
YWRMb2MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MS4uYjNi
MTQ1YTkxMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTQ5OSw2ICsxNDk5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAg
ICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgICAgICBzZXRSZWxhdGlvbnNo
aXAoUmVsYXRpb25zaGlwKG5vZGUsIG1femVybywgUmVsYXRpb25zaGlwOjpHcmVhdGVyVGhhbiwg
LTEpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApp
bmRleCAyYWY3OTcwNjhhOWMuLjBiYTdiOWZmM2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xOTY1LDYgKzE5NjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJy
YXlQdXNoOgogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBj
YXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFbnVtZXJhdG9yTmV4dFVwZGF0
ZUluZGV4QW5kTW9kZToKICAgICAgICAgY2FzZSBBcnJheUluZGV4T2Y6CkBAIC0yMDA0LDYgKzIw
MDUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
ICAgICAgICAgICAgIHJldHVybiAyOwogCiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5
OgpAQCAtMjI3Niw2ICsyMjc4LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsK
ICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAg
ICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4uMDA2NmY3YjAyNjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNjEsOCArMjYxLDExIEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNldCwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVz
dWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgZm9yIFR5cGVkQXJyYXlz
LCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVzIHRoYXQgY2FuIGhhdmUgYSBsZW5ndGggdGhhdCBk
b2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8gXAorICAgIG1hY3JvKEdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhHZXRWZWN0b3JMZW5ndGgs
IE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBO
b2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50
NTIsIE5vZGVSZXN1bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFNjb3BlLCBOb2RlUmVzdWx0SlMp
IFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFJlc29s
dmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNjlhY2Y1MTljMGJhLi4yNmIw
NDA2OGQ1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cApAQCAtOTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFsdWUKICAgICB9CiAgICAg
aWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNr
bHkoaW5kZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHko
dm0sIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2ts
eSh2bSwgaW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCiAg
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3NSw3
ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsQ2VsbFN0cmluZ0lu
dGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaWV3Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBzaXpl
LCBjaGFyKiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0
ZXIgc2l6ZSwgY2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIApAQCAtMTgzLDExICsxODEsMTMgQEAgY2hhciogbmV3VHlwZWRBcnJheVdp
dGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHIKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIl9zKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKworICAgIFVDUFVSZWdpc3Rl
ciB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KHNpemUpOworCiAgICAg
aWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNz
OjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSwgdW50
YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVuc2lnbmVkU2l6ZSkp
KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9jYXN0PGNoYXIqPihW
aWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSkpKTsKIH0KIAogdGVt
cGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA4LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAoVk0qIHZtUG9pbnRl
ciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MjQsNyArMTkyNCw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwg
Y2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0MCw3
ICsxOTQwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk3Miw3ICsxOTcyLDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhD
bGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDA0LDcgKzIwMDQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjAsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIw
MzYsNyArMjAzNiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2
ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Miw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVy
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMjA2OCw3ICsyMDY4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
VWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDg0NGMxOWIzMTE0MS4uN2YyNGIwYTgzOWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTks
MjcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0
ZXJmbHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwg
Y2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3Rl
ciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
Q1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3Rl
ciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhD
bGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
Q1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBF
bmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdB
cnJheUl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1
Y3R1cmUqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVjMC4uZDVmMGZm
Y2RmNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJD
b2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNl
dFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uMTk5ZjZjYzNiMTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzczLDYg
KzM3Myw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAg
ICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0
aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBA
IC0zODUsNiArMzg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hl
Y2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwog
ICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYjRjOGY4NjBiNTE0Li44
YjMwMmVmNzBjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4ICszMjM4LDQyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVD
bGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcg
c291CiAKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBl
ZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRl
eEdQUikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIs
IEdQUlJlZyBzY3JhdGNoR1BSKQogewogICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsQWxp
YXMpCiAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwogICAgIEpTQXJyYXlCdWZm
ZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAg
IG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBu
b2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVu
Z3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSB2aWV3
LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5jaGls
ZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25zdGFu
dCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGluZGV4
Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0
aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIENQVShSRUdJ
U1RFUjY0KQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRj
aEdQUik7CisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02
NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisKKyNpZiBDUFUoUkVHSVNURVI2
NCkKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7Cisg
ICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICBy
ZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRU
eXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBp
bmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVt
cCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIp
OworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKICAgICBpZiAoIWp1bXAu
aXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwpAQCAtMzM4MCwxNyArMzM5NCwxOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9k
ZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkp
OwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICBHUFJSZWcg
YmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHku
Z3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3M7CiAgICAgRGF0YUZvcm1hdCBmb3JtYXQ7CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9y
bWF0KSA9IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9y
bWF0ID09IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9k
ZSwgYmFzZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2so
bm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxvYWRGcm9tSW50
VHlwZWRBcnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BS
KCksIHR5cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAg
c2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3Bl
Y3VsYXRlLCBzaG91bGRCb3gpOwpAQCAtMzU0OCw2ICszNTY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVn
IHByb3BlcnQKICAgICBBU1NFUlQoaXNJbnQodHlwZSkpOwogICAgIAogICAgIFN0b3JhZ2VPcGVy
YW5kIHN0b3JhZ2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2ggKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0g
c3RvcmFnZS5ncHIoKTsKICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCAyKTsKQEAgLTM1ODAsNyArMzU5Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJl
ZyBwcm9wZXJ0CiAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVy
dHkpOwogICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NFUlQodmFsdWVHUFIg
IT0gc3RvcmFnZVJlZyk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1w
Rm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBKSVRD
b21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
bm9kZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAgc3dpdGNoIChlbGVt
ZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgMToKQEAgLTM2MzgsMTAgKzM2NTUsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSog
bm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMy
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAg
ICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MikpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VS
ZWcgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5Lmdwcigp
OwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwog
ICAgIERhdGFGb3JtYXQgZm9ybWF0OwpAQCAtMzY0OSw3ICszNjY4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlw
ZWRBcnJheVR5cGUKIAogICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgRlBSUmVn
IHJlc3VsdFJlZyA9IHJlc3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNr
KG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0No
ZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsKICAgICBzd2l0Y2gg
KGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBtX2ppdC5sb2FkRmxv
YXQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjgzLDEwICszNzAyLDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJh
eShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OworICAgIEdQUlRlbXBvcmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBSUmVnIHZhbHVlRlBS
ID0gdmFsdWVPcC5mcHIoKTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7
CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAKLSAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
bm9kZSwgYmFzZSwgcHJvcGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91
bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwg
c2NyYXRjaEdQUik7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAg
IGNhc2UgNDogewpAQCAtNzk2MCw3ICs3OTgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fn
ZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8K
IHsKICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAg
ICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJl
ZywgdmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7
CkBAIC04MDMyLDkgKzgwNTMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKICAgICBHUFJSZWcg
ZGF0YUdQUiA9IGRhdGEuZ3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsK
LSAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQodmVjdG9yR1BSICE9
IGRhdGFHUFIpOwogCiAgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKIApAQCAt
ODA3Niw2ICs4MDk0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldChOb2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwog
I2VuZGlmCiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRo
ZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2Ug
bXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVy
ZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJSZXN1bHQodmVjdG9y
R1BSLCBub2RlKTsKIH0KIApAQCAtODM0MiwxMiArODM2NSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNp
ZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJj
ZSgpLCBudWxscHRyLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkp
OworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsK
KyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAg
ICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmlu
Z09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTExLDEwICsxMTE0MCwyNCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUq
IG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7
CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRs
eSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7
Ci0gICAgCisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBj
YWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0X3Qgb24g
NjQgYml0IHBsYXRmb3JtcwogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJS
ZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7Ci0gICAgCisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBz
Y3JhdGNoLmdwcigpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNjcmF0
Y2hHUFIpOworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5
cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICBTcGVjdWxh
dGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNp
emVHUFIgPSBzaXplLmdwcigpOworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lz
dGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworI2VuZGlmCit9
CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lz
dGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTI4LDggKzExMTcxLDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAg
ICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHN0b3JhZ2VHUFIpOwog
CisjaWYgVVNFKFJFR0lTVEVSNjQpCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQo
SlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRo
cm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0
IG51bWJlci4KKyAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1
ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBU
cnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYK
ICAgICAKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0Lmxz
aGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3Jh
dGNoR1BSKTsKQEAgLTExMTg1LDkgKzExMjM1LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0
cigKICAgICAgICAgc3RvcmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIENQ
VShSRUdJU1RFUjY0KQorICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAg
c2l6ZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3Rv
cmUzMigKICAgICAgICAgVHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZNb2RlKCkpKTsKQEAgLTE0MTU5LDYgKzE0MjE1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAg
ICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29t
cGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNl
bmRpZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1
bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50
UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5Li5kZWI5YTkzMDdjMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMzAwLDkgKzEzMDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3Ry
aW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9p
ZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1i
b2woTm9kZSopOwotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5S
ZWdpc3RlcihOb2RlKiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJl
ZyBzaXplR1BSKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSop
OwotICAgIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZv
aWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogCiAg
ICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0MzEsMTAgKzE0MzgsMTMgQEAgcHVibGljOgogICAg
IHZvaWQgY29tcGlsZUFyaXRoTWluTWF4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDb25zdGFu
dFN0b3JhZ2VQb2ludGVyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlKE5vZGUqKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKTsKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAg
SklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFjaGVkSWZPdXRPZkJvdW5k
cyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzKTsK
LSAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJlZyBiYXNlR1BS
LCBHUFJSZWcgaW5kZXhHUFIpOworICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhO
b2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIp
OwogICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqKTsKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5cGVk
QXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBs
ZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYg
cHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVn
IGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lk
IGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwg
Y29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERh
dGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBA
QCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlv
dSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJp
dHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0
LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVy
YW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0NzUsNyAr
MjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8g
R2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cg
NDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBh
IHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJpdHMsIGhp
Z2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1
Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggNmVmYmNlZGRiYzBhLi5jMzNlMzc1ZTFhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEzNCw2ICsy
MTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUs
IGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdldEJ5VmFs
T25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJh
eVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJheU1vZGUo
KS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAg
ICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4KTsKQEAg
LTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7
CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0
Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJy
ZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlk
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUp
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGUxMzVmZDUzNDhlOC4uOTVkMGNmMzlmMzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNjk0LDYgKzI2OTQsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0K
IH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJT
aXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
YXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5
VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVj
dWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
R1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgp
LmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUgPCAo
MXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVkIGFy
cmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVjdG9y
KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7Cisg
ICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5QnVmZmVy
R1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9mZnNldCA9
IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJyYXkp
KTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOworCisgICAg
SklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxl
cjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVs
bFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIpOworICAg
IG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BSKTsK
KworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOworCisgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJmbHk6
Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBGSVhNRTog
VGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRhdGFHUFIp
OworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0YUdQUik7
CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOworCisgICAg
SklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShBUk02NEUp
CisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5dGVPZmZz
ZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwg
dmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJNNjRFKQor
ICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7CisgICAgbnVs
bFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVzdWx0KHZl
Y3RvckdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC0zNjQ0LDExICszNzIy
LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgYmFzZUVkZ2UpOwogICAg
ICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgaW5kZXhFZGdlKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2g7CiAKICAgICAgICAgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CiAgICAgICAgIAotICAgICAg
ICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAg
ICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQUiwg
c2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIAogICAgICAgICBHUFJUZW1wb3JhcnkgYXJnc1syXTsK
ICAgICAgICAgCkBAIC00Mzc1LDYgKzQ0NTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAg
ICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworICAgICAgICBi
cmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJ
ZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDkzLDYgKzQ1NzYsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQ
cm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTgwLDEwICs1NjY4LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBEYXRh
Vmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisjaWYgVVNFKFJFR0lTVEVS
NjQpCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCB0Mik7CisjZWxz
ZQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKKyNlbmRp
ZgogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2
NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpT
VmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNTc4MSwxMCArNTg3MywxNCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpc0xp
dHRsZUVuZGlhbk9wZXJhbmQuZW1wbGFjZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDMpKTsKICAgICAgICAgR1BSUmVnIGlzTGl0dGxlRW5kaWFuR1BSID0gaXNMaXR0bGVFbmRpYW5P
cGVyYW5kID8gaXNMaXR0bGVFbmRpYW5PcGVyYW5kLT5ncHIoKSA6IEludmFsaWRHUFJSZWc7CiAK
KyNpZiBVU0UoUkVHSVNURVI2NCkKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoaW5k
ZXhHUFIsIHQyKTsKKyNlbHNlCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRl
eEdQUiwgdDIpOworI2VuZGlmCiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAg
ICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsK
LSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9q
aXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJy
YW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
LmNwcAppbmRleCA1ZjUxZjIyNTEwNGYuLmUxMGQ2MmU0MjdkMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBA
IC0yNzksMTAgKzI3OSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlW
YWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAg
ICAgICAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBj
YXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgpAQCAt
MzU5LDYgKzM2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZToKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBN
b3ZIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IGQxMjQ4YzlmYWQ2Ny4uNzRmZTg5NTI2ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZs
eToKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2Fz
ZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKQEAgLTM5MSw2ICszOTIsNyBA
QCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgogICAgIGNhc2UgQ1BVSW50cmluc2ljOgog
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIEdldEJ5VmFsOgogICAg
IGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCA0M2QyNmU4M2U5NjguLjIzMjE5ZjkxODYxOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAyNSw2
ICsxMDI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAg
ICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworI2lm
IENQVShSRUdJU1RFUjY0KQorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCk7CisgICAg
ICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICAgICAgICAgIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTE3NSw2ICsxMTgwLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQo
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjoKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgICAgIGNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoKTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVP
ZigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00ODI4LDkgKzQ4NDAsOSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld192ZWN0b3IpKSk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIExWYWx1ZSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIExWYWx1ZSBiYXNlUHRyID0g
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsgICAgCisgICAgICAgIExWYWx1ZSBiYXNlUHRyID0g
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayB3YXN0ZWZ1
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsID0g
bV9vdXQubmV3QmxvY2soKTsKQEAgLTQ4NDYsNyArNDg1OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8od2FzdGVmdWxDYXNlLCBub3RO
dWxsKTsKIAogICAgICAgICBMVmFsdWUgdmVjdG9yID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAgIG1fb3V0LmJyYW5jaCht
X291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3Ojpu
dWxsVmVjdG9yUHRyKCkpKSwgCisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0
b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkp
KSwKICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90TnVsbCkpOwog
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bGwsIGNvbnRpbnVhdGlvbik7CkBAIC00ODY2
LDkgKzQ4NzgsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKIAotICAg
ICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwg
bnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQpKSk7CisgICAgICAgIHJldHVybiBtX291dC5waGko
cG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQpOwogICAgIH0KIAorICAg
IHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVz
dWx0KCk7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8vIEFJIHByb21pc2VzIHRoYXQg
dGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3
ZSBtdXN0IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3VsYXRlKE92ZXJm
bG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChyZXN1bHQsIG1fb3V0
LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZW5k
aWYKKyAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIocmVzdWx0KSk7CisgICAgfQor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MigpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJpY3RJ
bnQ1MihyZXN1bHQpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90
eXBlT2YoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTUwNTQsOCArNTA4
Myw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAg
ICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMy
Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQu
bG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxv
dywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwobGVuZ3RoLCBtX291dC5j
b25zdEludDY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworICAgICAg
ICAgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKGxlbmd0aCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2NCw2ICs1
MDk0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBz
ZXRTdHJpY3RJbnQ1MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTgxNjksOTgg
KzgyMDYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFy
cmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBt
X291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291
dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
bm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOworICAgICAgICAgICAg
TFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpKTsKIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1fb3V0
LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXpl
TGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxs
RW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFs
dWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRy
KHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkp
OwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAg
ICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5
dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRl
SGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAgICAgICAgICAgICAgICBt
X291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQu
bFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAgICAgICAgICAgICAgICBt
X291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVy
dGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsKLSAgICAgICAgICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRl
clR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0
ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0
ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAg
ICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1z
WzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdl
ID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAg
ICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3
aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5h
bWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAg
ZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1
cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9W
SUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UK
LSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1
bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291
dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBt
X291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAg
IGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJy
YXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBMVmFs
dWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vU3RvcmFnZSwgaGF2
ZVN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25v
ZGUtPmNoaWxkMSgpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICAg
ICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAgICAgICAg
ICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVm
UHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2Nh
dGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlv
bnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0u
ZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2l6ZSwg
c3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKLQotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgp
LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJh
eVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQorI2VuZGlmCiAgICAgICAgIGNhc2Ug
VW50eXBlZFVzZTogewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKIApAQCAtODI3Nyw3ICs4MjM3LDEwMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0
TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwg
TFZhbHVlIHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3Vn
aENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9v
dXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAg
ICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJh
eUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2Fz
ZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFz
dE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAg
ICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRo
ZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91
bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisKKyAgICAg
ICAgTFZhbHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChzaXplNjRCaXRzLCBt
X291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAg
ICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0
ZVNpemUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXpl
LCBtX291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQ
dHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZh
bHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFn
ZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3Bs
YXRXb3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlpl
cm8sCisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBt
X291dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAg
ICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRF
KQorICAgICAgICB7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9
IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0
ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRl
UmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0u
Z3ByKCkpOworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCks
IHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2Ug
PSBhdXRoZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1
ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlU
eXBlKSB7CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNh
c2UgVHlwZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0
ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xv
d0Nhc2UpOyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJS
QVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRl
ZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAg
ICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1
Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQ
dHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3Zl
Y3Rvcik7CisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3VsdFZhbHVl
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3Jl
MzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVz
dWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBz
dG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3Rv
cmFnZSk7CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNs
b3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25z
dCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6Okdl
bmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRv
cih2bSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXpl
Rm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFs
T2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlw
ZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAg
ICBMVmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE0NjU2LDYg
KzE0NzA5LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIGJhc2UgYW5k
IHZhbHVlIGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRzCisgICAgLy8gc3Rv
cmVzIHZhbHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2UrYmVnaW4qOCBhbmQg
YmFzZStlbmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwgTFZhbHVlIGJlZ2lu
LCBMVmFsdWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCkKICAg
ICB7CiAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0ID0gMTA7CkBAIC0xNTU5
MSw3ICsxNTY0Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBt
X25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56
ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9h
ZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KTsKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgp
OwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hl
Y2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNp
emUgLSAxKSk7CkBAIC0xNTczNCw3ICsxNTc4OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0
YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1
ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFW
aWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUg
bGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJh
eUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0
Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAg
ICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25z
dEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzI5MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0gWyZdKExWYWx1ZSB0YWdnZWRQdHIp
IHsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlBy
aW1pdGl2ZSkgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDMyKGJh
c2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBM
VmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQ2NChiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X2xlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRy
LCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEz
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcg
QEAgcHVibGljOgogICAgIExWYWx1ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rp
b24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdh
dGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAg
ICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhl
YXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIoYmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxv
YWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7
IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQpOyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVl
LCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAppbmRleCBmNzg2Zjc2
NTFhNjAuLjVkMmM2YzQwMjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lu
dHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODMsMjMgKzgzLDMyIEBAIHZvaWQgSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5
TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2
YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOwor
I2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5i
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsK
ICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAg
ICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2Ug
VHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUg
dHlwZSA9IHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwot
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAg
ICAgICAgICBqaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwg
dmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0
ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRT
aXplKHR5cGUpID4gMSkgewotICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhl
cmUgc2luY2Ugd2UgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJm
bG93cyBhbiBpbnQzMi4KLSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIo
bG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4g
dXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlz
IGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAg
ICAgICBqaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFs
dWVHUFIpOwogICAgICAgICB9Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1
ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEzMCw4ICsxMzksMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAg
ICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAg
ICAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIENQVShSRUdJU1RF
UjY0KQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3Jh
dGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJbnQzMih2
YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCBkN2RmN2NiOGU4NzUuLmE1OWQwOTEzM2YxMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkzNyw4IEBA
IHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAg
ICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPnRy
eVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9m
aWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAg
LTIzNDEsMjEgKzIzMzksMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMy
SW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5n
KGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
KSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmpl
Y3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBB
cnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkg
PCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAgICAgICAg
ICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCkt
PnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlz
IHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAogICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKQEAgLTIzNzEsOCArMjM3MCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlw
dC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYw
MDQ0ZS4uM2FjMmYwMTBjNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5l
IE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX1JFR0lTVEVSNjQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fUkVHSVNURVI2NCAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9G
RkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDJlZmI3MWM0YTY0Li5hMzg4NDI2M2IxZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApA
QCAtMTA0Niw4ICsxMDQ2LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZh
bChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUKICAgICAgICAgICAg
IGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNr
bHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkp
OworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1
aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAt
MTE2OSwxNCArMTE2OSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUu
bV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQz
Ml90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAg
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAg
ICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAgICAg
ICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBp
LCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwg
dmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IGRiYzQ3MDAzY2NiZi4uYzRmYzYwOTIyMGVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcs
NiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVjdHVyZUVudHJvcHlCaXRz
U2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9y
U3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIFJFR0lTVEVSNjQKKyAgICBjb25zdCBTbWFsbFR5
cGVkQXJyYXlNYXhMZW5ndGggPSBjb25zdGV4cHIgQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRB
cnJheU1heExlbmd0aAorZW5kCisKIGNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
ID0gY29uc3RleHByIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsCiAKIGlmIFg4Nl82NCBv
ciBYODZfNjRfV0lOIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBSSVNDVjY0CkBAIC0xMzAwLDcgKzEz
MDQsNyBAQCBtYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBt
ZXRhZGF0YSwgc2NyYXRjaCkKICAgICBsb2FkYiBKU0NlbGw6Om1faW5kZXhpbmdUeXBlQW5kTWlz
Y1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIAotbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJh
c2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNsb3dQ
YXRoKQorbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgc2xvd1BhdGgp
CiAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBU
aGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KICAgICBsb2FkYiBKU0Nl
bGw6Om1fdHlwZVtiYXNlXSwgdDIKICAgICBzdWJpIEZpcnN0VHlwZWRBcnJheVR5cGUsIHQyCkBA
IC0xMzExLDEzICsxMzE1LDI2IEBAIG1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRl
eCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzCiAgICAgaWYgQVJN
NjRFCiAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2CiAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSB0
NwotICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0
aAotICAgICAgICBiaWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAgICAgICBsb2FkcSBK
U0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAorICAgICAgICAjIFdlIGhh
dmUgdG8gc2lnbi1leHRlbmQgaW5kZXggaGVyZSwgc28gdGhhdCB0aGUgY29tcGFyaXNvbiB3aXRo
IGxlbmd0aCB3aWxsIGFsc28gY2F0Y2ggYW55IG5lZ2F0aXZlIHZhbHVlCisgICAgICAgIHN4aTJx
IGluZGV4LCBpbmRleAorICAgICAgICBicWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAg
IGVsc2lmIFJFR0lTVEVSNjQKKyAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVu
dGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVz
ZWQgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICAjIFdlIGhhdmUgdG8gc2lnbi1leHRlbmQg
aW5kZXggaGVyZSwgc28gdGhhdCB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCB3aWxsIGFsc28g
Y2F0Y2ggYW55IG5lZ2F0aXZlIHZhbHVlCisgICAgICAgIHN4aTJxIGluZGV4LCBpbmRleAorICAg
ICAgICBicWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93
UGF0aAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlv
bmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQg
b24gb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAogICAgIGVuZAogCisgICAgaWYgUkVHSVNURVI2
NAorICAgICAgICBicWJlcSBpbmRleCwgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxU
eXBlZEFycmF5CisgICAgICAgIHNldExhcmdlVHlwZWRBcnJheSgpCisuc21hbGxUeXBlZEFycmF5
OgorICAgIGVuZAorCiAgICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2Vd
LCB0MwogICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5ndGgsIGJhc2UsIHNjcmF0Y2gpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KaW5kZXggMzY2MTZhNjk1YjBmLi41Y2FmMzE4YzNlNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCkBAIC0xNjY5LDcgKzE2NjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAg
IGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZh
bFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlW
YWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5p
c2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0
QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZmJkYmE2OGUwZjMwLi4xOWZmYTZm
Njc3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3MTMsMTYgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWQKICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAg
IGVuZAogCisgICAgaWYgUkVHSVNURVI2NAorICAgICAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJy
YXkoKQorICAgICAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQorICAgICAgICBlbmQKKyAgICBlbHNl
CisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgICAgICBjcmFzaCgp
CisgICAgICAgIGVuZAorICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQyKQogCiAgICAgZ2V0
KG1fYmFzZSwgdDIpCkBAIC0xNzYzLDcgKzE3NzMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBn
ZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91Ymxl
R2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQx
LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRB
cnJheSwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjljZDdlNDM2ZjVj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyLDcgKzQyLDcgQEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZl
cjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5n
ZXQoKS5jb3B5UmVmKCk7CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50
czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgc2l6
ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9k
YXRhKGRhdGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkK
ICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJD
b250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIp
CiAgICAgb3RoZXIudHJhbnNmZXJUbygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6
OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29u
dGVudHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIHNpemVJ
bkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAg
OiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5
dGVzKQogewpAQCAtMTA5LDIzICsxMDksMjEgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpy
ZXNldCgpCiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250
ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjp0cnlBbGxvY2F0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewotICAgIC8vIERv
IG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgaWYgKG51
bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRzICog
ZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0g
ZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgewot
ICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
IENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0gbnVtRWxlbWVudHM7CisgICAgc2l6ZUluQnl0ZXMg
Kj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXplSW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkg
fHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgeworICAgICAg
ICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNpemVfdCBzaXplSW5CeXRl
cyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVudHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90
PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5
dGVzOworCisgICAgVUNQVVJlZ2lzdGVyIGFsbG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXMudmFs
dWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAgICAgICBhbGxvY2F0aW9uU2l6ZSA9
IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2NhdGVzIHNvbWV0aGluZywgYnV0
IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0IHRoZSBidWZmZXIgaXMgZGV0
YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwg
c2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzLnZh
bHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNldCgpOwogICAgICAgICByZXR1
cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxv
Y2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKICAgICBpZiAo
cG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBtZW1zZXQoZGF0YSwgMCwgYWxsb2Nh
dGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzOworICAgIG1fc2l6
ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6
ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKICAgICBtX2Rlc3RydWN0b3IgPSBB
cnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiB9CkBAIC0xNzgsNyAr
MTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJD
b250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQob3RoZXIubV9zaXplSW5CeXRlcyA8
PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9
IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsKICAgICBpZiAoIWJ1ZmZl
cikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG90
aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0
aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3Jl
YXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yMDgsNyArMjA2
LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyQ29u
dGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVzZWQgZnJvbToKIC8v
IC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeS4gQnV0
IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5IGNvbWUKIC8vICAg
ZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0
ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgVUNQVVJlZ2lz
dGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVkKCkgfHwg
KEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAgcmV0dXJu
IGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
Ynl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNlIGEgbmV3
IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQgYWNjZXNz
ZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3VsZCBhbGxv
Y2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
RnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQog
ewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZl
LCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpA
QCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZy
b21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNy
ZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKFVDUFVS
ZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJl
dHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAg
ICAgcmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lk
KiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxl
bmd0aCkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRz
LnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0
aWFsaXplKTsKQEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAg
ICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVM
ZW5ndGgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdp
c3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVy
biBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRp
b25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFVD
UFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAgYXV0byBi
dWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsK
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3IEBAIFJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRz
JiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1Jl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29u
dGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxl
bmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291cmNlKTsKICAgICBhdXRvIGJ1
ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShjb250ZW50cykpKTsKLSAg
ICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgaWYgKGJ5
dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAgICAgIG1lbWNweShidWZm
ZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CiAgICAgY29u
dGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsK
QEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJD
b250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBW
YWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCitVQ1BVUmVnaXN0
ZXIgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIFVDUFVSZWdpc3RlciBsZWZ0LCBV
Q1BVUmVnaXN0ZXIgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlm
ICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xh
bXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0
dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRl
eCkgY29uc3QKK1VDUFVSZWdpc3RlciBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5k
ZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsK
KyAgICBVQ1BVUmVnaXN0ZXIgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAo
aW5kZXggPCAwKQogICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICBy
ZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5
LDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2lu
KSBjb25zdAogICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdp
biksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25z
dAorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4
KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVyIGVuZCkgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOworICAgIFVDUFVSZWdp
c3RlciBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOwogICAgIGF1dG8gcmVz
dWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXN1bHQtPnNl
dFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJhLi5iMGFlNTZiZTU4ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDEzICsz
MywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVm
aW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAzMikKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFVDUFVSZWdpc3RlcikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisjZWxzZQorLy8gQmVjYXVz
ZSB3ZSBhcmUgdXNpbmcgYSBVQ1BVUmVnaXN0ZXIgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMg
b2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9y
bXMuCisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJl
IHF1aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFu
aXB1bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGlu
IHRoZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25l
IGNhcmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRp
ZgogCiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNjAsNyBAQCB1c2lu
ZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFy
ZWRUYXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyLCBBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwog
ICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxs
KG1fc2l6ZUluQnl0ZXMpOyB9CkBAIC02MCwxNCArNjksMTQgQEAgcHJpdmF0ZToKICAgICB1c2lu
ZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2Vk
UHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cisg
ICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNv
bnRlbnRzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsK
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNp
Z25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBVQ1BVUmVn
aXN0ZXIgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAg
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJD
b250ZW50cyYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBv
cGVyYXRvcj0oQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKQEAgLTc5LDcgKzg4LDcgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAg
IAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNp
emVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBtX3NpemVJbkJ5dGVzOyB9CisgICAgVUNQVVJlZ2lzdGVyIHNpemVJbkJ5dGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApAQCAtOTQsNyArMTAzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXph
dGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxvY2F0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAg
IAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgdHJhbnNmZXJUbyhBcnJheUJ1ZmZl
ckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExNCwyOCBAQCBwcml2YXRlOgogICAgIERhdGFUeXBl
IG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3Ry
dWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IG1fc2hh
cmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgVUNQVVJlZ2lzdGVyIG1fc2l6
ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVm
Q291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZm
ZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUZy
b21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
UHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgYnl0
ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3Ro
LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBi
eSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVm
ZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0
ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAK
ICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkg
Y29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxp
bmUgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsKICAgICAKICAgICB2b2lkIG1ha2VT
aGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5QnVmZmVyU2hhcmluZ01vZGUp
OwpAQCAtMTM3LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBi
ZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBz
bGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFt
cGVkSW5kZXgoVUNQVVJlZ2lzdGVyIGJlZ2luLCBVQ1BVUmVnaXN0ZXIgZW5kKSBjb25zdDsKICAg
ICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAt
MTYxLDEyICsxNzAsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3Rvcigp
OwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWdu
ZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25z
dCB2b2lkKiwgVUNQVVJlZ2lzdGVyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJh
eUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFt
cEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBj
bGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAg
aW5saW5lIFVDUFVSZWdpc3RlciBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAg
c3RhdGljIGlubGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBWYWx1ZShkb3VibGUgeCwgVUNQVVJlZ2lz
dGVyIGxlZnQsIFVDUFVSZWdpc3RlciByaWdodCk7CiAKICAgICB2b2lkIG5vdGlmeURldGFjaGlu
ZyhWTSYpOwogCkBAIC0xOTIsNyArMjAxLDcgQEAgY29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRh
dGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRhdGEoKTsKIH0KIAotdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQVVJlZ2lzdGVyIEFycmF5QnVmZmVy
OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZW50cy5zaXplSW5CeXRl
cygpOwogfQpAQCAtMjA1LDcgKzIxNCw3IEBAIGJvb2wgQXJyYXlCdWZmZXI6OmlzU2hhcmVkKCkg
Y29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJbkJ5dGVzKCkgY29uc3QK
IHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBzY2FsZSB0aGlzIGJ5IHRoZSBz
aGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVm
ZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gc2l6
ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAogdm9pZCBBcnJheUJ1ZmZlcjo6
cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uZWIwNTA5ZWNkY2FjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTggKzI1LDE3
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIK
LSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
IEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQs
IFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zm
c2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9ieXRlTGVu
Z3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewot
ICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQp
OworICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRl
T2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uMDBlZGNkMzg0N2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
KCkgY29uc3QKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJl
dHVybiBtX2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHNldERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25z
dCB7IHJldHVybiBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAg
IC8vIEhlbHBlciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0
YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IHNpemUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChV
Q1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGVsZW1lbnRTaXplKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1
cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRTaXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhl
bHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBp
cwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxl
bmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0
aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4K
KyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYg
YnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0
aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWlu
aW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6ZTsKKyAgICAgICAg
VUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0
KSAvIHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZWxlbWVudFNpemUpOwogICAgICAgICBpZiAo
bnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMgKzExMyw0OCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xv
YmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVm
ZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBV
Q1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5
QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldElt
cGwoQXJyYXlCdWZmZXJWaWV3KiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpOwogCi0gICAgaW5s
aW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxl
bmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBs
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQpOworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBV
Q1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KTsKKyAg
ICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIFVDUFVSZWdpc3Rl
ciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5l
IGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRl
TGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5n
dGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLAotICAg
ICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9v
bCB6ZXJvUmFuZ2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgcmFu
Z2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxl
bWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGlu
IG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwKLSAgICAgICAgdW5z
aWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAgICAg
ICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIFVDUFVSZWdpc3RlciBhcnJheUJ5dGVP
ZmZzZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciAqb2Zmc2V0LAorICAgICAgICBVQ1BVUmVnaXN0
ZXIgKm51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJ
TlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgVUNQVVJlZ2lz
dGVyIG1heE9mZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdpc3Rlcj46Om1heCgp
IC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgaWYgKCpvZmZzZXQgPiBt
YXhPZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwog
ICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVv
ZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpv
ZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0
ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIENoZWNrZWQ8VUNQVVJl
Z2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAg
ICBhZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9
IGFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93
ZWQoKSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAg
ICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgVUNQ
VVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zm
c2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWlu
aW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRl
T2Zmc2V0IDogMzE7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgdWludDY0X3QgbV9ieXRlT2Zm
c2V0IDogNjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNldCA6IDMxOworI2VuZGlm
CiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9ieXRlTGVuZ3Ro
OworICAgIFVDUFVSZWdpc3RlciBtX2J5dGVMZW5ndGg7CiAKICAgICB1c2luZyBCYXNlQWRkcmVz
cyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAg
ICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBs
dXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6
OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jv
b2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9m
ZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAg
aWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0
aCgpLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAor
CiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygp
KTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwg
YXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlC
dWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJh
bmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgo
KQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7
Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlz
U3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVu
Z3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFz
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJh
c2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIFVDUFVSZWdpc3Rl
ciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5
dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRl
TGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxl
bmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBv
dmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgZGF0
YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGluYXRpb24sIGJhc2UgKyBieXRlT2Zm
c2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlC
dWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5n
ZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbChVQ1BVUmVn
aXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIHJhbmdlQnl0ZUxlbmd0aCkKIHsKLSAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFu
Z2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5n
ZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZz
ZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZz
ZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zmc2V0LCAwLCByYW5n
ZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFycmF5QnVmZmVyVmll
dzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5z
aWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQotewot
ICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBpZiAo
c3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAg
IGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7Ci0g
ICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAgICBl
bmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBzdGFy
dDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAqbGVu
Z3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCA2ODgzYTE3YzQ3MmQu
LmQzNjI0NTBhMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRv
bWljc09iamVjdC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmFsaWRh
dGVBdG9taWNBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU0Fy
cgogICAgICAgICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4VmFsdWUudG9JbmRleChnbG9iYWxP
YmplY3QsICJhY2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCAwKTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSA8
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOworCiAgICAgaWYgKGFjY2Vzc0luZGV4
ID49IHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBvdXQgb2YgYm91bmRzIGZvciBhdG9t
aWMgYWNjZXNzLiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2NGFmMi4uN2IxZWQ3Y2Y1NjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIw
ICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogICAg
IDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5
dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkp
OwogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVu
Z3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgo
KTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCmluZGV4IGRhMDZiNGJi
MjE0NC4uZGU3MTRiNjI1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmll
dyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogICAgIHN0
YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogICAgIAog
ICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbApAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVz
ID0gbnVsbHB0cikKKyAgICBUIGdldChVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBib29sIGxpdHRsZUVu
ZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMp
IHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwg
Ym9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQoVUNQVVJlZ2lzdGVyJiBvZmZzZXQs
IGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAg
ICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0LCBsaXR0bGVFbmRpYW4s
IHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMpCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2
b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29s
KiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3RlciBvZmZzZXQsIFQg
dmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihU
KSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5n
dGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGJlN2U2YzA1MzRm
YS4uYjI4NzliM2RmMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNCArMzMsMjQgQEAgbmFtZXNwYWNlIEpT
QyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlW
aWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQ
VVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShj
b25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7
CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7
CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQog
ICAgIAotICAgIGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJyYXks
IHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4qIGFycmF5LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHNldEltcGwoYXJyYXksIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXRS
YW5nZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgY291
bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0UmFuZ2VJ
bXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksCkBA
IC01OCwzOSArNTgsMzkgQEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCB6ZXJvUmFuZ2Uo
dW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpCisgICAgYm9vbCB6ZXJvUmFuZ2UoVUNQVVJl
Z2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHplcm9SYW5nZUltcGwob2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpLCBj
b3VudCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgemVyb0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7IH0KICAgICAKLSAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIFVDUFVSZWdpc3RlciBsZW5ndGgoKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICByZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpOwogICAgIH0KIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0oVUNQVVJlZ2lzdGVy
IGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBkYXRhKClbaW5k
ZXhdOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZh
bHVlKSBjb25zdAorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3RlciBpbmRleCwgZG91YmxlIHZhbHVl
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
aW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSBBZGFwdG9y
Ojp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0TmF0aXZl
KHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAorICAg
IHZvaWQgc2V0TmF0aXZlKFVDUFVSZWdpc3RlciBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhdID0g
dmFsdWU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIGdldFJhbmdl
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIFVDUFVSZWdpc3RlciBjb3VudCwgVUNQVVJl
Z2lzdGVyIG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRSYW5nZUltcGwoCiAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSwKQEAgLTk4LDE4ICs5OCwxMSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwogICAgIH0KIAotICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZz
ZXQsIHNpemVfdCBjb3VudCkgY29uc3QKKyAgICBib29sIGNoZWNrSW5ib3VuZERhdGEoVUNQVVJl
Z2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KSBjb25zdAogICAgIHsKLSAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0
IDw9IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPD0gbGVuZ3RoCi0gICAg
ICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQg
Pj0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKG9mZnNl
dCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0
OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbAogICAgIHsK
ICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsKQEAgLTExOCw3ICsxMTEsNyBAQCBw
dWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAgIEdlbmVyaWNUeXBlZEFycmF5Vmll
dyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYWU1YmRkOGM2YTMx
Li41OWM2OWUzMTIyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTMgKzMy
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoCi1SZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9m
ZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3Zl
KGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdpc3Rlcj46Om1heCgpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgYXV0
byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRv
IHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAg
IGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgsIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC03NCw3ICs3NSw3IEBA
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAgIGlmICghcmVzdWx0
KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Pgot
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwpAQCAtMTE4LDI1ICsx
MTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnlDcmVhdGUoV1RGTW92ZShidWZm
ZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJh
eShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHVu
c2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChzdGFy
dCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgQXJyYXlCdWZm
ZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAgQVNTRVJUKGJ1ZmZlcik7
Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBi
eXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiB0cnlDcmVhdGUoYnVm
ZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp3cmFwKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4uMjdhOTc3OWY0OTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyVmlldzo6c19p
bmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxl
bmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAg
ICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAg
LTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25D
b250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsCisgICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdW5zaWduZWQgZWxl
bWVudFNpemUsCiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVy
ZShudWxscHRyKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNjMsNyArNjMsNyBAQCBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgK
ICAgICBpZiAobGVuZ3RoIDw9IGZhc3RTaXplTGltaXQpIHsKICAgICAgICAgLy8gQXR0ZW1wdCBH
QyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwotICAgICAgICBzaXplX3Qgc2l6ZSA9
IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHNpemUg
PSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7CiAgICAgICAgIHRlbXAgPSB2bS5wcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVs
bHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCF0
ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0byB1
c2UgbW9yZSB0aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KElOVF9NQVgpIC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXIsIFJlY29y
ZE92ZXJmbG93PiBzaXplID0gbGVuZ3RoOworICAgIHNpemUgKj0gZWxlbWVudFNpemU7CisgICAg
aWYgKHNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNp
emVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwotICAgIG1f
dmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdl
Ojp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsK
ICAgICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1vZGUgPT0gWmVy
b0ZpbGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwgc2l6ZSk7CiAgICAgCi0gICAgdm0u
aGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0
aCkgKiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRl
ZChzaXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwogICAg
IG1fbW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAog
SlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRl
eHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAg
ICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAs
IG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQsNyArMTE0LDcgQEAgSlNBcnJheUJ1
ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpT
QXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0
KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlC
dWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmll
d1RhZykKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwg
RGF0YVZpZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCiAgICAgLCBtX21vZGUoRGF0YVZpZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBA
QCBzdGF0aWMgaW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1
cm4gRWxlbWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQg
SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQVVJlZ2lzdGVyIEpTQXJy
YXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBsZW5ndGgoKTsKKyAgICByZXN1bHQg
Kj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CisjZWxz
ZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0
aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4dHJhIHNhbml0eSBjaGVjayB3aGVu
IGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0dXJuIGxlbmd0aCgpICogZWxlbWVudFNpemUo
dHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNs
b3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3NCw3IEBAIEFycmF5QnVmZmVyKiBK
U0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgo
KTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKIAog
ICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0VHlwZWRBcnJheTogewpAQCAtMzE1
LDggKzMyMiw4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojpw
b3NzaWJseVNoYXJlZEltcGwoKQogICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNo
YXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOwotICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOworICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSB0aGlzLT5s
ZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwK
ICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCBkZDAxZjdmODJhNTMuLjQ2NzBi
NDZkOGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBVQ1BVUmVn
aXN0ZXIgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNpbmcgVmVjdG9yUHRyID0gQ2FnZWRC
YXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKIAogICAg
IHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTExNywxMCArMTE3LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwogICAgIH0KICAgICAKLSAgICBzdGF0
aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQor
ICAgIHN0YXRpYyBVQ1BVUmVnaXN0ZXIgc2l6ZU9mKFVDUFVSZWdpc3RlciBsZW5ndGgsIHVuc2ln
bmVkIGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKQot
ICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAgICAgICAgQ2hl
Y2tlZDxVQ1BVUmVnaXN0ZXI+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAgICAgcmVzdWx0ICo9IGVs
ZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDE7
CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tl
ZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVjdGVk
OgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJvRmls
bCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUq
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRp
b25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZv
ciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mg
c2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQz
Ml90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChT
dHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAg
ICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgICAgIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAgICAgCiAgICAg
ICAgIGVudW0gRGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25D
b250ZXh0KAogICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAot
ICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmll
d1RhZyk7CisgICAgICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAg
dm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVu
Z3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0
aDsgfQorICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGg7IH0KICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
ZTsgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0
dGVyZmx5OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENh
Z2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAgICAg
VmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgICAg
IFVDUFVSZWdpc3RlciBtX2xlbmd0aDsKICAgICAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwog
ICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAgIH07CkBAIC0xOTAsMTEgKzE5Miwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iu
Z2V0TWF5QmVOdWxsKGxlbmd0aCgpKTsgfQogICAgIHZvaWQqIHZlY3RvcldpdGhvdXRQQUNWYWxp
ZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0VW5zYWZlKCk7IH0KICAgICAKLSAg
ICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwotICAgIGlubGluZSBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgaW5saW5lIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0KCk7CisgICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVy
PiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsK
KyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAg
ICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQXJyYXlCdWZm
ZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3RvclB0ciBtX3ZlY3Rv
cjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9sZW5ndGg7CiAg
ICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCAxZDA3
MmI3MWFjYjcuLjYzMTgxNTVlNjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKQEAgLTk5LDcgKzk5LDcg
QEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkK
ICAgICBwdHJkaWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHZl
Y3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZl
ci0+ZGF0YSgpKTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihkZWx0YSk7CisgICAgVUNQVVJlZ2lzdGVyIHJlc3VsdCA9IHN0YXRpY19jYXN0PFVDUFVSZWdp
c3Rlcj4oZGVsdGEpOwogICAgIGlmIChyZXF1ZXN0ZXIgPT0gTXV0YXRvcikKICAgICAgICAgQVNT
RVJUKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSA9PSBkZWx0YSk7CiAgICAgZWxzZSB7
CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmll
dzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB1bnNp
Z25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCitpbmxpbmUgVUNQVVJlZ2lzdGVy
IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNl
dEltcGw8TXV0YXRvciwgdW5zaWduZWQ+KCk7CisgICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11
dGF0b3IsIFVDUFVSZWdpc3Rlcj4oKTsKIH0KIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKK2lubGluZSBz
dGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRD
b25jdXJyZW50bHkoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhy
ZWFkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldElt
cGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+PigpOwogfQog
CiBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3Jh
cHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKaW5kZXggYjFlYTlkYTBmZTRjLi40OTYxNmY1YzgzOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI5
OCw2ICsyOTksNyBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCB0b0ludDMyKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9VSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
ICAgICB1aW50MzJfdCB0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JO
YW1lKSBjb25zdDsKKyAgICBVQ1BVUmVnaXN0ZXIgdG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OwogICAgIGRvdWJsZSB0b0xlbmd0
aChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi44
MGMyM2Y2YzY5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaApAQCAtNjksMTQgKzY5LDQ3IEBAIGlubGluZSB1aW50MzJfdCBKU1Zh
bHVlOjp0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVy
cm9yCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUg
bmVnYXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGQgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKKworICAgIGlmIChpc0ludDMyKCkp
CisgICAgICAgIHJldHVybiBhc0ludDMyKCk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRv
dWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkgewogICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRv
SW50MzIoZCkpOworfQorCitpbmxpbmUgVUNQVVJlZ2lzdGVyIEpTVmFsdWU6OnRvVHlwZWRBcnJh
eUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yTmFt
ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBkID0gdG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKKyAg
ICBpZiAoZCA8PSAtMSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUs
ICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAg
ICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7CisKKyAgICBpZiAoZCA+IHN0YXRp
Y19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSkgeworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgLy8gQWxsIG9mIHRoaXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0byBn
aXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBvbiAxPDwzMi4KKyAgICBVQ1BVUmVnaXN0ZXIgb3V0cHV0
T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUgaW5wdXRPZmZzZXQgPSAwOworICAgIFVDUFVSZWdpc3Rl
ciBpbnQzMk1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIGlm
IChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnQzMk1heCkpIHsKKyAgICAgICAgb3V0cHV0T2Zm
c2V0ID0gaW50MzJNYXg7CisgICAgICAgIGlucHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgfQor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3V0cHV0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8
VUNQVVJlZ2lzdGVyPihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNDOjp0b0ludDMyKGQgLSBpbnB1
dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRl
Z2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjkuLjk4NWQ5ZTI0NDk4MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0
YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBB
cnJheUJ1ZmZlciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBieXRlTGVuZ3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0
ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBA
IEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVh
dGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVy
KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBKU0RhdGFW
aWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwg
dW5zaWduZWQpCitib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdp
c3RlciwgSlNPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNE
YXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKK2Jv
b2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpT
VmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJj
Nzg1ZTQ3NjExYS4uNWVlMWQ4NjE5ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVn
aXN0ZXIgYnl0ZU9mZnNldCwKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogICAg
IAogICAgIC8vIER1bW15IG1ldGhvZHMsIHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNl
IGFyZSBqdXN0IGluIHBsYWNlIHRvCiAgICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9uIHdlIGRvIGVsc2V3aGVyZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRp
YyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0
ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAg
IGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBKU09iamVjdCosIFVDUFVS
ZWdpc3RlciwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChKU0dsb2Jh
bE9iamVjdCosIFVDUFVSZWdpc3RlciwgSlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXIq
IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBB
cnJheUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkwNjI0
N2VhNjUuLmQ4Yzk5YzNjNjhhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBt
ZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVP
ZmZzZXQiKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0
bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNpemUgPSBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpA
QCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5p
c0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20g
dGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5n
dGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsK
ICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVu
Z3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIsNyAr
MTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2Yg
RGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJieXRlT2Zmc2V0Iik7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29u
c3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBA
IC0xOTUsNyArMTk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlh
biA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpOworICAgIFVDUFVSZWdpc3RlciBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQs
NyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNo
ZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmll
dyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwor
ICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlm
IChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBl
bGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4
IGMyMmM1NWEwZDgxZC4uMDU2ODM4YzllNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93U2Nv
cGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEwIEBA
IEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlDbGFz
c0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAgICAg
QnV0dGVyZmx5KiBCICAgICAvLyBmcm9tIEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUqIFYK
LS8vICAgICB1aW50MzJfdCBMCisvLyAgICAgVUNQVVJlZ2lzdGVyIEwKIC8vICAgICBUeXBlZEFy
cmF5TW9kZSBNCiAvLwotLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3VyIHBv
aW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBh
IHRvdGFsIG9mIGZpdmUgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0IHRh
a2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBCIGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3RvcmVk
IHNvbWUgYWRkaXRpb25hbCAib3ZlcmZsb3ciIGRhdGEgZm9yCkBAIC0xMDMsMTUgKzEwNCwxNSBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0g
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0
aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgs
IHZvaWQqIHZlY3Rvcik7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBs
ZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZh
c3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVn
aXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgc3RhdGljIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlwZW5h
bWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8dHlw
ZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOyB9Ci0gICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9m
KG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CisgICAgVUNQVVJl
Z2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
KTsgfQogICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVjdG9y
KCkgY29uc3QKICAgICB7CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsKICAg
ICB9CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBpbkJv
dW5kcyhVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9s
ZW5ndGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2gg
aW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBo
ZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHko
dW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0
ZXIgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9y
OjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlj
a2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRl
eFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6
Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAg
ICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoVUNQ
VVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsK
ICAgICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFs
dWUgZ2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRl
eFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRh
cHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5z
aWduZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4
UXVpY2tseVRvTmF0aXZlVmFsdWUoVUNQVVJlZ2lzdGVyIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAg
dHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4
UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlj
a2x5KFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJU
KCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1
ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAg
ICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGks
IEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRv
ck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpz
VmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwg
anNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZh
bHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3Qs
IGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBl
PiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVl
KSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1Zh
bHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JO
YXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpz
VmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsyMDUs
MTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NSYW5n
ZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBjYW5B
Y2Nlc3NSYW5nZVF1aWNrbHkoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAg
ICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3Zl
cmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAg
IHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgp
OwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQg
cmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNl
cHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2Jh
bE9iamVjdCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYg
aXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNl
cHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpT
T2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBl
IHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9i
amVjdCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9iamVj
dE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNl
cnZhYmxlKTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBv
c3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZp
ZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsg
aXQgd2lsbCB0aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0
b3I+CiAgICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9y
PiosCi0gICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5
VHlwZSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAgIFVDUFVSZWdpc3Rl
ciBvYmplY3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8v
IFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMgdGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMg
c2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBF
bGVtZW50VHlwZSogYXJyYXkgPSB0eXBlZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9
IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAgICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4o
YXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgKaW5kZXggZDI1ODQwNjdlODNmLi5lZWRhNTVlM2NhMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTQzLDcgKzE0Myw3
IEBAIGlubGluZSBKU0FycmF5QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVl
ZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdD
bGFzcz4KLWlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgRW5jb2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1l
bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5n
dGhPcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbmxpbmUg
SlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNH
bG9iYWxPYmplY3QqIGdsbwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
IAotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoID0gMDsKICAgICAgICAgaWYgKGxlbmd0aE9wdCkKICAgICAgICAgICAgIGxlbmd0aCA9IGxl
bmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBpbmxp
bmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMo
SlNHbG9iYWxPYmplY3QqIGdsbwogICAgIC8vIC0gQSBwcmltaXRpdmUuIFRoaXMgY3JlYXRlcyBh
IG5ldyB0eXBlZCBhcnJheSBvZiB0aGF0IGxlbmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBpdC4K
IAogICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZt
LCBmaXJzdFZhbHVlKSkgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgICAgIFVDUFVS
ZWdpc3RlciBsZW5ndGg7CiAgICAgICAgIEpTQXJyYXlCdWZmZXIqIGN1c3RvbUJ1ZmZlciA9IG51
bGxwdHI7CiAKICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+
dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkgewpAQCAtMjUwLDcgKzI1MCw3IEBAIGlubGluZSBKU09i
amVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2Jh
bE9iamVjdCogZ2xvCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gZmlyc3RWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwor
ICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSBmaXJzdFZhbHVlLnRvVHlwZWRBcnJheUluZGV4KGds
b2JhbE9iamVjdCwgImxlbmd0aCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgVmlld0NsYXNzOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCkpOwogfQpAQCAtMjc1LDggKzI3NSw4IEBA
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICB9CiAKICAgICBKU1ZhbHVlIGZpcnN0VmFsdWUg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIHVuc2lnbmVkIG9mZnNldCA9
IDA7Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0Owor
ICAgIFVDUFVSZWdpc3RlciBvZmZzZXQgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lz
dGVyPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNBcnJh
eUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAgICAgb2Zm
c2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGdsb2JhbE9iamVj
dCwgImJ5dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CkBAIC0yODUsNyArMjg1LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0
KgogICAgICAgICAgICAgLy8gSWYgdGhlIGxlbmd0aCB2YWx1ZSBpcyBwcmVzZW50IGJ1dCB1bmRl
ZmluZWQsIHRyZWF0IGl0IGFzIG1pc3NpbmcuCiAgICAgICAgICAgICBKU1ZhbHVlIGxlbmd0aFZh
bHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICAgICAgICAgIGlmICgh
bGVuZ3RoVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxl
bmd0aFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CisgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFs
T2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcg
PyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwLi4wNTNjZmI1
MWUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIKICNpbmNsdWRlICJUeXBlRXJyb3Iu
aCIKICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lz
dGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BV
UmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUsIGxl
bmd0aCwgdmVjdG9yKTsKQEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgdW5zaWduZWQgbGVuZ3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05OSwxMSArMTAwLDExIEBAIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgc2l6ZV90
IHNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lzdGVy
IHNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgQVNTRVJUKGJ1ZmZl
cik7CiAgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpidWZm
ZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJMZW5n
dGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9y
PgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmlj
VHlwZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQs
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2ln
bmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCisgICAgVUNQVVJlZ2lzdGVyIG90
aGVyT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC0yMTgsNyArMjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3RpbmdC
dWZmZXIoKSAhPSBvdGhlci0+ZXhpc3RpbmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVudFNp
emUgPT0gb3RoZXJFbGVtZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkpCiAg
ICAgICAgIHx8IHR5cGUgPT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKFVDUFVSZWdp
c3RlciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRv
cjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhl
ci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0y
MjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9yICgz
KSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6ZSA9
PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsg
aS0tOykgeworICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07KSB7CiAg
ICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAg
IG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAog
ICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShp
ICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAgIC8v
IEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNl
ICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1
ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAg
IGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJhbnNmZXJC
dWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAg
ICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9m
ZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAg
Zm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlj
a2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNP
YmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENv
cHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lz
dGVyIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAg
ICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsK
LSAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNl
IHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdl
IGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIG90aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Kj4ob2JqZWN0KTsKICAgICAgICAgbGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+
bGVuZ3RoKCkpOwogICAgICAgICAKQEAgLTMxMiw5ICszMTMsMTEgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ugd29uJ3Qg
ZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBtb3Jl
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihsZW5ndGgpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0T2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkpKTsKICAgICAgICAgLy8gV2UgY291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQgcmln
aHQgbm93LCB3ZSBkb24ndC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0KTsKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVj
dC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZz
ZXQpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAg
ICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsg
aSwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
aW5kZXggNGMwZWJkMWY2MTY1Li5hOTc0NzM3M2M0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNjAsNiArNjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBnZXRK
U0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNz
IEFycmF5UHJvZmlsZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNs
YXNzIEludGVybmFsRnVuY3Rpb247CkBAIC0yMTEsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAg
ICAgICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0gICAg
ICAgICAgICBzZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAg
ICBpZiAodHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBtZXRob2RUYWJs
ZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yODksNyArMjg4LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkg
Y29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVk
KSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWdu
ZWQsIEFycmF5UHJvZmlsZSogPSBudWxscHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNhbkdl
dEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgICAgIAotICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkp
IGNvbnN0CisKKyAgICAvLyBVc2VzIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0
IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgSlNWYWx1
ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUgPSBudWxscHRyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAg
IGlmIChjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpKQotICAgICAgICAgICAgICAg
IHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpOworICAgICAgICAgICAgICAg
IHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIGFycmF5UHJvZmlsZSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZ
UEVTOgogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTEsMzUgKzQxMSw3MyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0LCBpKTsKICAgICB9CiAKLSAgICBib29sIGNh
blNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0Owog
ICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSk7
Ci0gICAgICAgIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFs
dWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGlu
Z1R5cGUoVk0mLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSB0byBp
bmRpY2F0ZSBzdWNjZXNzCisgICAgLy8gVXNlIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUg
dG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAg
Ym9vbCB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlLCBB
cnJheVByb2ZpbGUqKTsKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2ln
bmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQog
ICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsK
ICAgICAgICAgc3dpdGNoIChpbmRleGluZ01vZGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFO
S19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnlTZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KGksIHYsIGFycmF5UHJvZmlsZSk7CiAgICAgICAgIGNhc2UgQUxM
X1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNh
c2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExf
V1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExfV1JJ
VEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnRJbnQz
MlRvRG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
RkFMTFRIUk9VR0g7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElH
VU9VU19JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKHYpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAg
ICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2KTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRF
WElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYu
aXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNX
aGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVt
YmVyKCk7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGks
IHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1ZTsK
KyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAg
ICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0
b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICAgICAg
cmV0dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGkg
Pj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5
cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgTm9u
QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5
U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKQotICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBpZiAoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICBpZiAo
aSA+PSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVy
Zmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwg
dik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCisKICAgICB2
b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7
CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDZl
MWJiMWI1OWYxZS4uYjNjMjY2YzY0NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDIxICs0NjUsMTUgQEAgaW5saW5lIGJv
b2wgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkg
Y29uc3QKICAgICB9CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CitpbmxpbmUg
SlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBp
LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHR5cGUo
KSkgewotI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAotICAgIGNhc2UgbmFt
ZSAjIyBBcnJheVR5cGUgOlwKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBuYW1l
ICMjIEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOwotICAgICAg
ICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBF
RF9BUlJBWV9UWVBFKQotI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFy
cmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJh
eSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTsKKyNlbmRpZgogCi1p
bmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCBpKSBjb25zdAotewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIENBU0VfVFlQ
RURfQVJSQVlfVFlQRShuYW1lKSBcCiAgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtcCkBA
IC01MTIsNyArNTA2LDUwIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiB9Ci0gICAgCisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlG
b3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYp
Cit7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5KCktPmFycmF5
U3RvcmFnZSgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2UtPm1fdmVj
dG9yW2ldOworICAgIEpTVmFsdWUgb2xkID0geC5nZXQoKTsKKyAgICB4LnNldCh2bSwgdGhpcywg
dik7CisgICAgaWYgKCFvbGQpIHsKKyAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yOworICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHN0
b3JhZ2UtPnNldExlbmd0aChpICsgMSk7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBKU09iamVj
dDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHYs
IEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7Cisj
aWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5
UHJvZmlsZSkgZG8ge1wKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlw
ZWRBcnJheU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisj
ZWxzZQorI2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHtc
CisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQor
I2VuZGlmCisjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCisgICAgY2FzZSBu
YW1lICMjIEFycmF5VHlwZSA6IHtcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8
SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+
Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisg
ICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFU
RV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtc
CisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklF
VyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisj
dW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25E
YXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBA
QCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7
CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYg
KG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAg
aWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAg
IGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRl
eCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThk
YzFhMzBhZWRkLi4yMzcwZDk4YjdhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGFnZUNvdW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KCgxdWxsIDw8IDMyKSAvIHBhZ2VTaXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgLyBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFnZVNpemUpKTsKIAogICAgIHVpbnQzMl90IG1f
cGFnZUNvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggYTg0ODAyZTg2MDNiLi5kMTE3NDRjYjUzYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMjEtMTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFy
Oi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBVU0VfTEFSR0VfVFlQRURfQVJSQVlTIGZsYWcgd2hpY2ggaXMgZXF1aXZhbGVu
dCB0byBVU0VfSlNWQUxVRTY0LCBpdCBwcm92ZWQgdXNlZnVsIHRvIHRlc3QgdGhpbmdzIGFuZCBj
YXRjaCBicmVha2FnZSBvbiAzMi1iaXQgcGxhdGZvcm1zIHdpdGhvdXQgcmVseWluZyBvbiBFV1Mu
CisgICAgICAgIEFsc28gbWFkZSBzb21lIG9mIENoZWNrZWRBcml0aG1ldGljIGNvbnN0ZXhwciwg
YW5kIGFkZGVkIGlzU3VtU21hbGxlclRoYW5PckVxdWFsIHNpbmNlIGl0IGlzIGEgY29tbW9ubHkg
dXNlZCB0ZXN0IGluIEFycmF5QnVmZmVyIGFuZCBlYXN5IHRvIGdldCB3cm9uZyBpbiB0ZXJtcyBv
ZiBvdmVyZmxvdy4KKworICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAg
ICAoV1RGOjppc0luQm91bmRzKToKKyAgICAgICAgKFdURjo6Y29udmVydFNhZmVseSk6CisgICAg
ICAgIChXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFsKToKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm1Vc2UuaDoKKwogMjAyMS0xMC0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIEZvbGxvdy11cCAjMjogV1RGOjpSZXRhaW5QdHI8PiBhbGxvd3MgYXNzaWdu
bWVudCBvZiB0d28gcG9pbnRlciB0eXBlcyB0aGF0IGFyZSBub3QgYXNzaWduYWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3Rm
L0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggZmYxNTY1ZjExZGVkLi5lZmFiNGFkM2JjOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKKysrIGIvU291cmNl
L1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCwxNCArMTQ0LDE0IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+PjsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIGlzVGFyZ2V0Qmln
Z2VyID0gc2l6ZW9mKFRhcmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJvb2wgdGFyZ2V0U2lnbmVk
ID0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQsIGJvb2wgc291cmNlU2ln
bmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWduZWQ+IHN0cnVjdCBCb3Vu
ZHNDaGVja2VyOwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4g
ewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2Ft
ZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNy
ZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBz
dGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwogICAgIH0KIH07CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91
bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291
cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0
IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0
IHR5cGUuCiAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1pbigp
IDw9IHZhbHVlICYmIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7
CkBAIC0xNTksNyArMTU5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29s
IGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gV2hlbiBjb252ZXJ0aW5nIHZhbHVl
IHRvIHVuc2lnbmVkIFNvdXJjZSwgdmFsdWUgd2lsbCBiZWNvbWUgYSBiaWcgdmFsdWUgaWYgdmFs
dWUgaXMgbmVnYXRpdmUuCiAgICAgICAgIC8vIENhc3RlZCB2YWx1ZSB3aWxsIGJlY29tZSBiaWdn
ZXIgdGhhbiBUYXJnZXQ6Om1heCBhcyBTb3VyY2UgaXMgYmlnZ2VyIHRoYW4gVGFyZ2V0LgpAQCAt
MTY4LDcgKzE2OCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNv
dXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRoZSB1bnNpZ25lZCBTb3VyY2UgdHlwZSBo
YXMgZ3JlYXRlciBwcmVjaXNpb24gdGhhbiB0aGUgdGFyZ2V0IHNvIG1heChUYXJnZXQpIC0+IFNv
dXJjZSB3aWxsIHdpZGVuLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291
cmNlPihzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpKTsKQEAgLTE3Niw3ICsxNzYs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAgICAgewogICAg
ICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2Ft
ZSBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0No
ZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVl
LCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
KyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsK
ICAgICAgICAgLy8gVGFyZ2V0IGlzIHNpZ25lZCB3aXRoIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNp
b24uIElmIHN0cmljdGx5IGdyZWF0ZXIsIGl0IGlzIGFsd2F5cyBzYWZlLgogICAgICAgICBpZiAo
c2l6ZW9mKFRhcmdldCkgPiBzaXplb2YoU291cmNlKSkKQEAgLTIwMiwxOSArMjAyLDE5IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0No
ZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVl
LCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
KyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsK
ICAgICAgICAgLy8gVGFyZ2V0IGlzIHVuc2lnbmVkIHdpdGggZ3JlYXRlciBwcmVjaXNpb24uCiAg
ICAgICAgIHJldHVybiB2YWx1ZSA+PSAwOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGlzSW5Cb3VuZHMo
U291cmNlIHZhbHVlKQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQog
ewogICAgIHJldHVybiBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlPjo6aW5Cb3VuZHModmFs
dWUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
YXRpYyBpbmxpbmUgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRw
dXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBp
bmxpbmUgY29uc3RleHByIGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYg
b3V0cHV0KQogewogICAgIGlmICghaXNJbkJvdW5kczxUYXJnZXQ+KGlucHV0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmdzPiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJncy4uLiBhcmdzKQogICAg
IHJldHVybiBjaGVja2VkUHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVyZmxvd2VkKCk7CiB9CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoVCBhLCBU
IGIsIFQgYm91bmQpCit7CisgICAgQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4gc3VtID0gYTsK
KyAgICBzdW0gKz0gYjsKKyAgICByZXR1cm4gIXN1bS5oYXNPdmVyZmxvd2VkKCkgJiYgc3VtLnZh
bHVlKCkgPD0gYm91bmQ7Cit9CisKIH0KIAogdXNpbmcgV1RGOjpBc3NlcnROb092ZXJmbG93OwpA
QCAtMTAxNywzICsxMDI0LDQgQEAgdXNpbmcgV1RGOjpkaWZmZXJlbmNlT3ZlcmZsb3dzOwogdXNp
bmcgV1RGOjppc0luQm91bmRzOwogdXNpbmcgV1RGOjpwcm9kdWN0T3ZlcmZsb3dzOwogdXNpbmcg
V1RGOjpzdW1PdmVyZmxvd3M7Cit1c2luZyBXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDM0M2IyNzYyNmM4Yy4uNDNhYTQzOGUxMmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMjEtMTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFy
Oi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTb21lIHBhcnRzIG9mIFdlYkNvcmUgdXNlIFR5cGVkQXJyYXlzLCBhbmQgd291bGQgbm90
IGJ1aWxkIGFmdGVyIEkgbWFkZSB0aGUgbGVuZ3RoKCkgZnVuY3Rpb24gb24gdHlwZWQgYXJyYXlz
IHJldHVybiBzaXplX3QgaW5zdGVhZCBvZiB1aW50MzJfdC4KKyAgICAgICAgSSBmaXhlZCBpdCB0
cml2aWFsbHkgYnkgUkVMRUFTRV9BU1NFUlRpbmcgdGhhdCB0aGUgc2l6ZV90IGZpdHMgaW4gYSB1
aW50MzJfdCBhbmQgdGhlbiBjYXN0aW5nIGl0LgorICAgICAgICBObyBuZXcgdGVzdHMgZm9yIFdl
YkNvcmUgYXMgdGhlcmUgaXMgbm8gaW50ZW5kZWQgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVm
ZmVyOjpjb3B5VG9DaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0
ZUZyZXF1ZW5jeURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0
RmxvYXRUaW1lRG9tYWluRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2Vy
OjpnZXRCeXRlVGltZURvbWFpbkRhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1
bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oOgorCiAyMDIxLTEwLTA1ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyODMz
MzUpOiBNb21lbnR1bSBzY3JvbGxpbmcgaXMgbm8gbG9uZ2VyIGxvY2tlZCB0byBhbiBheGlzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4
IGNiN2U4NGQ0NTM4My4uMmRiNDljYTI0YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTkzLDEyICsxOTMsMTIgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5
PiYmIGRlc3RpbmF0aW9uLAogICAgIAogICAgIEZsb2F0MzJBcnJheSogY2hhbm5lbERhdGEgPSBt
X2NoYW5uZWxzW2NoYW5uZWxOdW1iZXJdLmdldCgpOwogICAgIAotICAgIHNpemVfdCBkYXRhTGVu
Z3RoID0gY2hhbm5lbERhdGEtPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBkYXRhTGVuZ3Ro
ID0gY2hhbm5lbERhdGEtPmxlbmd0aCgpOwogICAgIAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0g
ZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3Vu
dCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgVUNQVVJlZ2lzdGVyIGNvdW50ID0g
ZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3RpbmF0
aW9uLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9
IGNoYW5uZWxEYXRhLT5kYXRhKCk7CkBAIC0yMjEsMTIgKzIyMSwxMiBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJj
ZSwgdW5zaWduZQogICAgIAogICAgIEZsb2F0MzJBcnJheSogY2hhbm5lbERhdGEgPSBtX2NoYW5u
ZWxzW2NoYW5uZWxOdW1iZXJdLmdldCgpOwogICAgIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0g
Y2hhbm5lbERhdGEtPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBkYXRhTGVuZ3RoID0gY2hh
bm5lbERhdGEtPmxlbmd0aCgpOwogICAgIAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxl
bmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRh
dGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgVUNQVVJlZ2lzdGVyIGNvdW50ID0gZGF0YUxl
bmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKHNvdXJjZS5nZXQoKS5s
ZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBzb3VyY2UtPmRh
dGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uYWM4OWNhZWJlY2Y5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAK
QEAgLTE5Niw4ICsxOTYsOCBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVu
Y3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAgZG9GRlRBbmFseXNpc0lm
TmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxpbmVhciBtYWduaXR1ZGUg
dG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSBt
YWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKHNv
dXJjZUxlbmd0aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3Rp
bmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVu
Z3RoID0gc3RkOjptaW4obWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpLCBkZXN0aW5hdGlvbkxlbmd0
aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgY29uc3QgZG91YmxlIHJhbmdlU2Nh
bGVGYWN0b3IgPSBtX21heERlY2liZWxzID09IG1fbWluRGVjaWJlbHMgPyAxIDogMSAvIChtX21h
eERlY2liZWxzIC0gbV9taW5EZWNpYmVscyk7CiAgICAgICAgIGNvbnN0IGRvdWJsZSBtaW5EZWNp
YmVscyA9IG1fbWluRGVjaWJlbHM7CkBAIC0yMjcsOCArMjI3LDkgQEAgdm9pZCBSZWFsdGltZUFu
YWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5EYXRhKEZsb2F0MzJBcnJheSYgZGVzdGluYXRpb25B
cnJheSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIHVuc2lnbmVk
IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWlu
KGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5h
dGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNp
emUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNp
emUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBi
b29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZm
ZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJU
KGlzSW5wdXRCdWZmZXJHb29kKTsKQEAgLTI1MSw4ICsyNTIsOSBAQCB2b2lkIFJlYWx0aW1lQW5h
bHlzZXI6OmdldEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBmZnRTaXpl
ID0gdGhpcy0+ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXpl
LCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5n
dGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhp
cy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0
aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lu
cHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAm
JiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lucHV0
QnVmZmVyR29vZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjllODQ2N2FkNjJhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0xMjYzLDggKzEyNjMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB3
cml0ZShJbWFnZURhdGFUYWcpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPndpZHRoKCkp
OwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsKLSAgICAgICAgICAgICAg
ICB3cml0ZShkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRh
dGEtPmRhdGEoKS5kYXRhKCksIGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICAg
ICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFMZW5ndGggPSBkYXRhLT5k
YXRhKCkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGguaGFzT3ZlcmZs
b3dlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICB3cml0ZShkYXRhLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTMxMSw4ICsxMzE2LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IHdyaXRlKEFycmF5QnVmZmVyVGFnKTsKLSAgICAgICAgICAgICAgICB3cml0ZShhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOworICAgICAgICAgICAgICAgIENoZWNrZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiBi
eXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29k
ZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob2Jq
LT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCBhNjZiMTkxZDY4NmQuLmJhZjFhYmFkNjdi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC02
OCw3ICs2OCw5IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZShXZWJDb3JlOjpCbG9i
JiBibG9iKQogCiAgICAgYXV0byBieXRlTGVuZ3RoID0gYmxvYi5zaXplKCk7CiAgICAgaWYgKCFi
eXRlTGVuZ3RoKSB7Ci0gICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKDBV
LCAxKSwgMCwgMCk7CisgICAgICAgIC8vIFRoZSBjYXN0IGxvb2tzIHdlaXJkLCBidXQgaXMgcmVx
dWlyZWQgZm9yIHRoZSBvdmVybG9hZGluZyByZXNvbHV0aW9uIHRvIHN1Y2NlZWQuCisgICAgICAg
IC8vIFdpdGhvdXQgaXQsIHRoZXJlIGlzIGFuIGFtYmlndWl0eSB3aGVyZSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpIGNvdWxk
IGJlIGNhbGxlZCBpbnN0ZWFkLgorICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KDBVKSwgMSksIDAsIDApOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8QmxvYkxv
YWRlcj4oW3RoaXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li4xYmEzMjJjMTBiYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2Fz
dHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02Myw3ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIGJvb2wgY2hlY2tlZFJlYWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVuc2ln
bmVkJiBvZmZzZXQsIEVuZGlhbm5lc3MgZW5kaWFubmVzcykKICAgICB7CiAgICAgICAgIGJvb2wg
cmVhZFN0YXR1cyA9IGZhbHNlOwotICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFk
PFQ+KG9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAg
ICAgICAgVUNQVVJlZ2lzdGVyIGFjdHVhbE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgVCB2YWx1
ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihhY3R1YWxPZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0
dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3Vu
ZHM8dWludDMyX3Q+KGFjdHVhbE9mZnNldCkpOworICAgICAgICBvZmZzZXQgPSBhY3R1YWxPZmZz
ZXQ7CiAgICAgICAgIGlmICghcmVhZFN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAo=
</data>
<flag name="commit-queue"
          id="464900"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440832</attachid>
            <date>2021-10-11 14:19:24 -0700</date>
            <delta_ts>2021-10-11 14:24:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>242642</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ODZmM2MzMTU0Zjc5Li5kYzZhMjFlYzI5YTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMDUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmlnLXdhc20tbWVtb3J5IHRl
c3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00gYXQgMkdCLgorICAgICAgICBUaGV5IG5v
dyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWlsdXJlIGF0IDRHQisxLgorICAgICAgICBU
aGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZp
b3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUgdGhhdCB3YXMgY2F1c2luZyB0aGUgc3Bl
Y2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3duIChyZXN1bHRpbmcgaW4gdGhlIGdlbmVy
aWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29kZSkuCisgICAgICAgIEZpbmFsbHkgSSBt
YWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRmb3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBw
b3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRzLCBhbmQgSSBtYWRlIHRoZW0gb25seSBy
dW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQg
b2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZp
Y2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxhcmdlIHR5cGVkIGFycmF5cywgYW5kIGVz
cGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9NQVguCisKKyAgICAgICAgKiBzdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzOiBBZGRlZC4KKwogMjAyMS0x
MC0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IFJlZmluZSBSZWdFeHAjY29tcGlsZSBiYXNlZCBvbiByZWdleHAtbGVnYWN5LWZlYXR1cmVzIHBy
b3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyNWRjY2I4Mzk1Li5jMmMwNGM4OWMwNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NiBAQAorMjAyMS0xMC0wNSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00g
dG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoaWxlIGluY3JlYXNpbmcgTUFYX0FS
UkFZX0JVRkZFUl9TSVpFIHRvIDRHQiB3YXMgZWFzeSwgaXQgd2FzIG5vdCByZW1vdGVseSB0aGUg
b25seSB0aGluZyByZXF1aXJlZCB0byBnZXQgdGhpcyB0byB3b3JrOgorICAgICAgICAtIDRHQiBp
cyBub3QgcmVwcmVzZW50YWJsZSBpbiBhIHVpbnQzMl90LCBzbyBJIGNoYW5nZWQgYWxsIGxlbmd0
aCBvZiBBcnJheUJ1ZmZlci9UeXBlZEFycmF5L2V0Yy4uIHRvIGJlaW5nIFVDUFVSZWdpc3Rlci4K
KyAgICAgICAgLSBUaGlzIGFsc28gcmVxdWlyZWQgY2hhbmdpbmcgTmV3VHlwZWRBcnJheSBpbiBh
bGwgb2YgTExJbnQvQmFzZWxpbmUvREZHL0ZUTCB0byBhY2NlcHQgYSBub24taW50MzIgc2l6ZS4K
KyAgICAgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zLCBJ
IGhhZCB0byBhZGQgc3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwsIHdoaWNoIG5vdyBoYXZlIHR3
byB2ZXJzaW9ucyBvZiBOZXdUeXBlZEFycmF5IChvbmUgdGhhdCB0YWtlcyBhbiBJbnQzMiBhbmQg
b25lIHRoYXQgdGFrZXMgYSBTdHJpY3RJbnQ1MikKKyAgICAgICAgLSBTaW1pbGFybHksIEdldEFy
cmF5TGVuZ3RoIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCBub3cgY2FuIGVpdGhlciByZXR1
cm4gYW4gSW50MzIgb3IgYSBsYXJnZXIgbnVtYmVyLgorICAgICAgICAgICAgSSBhbHNvIGhhZCB0
byBzcGxpdCB0aGVtIGluIHRoZSBERkcvRlRMLCBzZWUgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIgYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBmb3IgZXhhbXBsZXMKKyAgICAg
ICAgLSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMy
IGluZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4
aW11bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVk
IGEgIm1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJy
YXlQcm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQz
MiBpbmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxp
emF0aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4g
dXBkYXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBj
b3JyZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9m
IHRpbWUgdG8gYWRkIHRoZXNlIHNwZWN1bGF0aW9ucy91cGRhdGUgdGhlIGZhc3QgcGF0aHMuCisg
ICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVw
IHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBh
dGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGlu
ZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBo
aWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBw
YXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBjdXJy
ZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZv
cm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBh
dGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRy
ICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisg
ICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMg
Y2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2gg
aXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRp
ZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBv
ZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkK
KyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQg
d2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50
cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6
OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6
YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0
aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJM
ZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGlu
ZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRl
Y29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlC
ZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJn
ZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmls
ZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fy
cmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0
aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJy
YXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
R2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpT
Qzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RvcmFnZUNoaWxkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpzdG9yYWdlQ2hpbGRJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzQXJyYXlNb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5
UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudEFycmF5Q2hlY2tzKToKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1p
dE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQu
aDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ2NE5vbk5lZ2F0aXZlKToKKyAgICAg
ICAgKiBqaXQvSW50cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpn
ZXRCeVZhbCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29u
dGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
OjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXggY29u
c3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyQ29udGVudHM6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
Z2NTaXplRXN0aW1hdGVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJW
aWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJWaWV3OjpjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXJWaWV3OjpzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRS
YW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCk6CisgICAgICAg
IChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpEYXRhVmlldzo6RGF0YVZpZXcpOgorICAg
ICAgICAoSlNDOjpEYXRhVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3
Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcpOgor
ICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSk6CisgICAgICAgIChK
U0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZp
ZXc6OnNpemVPZik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmll
dzo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvSW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRl
eCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAg
IChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJ
bmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChK
U0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoK
KwogMjAyMS0xMC0xMSAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
SlNDXVtBUk12N10gTWFrZSBMTEludCBDU1Igc2F2ZS9yZXN0b3JlIG9yZGVyIG1hdGNoIHRoZSBK
SVRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggNDNmNzg0YTRhYjkzLi5lYzMy
YjcyMjFjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yOTgsOSArMjk4LDkgQEAgcHVibGljOgog
ICAgIC8vIGluIGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRl
ciB0byBkaWZmZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRl
IGFkZHJlc3NlcyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRy
IDogcHVibGljIFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAg
ICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBj
b25zdGV4cHIgVHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDog
bV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMTEsMjEgKzMxMSwyMSBA
QCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0
ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVz
dGVkSW1tUHRyKHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRy
X3QgYXNJbnRwdHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0
cigpCisgICAgICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzM1
LDEyICszMzUsMTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1
c3RlZEltbVB0cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZh
bHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVl
KQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0
aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigp
IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTM1
OCw3ICszNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAg
ICAgICBleHBsaWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAg
ICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAt
MzY5LDE3ICszNjksMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRl
IFRydXN0ZWRJbW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisg
ICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAg
ICAgOiBUcnVzdGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUo
WDg2XzY0KQotICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAg
ICAgOiBUcnVzdGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAg
ICAgICBjb25zdCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4g
KnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVk
SW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwx
NSArMzkwLDE1IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFu
IGVudW0pIGZyb20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0
ZSB2YWx1ZXMuCiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAg
ICBUcnVzdGVkSW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsg
fQogICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkK
ICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNp
ZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDA5LDE3ICs0
MDksMTcgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1t
NjQKICAgICB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBU
cnVzdGVkSW1tNjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQp
IHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRy
dXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsK
ICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVk
SW1tNjQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3Qg
VHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAg
ICAgfTsKICAgICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVy
IGhhbmRsZXMKQEAgLTEwODYsOSArMTA4Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAg
ICAgfQotICAgIHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBz
dGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50
NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxp
bmQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAg
ICBmcmllbmQgY2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGQ3ZmUzYTgxZTM0MS4uZTY3NjdjNmE5
YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCkBAIC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikg
fHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmxzaGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAg
ICB9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUo
WDg2XzY0KSAmJiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgc3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0j
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQp
IHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJ
bW0zMigpKTsKICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBw
bGF0Zm9ybXMgZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25h
bENvbmRpdGlvbiwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJp
Z2h0IGZpbGUuCisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2
XzY0LmgsIGJlY2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRD
b25zdGFudCwgZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUu
CisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgSW1tNjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQp
KSB7CisgICAgICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsK
KyAgICAgICAgICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGlu
ZENvbnN0YW50KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJs
aW5kaW5nKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBo
YXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAg
ICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1
aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BD
b3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsK
KyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAppbmRleCA0MjUwOTAzYmMzMjIuLjE3OTZiNjUxYmM0MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0
NCw4ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxp
bmtSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVh
c29uYWJsZSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxk
QmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4
MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBA
IC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJh
bmNoKGNvbmQpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRD
YWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5k
ZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4MmQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCAr
MTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFy
Z2V0LCBib29sIHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJh
eVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxp
ZGF0ZUF1dGgpCiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVu
Z3RoR1BSKTsKKyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0
byBzY3JhdGNoID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihs
ZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0MDE3Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBS
ZWdpc3RlcklEIHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVn
aXN0ZXJzOjplYnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMy
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgp
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRG
b3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZm
ZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAg
IC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li42
MmQ1NGE2M2RmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKQEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRj
aEZQUigpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1
c3RvbVZhbHVlU2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2Fz
ZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAg
ICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNz
Q2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5
VWludDMyU3RvcmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlw
ZWRBcnJheUxlbmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hp
bmcgdGhlaXIgcmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTE5MSwxMiArMTE5MiwxOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlH
UFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0
Y2hHUFIpOwotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMy
KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOwor
ICAgICAgICAvLyBBbGwgb2YgdGhpcyBjb2RlIGlzIGEgYml0IG1lc3N5IHdpdGggbGVuZ3RoIGFu
ZCBwcm9wZXJ0eSB0YWtpbmcgdHVybnMgYmVpbmcgaW4gc2NyYXRjaEdQUiwgYnV0IEkgZG9uJ3Qg
c2VlIGFueSBzaW1wbGVyIHNvbHV0aW9uIHdpdGhvdXQgcmVxdWlyaW5nIHNvbWUgZXh0cmEgc2Ny
YXRjaCByZWdpc3RlcnMuCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZM
ZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVy
dHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICAvLyBUaGUg
bGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRp
bmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBh
ZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwpAQCAtMTIxMSw5ICsxMjE4LDEzIEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPSBhbGxvY2F0b3IucHJlc2Vy
dmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoCiAgICAgICAgICAgICBqaXQsIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogCisjaWYgQ1BV
KFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNo
R1BSKTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNo
R1BSKTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQ
Uik7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAg
ICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRTaXpl
KHR5cGUpKSB7CkBAIC0xNjMwLDkgKzE2NDEsMTUgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZVdpdGhHdWFyZCgKICAgICAgICAgICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBP
dXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRp
b24gZnVuY3Rpb24uCi0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BS
KSk7CisgICAgICAgIC8vIEFsbCBvZiB0aGlzIGNvZGUgaXMgYSBiaXQgbWVzc3kgd2l0aCBsZW5n
dGggYW5kIHByb3BlcnR5IHRha2luZyB0dXJucyBiZWluZyBpbiBzY3JhdGNoR1BSLCBidXQgSSBk
b24ndCBzZWUgYW55IHNpbXBsZXIgc29sdXRpb24gd2l0aG91dCByZXF1aXJpbmcgc29tZSBleHRy
YSBzY3JhdGNoIHJlZ2lzdGVycy4KKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3NPZkxlbmd0aCA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSk7CisgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8v
IFRoZSBsZW5ndGggaXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRl
cGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFw
cGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIs
IGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2gu
YXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlH
UFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CkBAIC0xNjQ4LDkgKzE2NjUsMTMgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5w
cmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNp
ZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChhZGRyZXNzT2ZMZW5ndGgsIHNj
cmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgaml0LmxvYWQzMihhZGRyZXNzT2ZMZW5ndGgsIHNj
cmF0Y2hHUFIpOworI2VuZGlmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHNjcmF0
Y2gyR1BSKTsKICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsIGZhbHNlKTsK
LQogICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIp
OwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKICAgICAgICAgICAgIGlmIChpc0NsYW1wZWQo
dHlwZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUu
aAppbmRleCA2OTE2Nzk0ODQzYjAuLmJlZTdhOWZjZGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBV
bmxpbmtlZEFycmF5UHJvZmlsZTsKIAogLy8gVGhpcyBpcyBhIGJpdGZpZWxkIHdoZXJlIGVhY2gg
Yml0IHJlcHJlc2VudHMgYW4gdHlwZSBvZiBhcnJheSBhY2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4u
CiAvLyBUaGVyZSBhcmUgMTkgaW5kZXhpbmcgdHlwZXMgdGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMu
Ci0vLyBUaGVyZSBhcmUgOSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYgdG8g
MjUuCisvLyBUaGVyZSBhcmUgMTEgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2
LTIwIGFuZCAyNi0zMS4KIHR5cGVkZWYgdW5zaWduZWQgQXJyYXlNb2RlczsKIAogLy8gVGhlIHBv
c3NpYmxlIEluZGV4aW5nVHlwZXMgYXJlIGxpbWl0ZWQgd2l0aGluICgwIC0gMTYsIDIxLCAyMywg
MjUpLgpAQCAtMjA1LDcgKzIwNSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kaWRQZXJmb3Jt
Rmlyc3RSdW5QcnVuaW5nKGZhbHNlKQogICAgIHsKICAgICB9Ci0gICAgCisKKyNpZiBDUFUoUkVH
SVNURVI2NCkKKyAgICAvLyBBY2Nlc3NpbmcgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIHRoYXQg
dGVuZHMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCBhcyB3ZSBjYW4ndCBmb3JjZSBjb252ZXJ0IGV2
ZXJ5dGhpbmcgdG8gaW50MzJfdC4KKyAgICAvLyBXZSBvbmx5IHN1cHBvcnQgc3VjaCBsYXJnZSB0
eXBlZCBhcnJheXMgb24gNjQtYml0IHBsYXRmb3Jtcy4KKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCk7CisgICAgdm9pZCBzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXk7IH0KKyNlbHNlCisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
ICAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJu
ICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJh
eU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRk
cmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAt
MjQ0LDYgKzI1NCw5IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVj
dHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRo
aXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBj
YXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVw
ZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkg
anVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRo
aXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMu
CiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9OworI2VuZGlmCiAgICAg
Ym9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1GaXJzdFJ1
blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NiwxMyBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihB
cnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGUgewogcHVi
bGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyh0cnVlKQorI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICAsIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoZmFsc2UpCisjZW5kaWYKKyAgICB7CisgICAgfQogCiAgICAgdm9pZCB1cGRh
dGUoQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGUpCiAgICAgewpAQCAtMjgwLDYgKzI5OSwxMyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXMgPSBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVj
dHVyZXM7CisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5
cGVkQXJyYXkpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJh
eSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJy
YXkgPSBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheTsKKyNlbmRpZgogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTI5MCw3ICszMTYsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5
U3RvcmVUb0hvbGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1f
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAg
ICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fz
c2VydChzaXplb2YoVW5saW5rZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAyYjJmNWUwMzAxOWYuLmY1YjdmMmI2ODlkMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMzQ2Myw3ICszNDYzLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZm
ZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAg
ICAgIGlmICh2aWV3KSB7CisgICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4o
dmlldy0+bGVuZ3RoKCkpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJl
cih2aWV3LT5sZW5ndGgoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0
NzEsNiArMzQ3MSwxNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1v
ZGUoKSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAg
ICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAg
YnJlYWs7CkBAIC0zNzk2LDggKzM4MDcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZp
ZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlKTsKICAgICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5
KCk7Ci0gICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDxVQ1BVUmVnaXN0ZXI+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVu
dGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+
KGJ5dGVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1i
ZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTM4MDYsNiArMzgxNywxOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjog
eworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFi
bGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmll
dykgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGJ5dGVPZmZzZXQg
PSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9m
ZnNldCkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRl
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAg
ICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYm
IHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4
IDZlMjc1MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMy
NSw2ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShu
b2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNo
b3VsZCBub3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAg
ICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7
CiAgICAgICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVj
dG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1l
V2F0Y2hwb2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChu
b2RlKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXgg
NmU0ZmU5YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2Rl
OjpyZWZpbmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0
aW9uKCkpOwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkp
CisgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRB
cnJheSgpKQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24o
KSk7CiAgICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBv
YmplY3QgYmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiAr
Mjk0LDggQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZs
b2F0NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJy
YXk6OkJpZ1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25s
eSBwcmVzZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFu
ZCBub3QgR2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRC
eVZhbCkgewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5k
cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFh
ZDE4OTNiLi5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRl
OworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9
CiAgICAgCiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpB
Y3Rpb24gYWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5
dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29u
dmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9u
OworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9
CiAgICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJh
eUNsYXNzLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1Ymxp
YzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAg
ICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0
ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJy
YXkgPSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUs
IEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24s
IEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAg
IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJy
YXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9u
LCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNl
KQogICAgIHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0
ZXMuYXJyYXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlv
biA9IHNwZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNp
b247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRl
cy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAg
ICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xh
c3MsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpA
QCAtMTYzLDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9u
ID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZl
cnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNC
eXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJh
eTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUu
YXNCeXRlcy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6
U3BlY3VsYXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJh
eTo6U3BlY3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29u
dmVyc2lvbiBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNv
bnZlcnNpb24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVz
LmFjdGlvbik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1
cm4gdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQg
YXNXb3JkKCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1
LDUwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2Jz
ZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFj
dGlvbiwgYm9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJy
YXk6OlR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBt
YXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1
bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBj
b252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCks
IGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJl
TGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5
Q2xhc3MoQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0
aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigp
LCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBl
KCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9k
ZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNp
b24gY29udmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5
QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNs
YXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJy
YXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VU
eXBlZEFycmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3Bl
Y3VsYXRpb247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBz
cGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkp
OworICAgIH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9t
UHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBw
cm9maWxlLCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAg
ICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAg
IHJldHVybiBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1h
eVN0b3JlVG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6
OlRvSG9sZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAK
LSAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAg
ICAgIHJldHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2Rl
IHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9j
a2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJv
ZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9m
aWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15
QXJyYXlDbGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlm
IChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0
c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5
TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyAr
MjQyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6
QXJyYXk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlD
bGFzcygpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlD
bGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2Fm
ZSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBl
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNz
KCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAK
LSAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
bikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAg
Ci0gICAgQXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBB
cnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24s
IGFjdGlvbigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBz
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAg
ICAgIGJvb2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXko
bG9ja2VyKTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFu
ZE1heUJlTGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlw
ZWRBcnJheSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgdW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyAr
NTM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQog
ICAgICAgICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAg
ICAgICAgJiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAg
ICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYg
Y29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVM
YXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0K
ICAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QK
QEAgLTU3OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNs
YXNzOwogICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4
X3QgY29udmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAg
ICAgICAgICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFy
Z2VUeXBlZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBh
c1dvcmQ7CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLjAzNGJkZDY2MTUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcs
OCArMzgwNywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUq
IGNhbGxUYXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRl
cihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlW
YXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQogeworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHN0YXRpY19hc3NlcnQoZW5h
YmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkg
ewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAgICAgICAgYm9v
bCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIUNQVShSRUdJU1RFUjY0KQorICAg
ICAgICBpZiAod2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MikKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAg
ICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkp
LT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzgyMiwyNiArMzgzMSwz
MCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCBy
ZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlw
ZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIE5vZGUqIGxlbmd0
aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBOb2RlVHlw
ZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPyBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MiA6IEdldEFycmF5TGVuZ3RoOworICAgICAgICBOb2RlKiBsZW5ndGhOb2Rl
ID0gYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFk
KS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKICAgICAgICAgLy8gT3VyIEFycmF5TW9kZSBzaG91bGRu
J3QgY2F1c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0byBleGl0IHdpdGhv
dXQgZWZmZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAgICAgICAgIHNldChy
ZXN1bHQsIGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IAotICAgICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBh
cnJheXMgd2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAvLyB0aGF0IG92ZXJm
bG93cyBpbnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25zdGFudChqc051bWJl
cihsb2dTaXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhCaXRMU2hp
ZnQsIGxlbmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBjYW5ub3QgdXNlIGEg
Qml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUgYSBieXRlTGVuZ3Ro
IHRoYXQgb3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6ZSA9IGpzQ29uc3Rh
bnQoanNOdW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3Jh
cGgoQXJpdGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisgICAg
ICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA9ICFpc0ludDMyU3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpOworI2lmICFDUFUoUkVHSVNURVI2
NCkKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAK
ICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5i
ZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTMsMTMg
KzM4NjYsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9w
ZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChh
cnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQo
cmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5
cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRk
VG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9CiAKICAg
ICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2ls
bE5lZWRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKFJFR0lTVEVSNjQpCisgICAg
ICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2lu
KCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkw
LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5
cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFy
cmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9k
ZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAg
ICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlw
ZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IGE4ZGQzZmRlOTc3OS4uNzQ5MjA1ZDY0ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNl
IFB1dEJ5VmFsRGlyZWN0OgpAQCAtMTMzNyw2ICsxMzM4LDExIEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2Ms
IE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICBy
ZXR1cm47CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyAgICAg
ICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5
Qnl0ZU9mZnNldEludDUyTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2Rl
KG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewog
ICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNl
IEFycmF5VXNlOgpAQCAtMTQ0NCw2ICsxNDUwLDE0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHJl
YWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUxlbmd0
aEludDUyTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAg
ICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CiAgICAgICAgIHN3aXRj
aCAobW9kZS50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCmluZGV4
IGM2NmZiMjIzOWY4Zi4uYWZkYzEwYThhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgKQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIGJvb2wgdmFsaWRhdGlvbkVuYWJsZWQo
KQogI2VuZGlmCiB9CiAKLWlubGluZSBib29sIGVuYWJsZUludDUyKCkKK2lubGluZSBib29sIGNv
bnN0ZXhwciBlbmFibGVJbnQ1MigpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1
NDdhOTcuLjVhYmRlZTg2NzVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcApAQCAtMTk3LDEwICsxOTcsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
ICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAg
ICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2Ug
R2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9m
ZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4
IDhlMWI5M2VlZTZjYS4uZjBjMWI2MDVkZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0
aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmlj
KCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygp
CisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlw
ZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAg
Tm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsx
MDc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7
CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5
IHNlZW4gT3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hv
dWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShB
cnJheTo6R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0
LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4o
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBj
YXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJh
eToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNl
IEFycmF5OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQx
NkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9h
dDY0QXJyYXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzEx
OTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVj
dWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5h
cnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJy
YXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJh
eU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFt
X2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAK
ICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKApAQCAtMTcxNywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFk
VGltZShub2RlKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3Mo
Tm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkp
IHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJh
eU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUs
IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVj
dWxhdGVkVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJy
YXlWaWV3KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7Cisg
ICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5v
ZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdl
PEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjogewor
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisjZWxzZQorICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
OiB7CiAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC00MDk2LDE0ICs0MTM1LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIAogICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQot
ICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRBcnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwg
Tm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJheU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBz
dG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1vZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxl
bmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5
TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
RWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAg
dm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0
OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0
YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcgY29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3Zp
ZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhlciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0
ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxl
ZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQgaWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQot
Ly8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxl
ZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBtYXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5
cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFs
dWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNr
cyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhh
dCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlzIGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVy
cyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1heSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRp
b25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNw
cAppbmRleCAyYmI5ZDRiZWE4MDAuLjA2NjFlNWI4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAg
ICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MiKTsKICAgICAgICAgcmV0dXJu
OwogCisgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jOgorICAgICAgICBvdXQu
cHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgi
VHlwZWRBcnJheUxlbmd0aEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2Ug
UHJvdG90eXBlTG9jOgogICAgICAgICBvdXQucHJpbnQoIlByb3RvdHlwZUxvYyIpOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApp
bmRleCAyNjkxNzFjYjM0MWQuLjQwZmI3MTY3MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02Nyw2ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25L
aW5kIHsKICAgICBTZXR0ZXJMb2MsCiAgICAgU3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlC
eXRlT2Zmc2V0TG9jLAorICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsCisgICAgVHlw
ZWRBcnJheUxlbmd0aEludDUyTG9jLAogICAgIFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywK
ICAgICBTdGFja1BheWxvYWRMb2MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFi
YWExYzhiY2Y1MS4uYjNiMTQ1YTkxMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApA
QCAtMTQ5OSw2ICsxNDk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgICAg
ICBzZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25zaGlwKG5vZGUsIG1femVybywgUmVsYXRpb25zaGlw
OjpHcmVhdGVyVGhhbiwgLTEpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCAyYWY3OTcwNjhhOWMuLjBiYTdiOWZmM2ViYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTY1LDYgKzE5NjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKICAgICAgICAgY2FzZSBFbnVt
ZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZToKICAgICAgICAgY2FzZSBBcnJheUluZGV4T2Y6
CkBAIC0yMDA0LDYgKzIwMDUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgY2FzZSBBcnJheVBvcDoK
ICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgIHJldHVybiAyOwogCiAgICAgICAgIGNhc2UgSGFz
SW5kZXhlZFByb3BlcnR5OgpAQCAtMjI3Niw2ICsyMjc4LDcgQEAgcHVibGljOgogICAgICAgICBz
d2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2Fz
ZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDlhOTBhNGNmZGFjOC4uMDA2NmY3YjAyNjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNjEsOCArMjYxLDEx
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aVB1dEJ5
T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNl
dCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5
TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQg
Zm9yIFR5cGVkQXJyYXlzLCBhcyB0aGV5IGFyZSB0aGUgb25seSBvbmVzIHRoYXQgY2FuIGhhdmUg
YSBsZW5ndGggdGhhdCBkb2VzIG5vdCBmaXQgaW4gMzIgYml0cy4gKi8gXAorICAgIG1hY3JvKEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhH
ZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFNjb3Bl
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTUw
N2YxZTgwYWMwLi5iM2YyYmI3YTkxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcApAQCAtOTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUg
dm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFs
dWUKICAgICB9CiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRJbmRleFF1aWNrbHkoaW5kZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRy
eVNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQogCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTE3NSw3ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5
VmFsQ2VsbFN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50MzJfdCBzaXplLCBjaGFyKiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNp
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ1BVUmVnaXN0ZXIgc2l6ZSwgY2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTgzLDExICsxODEsMTMgQEAgY2hhciog
bmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgU3RydWN0dXJlKiBzdHIKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlz
IG5lZ2F0aXZlIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwor
ICAgIFVDUFVSZWdpc3RlciB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+
KHNpemUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
aGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3Is
IHVuc2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lz
ZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
c2l6ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFy
Kj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6
ZSkpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA4LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0NlbGwq
LCAoVk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MjQsNyArMTkyNCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJl
Z2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBl
bmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwg
Y2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
MTk3Miw3ICsxOTcyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhD
bGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFt
cGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6
bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Q1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjAsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMy
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
UFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Miw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9h
dDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6
bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
SW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsyMDY4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDM5M2RlODg1MDcwNy4uOGY5
NmVjMGIwN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApA
QCAtMTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVj
dHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRl
cmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
LCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpT
VmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFt
cGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQz
Ml90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQ
VVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpT
VmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMy
X3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBD
UFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yLCBKU0Nl
bGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDIwZDA0
NGY1ZjVjMC4uZDVmMGZmY2RmNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg2LDYg
Kzk4NiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihT
cGVjSW50NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBj
YXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsK
ICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uMTk5
ZjZjYzNiMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaApAQCAtMzczLDYgKzM3Myw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2Fz
ZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBT
dHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
IAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICBy
ZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBl
ZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NDk0NTRjODdkZGZlLi5iMzg4Y2UzMmYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4ICszMjM4LDQyIEBAIHN0YXRp
YyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcg
cmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVK
SVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpq
dW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewogICAgIGlmIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwog
ICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJs
ZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUs
IDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAg
ICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIFVDUFVSZWdpc3Rl
ciBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9q
aXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUt
PmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAg
ICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNV
SW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgp
OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihp
bmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2ppdC5i
cmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisKKyNp
ZiBDUFUoUkVHSVNURVI2NCkKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwg
c2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vu
ZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2so
Tm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7Ci0gICAgSklUQ29t
cGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFz
ZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlw
ZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoR1BSKTsK
ICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwpAQCAtMzM4
MCwxNyArMzM5NCwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbklu
dFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5
UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3M7CiAgICAgRGF0YUZvcm1hdCBmb3JtYXQ7CiAgICAgc3RkOjp0aWUo
cmVzdWx0UmVncywgZm9ybWF0KSA9IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wg
c2hvdWxkQm94ID0gZm9ybWF0ID09IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFy
cmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwog
ICAgIGxvYWRGcm9tSW50VHlwZWRBcnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0
UmVncy5wYXlsb2FkR1BSKCksIHR5cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0
ZSA9IHRydWU7CiAgICAgc2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVn
cywgdHlwZSwgY2FuU3BlY3VsYXRlLCBzaG91bGRCb3gpOwpAQCAtMzU0OCw2ICszNTY0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShHUFJS
ZWcgYmFzZSwgR1BSUmVnIHByb3BlcnQKICAgICBBU1NFUlQoaXNJbnQodHlwZSkpOwogICAgIAog
ICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGls
ZChub2RlLCAzKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2ggKHRoaXMpOwogICAgIEdQUlJl
ZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0g
bV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKQEAgLTM1ODAsNyArMzU5Nyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BS
UmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFs
dWVHUFIgIT0gcHJvcGVydHkpOwogICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBB
U1NFUlQodmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0
T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3Bl
cnR5KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFy
cmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAg
ICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgMToKQEAgLTM2MzgsMTAg
KzM2NTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5
cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1
bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAg
ICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9
IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsK
KyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzOwogICAgIERhdGFGb3JtYXQgZm9ybWF0OwpAQCAtMzY0OSw3ICszNjY4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXko
Tm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKIAogICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BS
KTsKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAg
ICBtX2ppdC5sb2FkRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0z
NjgzLDEwICszNzAyLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAg
RlBSUmVnIHZhbHVlRlBSID0gdmFsdWVPcC5mcHIoKTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9
IHNjcmF0Y2guZnByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7
CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFy
cmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBi
YXNlLCBwcm9wZXJ0eSwgc2NyYXRjaEdQUik7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6
ZSh0eXBlKSkgewogICAgIGNhc2UgNDogewpAQCAtNzk2MCw3ICs3OTgxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcg
c3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYg
Q1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJh
eVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURf
UEFSQU0oYmFzZVJlZyk7CkBAIC04MDMyLDkgKzgwNTMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIo
KTsKICAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIg
IT0gdmVjdG9yR1BSKTsKLSAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NF
UlQodmVjdG9yR1BSICE9IGRhdGFHUFIpOwogCiAgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0g
ZGF0YUdQUjsKIApAQCAtODA3Niw2ICs4MDk0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKiBub2RlKQogICAgIG51bGxWZWN0b3Iu
bGluaygmbV9qaXQpOwogI2VuZGlmCiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBBSSBw
cm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBi
ZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3Vs
YXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50
MzJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0MiwxMiArODM2NSwxOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxv
dywgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxl
cjo6QWJvdmUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgcmVzdWx0R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTEy
LDEwICsxMTE0MSwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5
cGVkQXJyYXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2pp
dC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0
cnVjdHVyZS5nZXQoKSk7Ci0gICAgCisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBUaGUg
b3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIs
IHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRmb3JtcwogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7Ci0gICAgCisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRy
KHNpemVHUFIsIHNjcmF0Y2hHUFIpOworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJl
Z2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIpOworI2Vs
c2UKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworICAgIGVtaXROZXdUeXBlZEFycmF5
V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVH
UFIpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5
V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlU
eXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0
aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTI5LDggKzExMTcy
LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUo
Tm9kZSogbm9kZSkKICAgICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IHN0b3JhZ2VHUFIpOwogCisjaWYgVVNFKFJFR0lTVEVSNjQpCisgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BS
LCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAg
Ly8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBz
aXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50
MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKyNlbHNlCiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGlt
aXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIp
OwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFy
cmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTg2LDkgKzExMjM2LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAg
ICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0
b3IoKSkpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIG1faml0LnN0b3JlNjQoCisgICAgICAg
IHNpemVHUFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3Rv
cmUzMigKICAgICAgICAgc2l6ZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlm
CiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgVHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5
KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAgLTE0MTYwLDYgKzE0MjE2LDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBJbnQzMlVzZToKICAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsK
ICAgICAgICAgYnJlYWs7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVz
ZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAg
ICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFs
dWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjY1MTVkOGI3MjE5
Li5kZWI5YTkzMDdjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29t
cGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCBy
YWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRB
cnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5
V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29t
cGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9p
ZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2
ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSop
OwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIENQVShSRUdJ
U1RFUjY0KQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUq
KTsKKyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0MzEsMTAgKzE0MzgsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUFyaXRoTWluTWF4KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBq
dW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
IGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUik7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFj
aGVkSWZPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1w
IG91dE9mQm91bmRzKTsKLSAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSos
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOworICAgIHZvaWQgZW1pdFR5cGVkQXJy
YXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BS
UmVnIHNjcmF0Y2hHUFIpOwogICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
KE5vZGUqKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0
QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRM
YW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVm
ZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5
cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlU
eXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBU
eXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3Ms
IERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0y
NDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07
CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRl
ZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIg
KGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3Bl
Y3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZh
bGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2Fk
IGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4K
Ky8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUg
bG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVj
dWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKaW5kZXggNmEwZjI1MjBlYTM3Li5iMzY1OWJhMDI5MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAg
Y29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCku
aXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBu
b2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlw
ZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlw
ZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgor
ICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdC
IG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNv
bXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFBy
b3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGUxMzVmZDUzNDhlOC4uOTVk
MGNmMzlmMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNjk0LDYgKzI2OTQsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1
cGxlPEoKICAgICB9IH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXlXaXRoSW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBl
KCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJl
Z2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJl
bnRseSh0eXBlZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQo
KSk7CisKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVj
dHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5v
ZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlf
QlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6
ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdElu
dDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJU
ZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2
ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BS
UmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVt
cHR5Qnl0ZU9mZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0
ZWZ1bFR5cGVkQXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0
b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5j
aFB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5
QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IGRhdGFHUFIpOworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1Zh
bHVlLCBkYXRhR1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0
b3JHUFIpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRh
R1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsK
KyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRh
dGEoKSksIGRhdGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQ
dHJUYWcoZGF0YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0
b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKwor
I2lmIENQVShBUk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAg
ICBlbXB0eUJ5dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihudWxscHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lm
ICFDUFUoQVJNNjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQ
dHIoKSk7CisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmlj
dEludDUyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBA
IC0zNjQ0LDExICszNzIyLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
YmFzZUVkZ2UpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhp
cywgaW5kZXhFZGdlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2g7CiAKICAgICAgICAg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CiAg
ICAgICAgIAotICAgICAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIs
IGluZGV4R1BSKTsKKyAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNl
R1BSLCBpbmRleEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIAogICAgICAgICBHUFJUZW1w
b3JhcnkgYXJnc1syXTsKICAgICAgICAgCkBAIC00Mzc1LDYgKzQ0NTQsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlM
ZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MjoKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKG5v
ZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBj
b21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDkzLDYgKzQ1NzYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjog
eworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAg
ICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTgw
LDEwICs1NjY4LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
IAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisj
aWYgVVNFKFJFR0lTVEVSNjQpCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGluZGV4
R1BSLCB0Mik7CisjZWxzZQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhH
UFIsIHQyKTsKKyNlbmRpZgogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAg
ICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0g
ICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0
LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFu
Y2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNTc4MSwx
MCArNTg3MywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBpc0xpdHRsZUVuZGlhbk9wZXJhbmQuZW1wbGFjZSh0aGlzLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDMpKTsKICAgICAgICAgR1BSUmVnIGlzTGl0dGxlRW5kaWFuR1BSID0g
aXNMaXR0bGVFbmRpYW5PcGVyYW5kID8gaXNMaXR0bGVFbmRpYW5PcGVyYW5kLT5ncHIoKSA6IElu
dmFsaWRHUFJSZWc7CiAKKyNpZiBVU0UoUkVHSVNURVI2NCkKKyAgICAgICAgbV9qaXQuc2lnbkV4
dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQyKTsKKyNlbHNlCiAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvV29yZChpbmRleEdQUiwgdDIpOworI2VuZGlmCiAgICAgICAgIGlmIChkYXRhLmJ5dGVT
aXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVT
aXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQx
KTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0
MSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVj
a0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA1ZjUxZjIyNTEwNGYuLmUxMGQ2MmU0MjdkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwCkBAIC0yNzksMTAgKzI3OSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgog
ICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNr
QXJyYXk6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICAgICAg
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAg
ICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdl
dEJ5T2Zmc2V0OgpAQCAtMzU5LDYgKzM2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAg
ICAgICAgICAgY2FzZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4uNzRmZTg5NTI2ZGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNzAsNiAr
MTcwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgTnVrZVN0cnVjdHVy
ZUFuZFNldEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90
eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKQEAg
LTM5MSw2ICszOTIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgogICAgIGNhc2Ug
Q1BVSW50cmluc2ljOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNl
IEdldEJ5VmFsOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyYWRkZmY3N2IwMzUuLjA2NDQz
YTNjOWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtMTAyNSw2ICsxMDI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsKICAgICAgICAg
ICAgIGJyZWFrOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgwLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAg
ICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoKTsKKyNlbHNlCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICAgICAgICAgIGNvbXBp
bGVHZXRQcm90b3R5cGVPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00ODI4LDkgKzQ4NDAs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1fb3V0LmxvYWRQdHIoY2Vs
bCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKSk7CiAgICAgfQogCi0gICAgdm9p
ZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIExWYWx1ZSBlbWl0R2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIExW
YWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsgICAgCisgICAgICAgIExW
YWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKIAogICAgICAgICBMQmFz
aWNCbG9jayB3YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNC
bG9jayBub3ROdWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQ4NDYsNyArNDg1OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8od2Fz
dGVmdWxDYXNlLCBub3ROdWxsKTsKIAogICAgICAgICBMVmFsdWUgdmVjdG9yID0gbV9vdXQubG9h
ZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJy
YXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwgCisgICAgICAgIG1fb3V0LmJyYW5jaCht
X291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3Ojpu
dWxsVmVjdG9yUHRyKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1
cmUobm90TnVsbCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bGwsIGNvbnRpbnVh
dGlvbik7CkBAIC00ODY2LDkgKzQ4NzgsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKIAotICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihtX291dC5waGko
cG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQpKSk7CisgICAgICAgIHJl
dHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQp
OwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRF
eGNlcHRTZXR0aW5nUmVzdWx0KCk7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8vIEFJ
IHByb21pc2VzIHRoYXQgdGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxs
IGJlIEludDMyLCBzbyB3ZSBtdXN0IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAg
c3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVh
bChyZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkpKSk7CisjZW5kaWYKKyAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIocmVz
dWx0KSk7CisgICAgfQorI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAg
ICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBj
b21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsK
QEAgLTUwNTQsOCArNTA4Myw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJy
YXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUg
bGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwo
bGVuZ3RoLCBtX291dC5jb25zdEludDY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpKSkpOworICAgICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKGxlbmd0
aCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtNTA2NCw2ICs1MDk0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3
KCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlR2V0VmVjdG9yTGVu
Z3RoKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkp
IHsKQEAgLTgxNjksOTggKzgyMDYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVz
ZTogewogICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1
cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFs
bEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sg
c2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8p
OworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAg
ICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2Up
LCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0g
ICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNobCht
X291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5
cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlU
eXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3
KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxp
bnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFs
dWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3Rv
cmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAg
ICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2Fz
dFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAg
ICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50
eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsK
LSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBh
dGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5h
cHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdp
c3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1z
WzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1sy
XS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0K
LSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0
b3JhZ2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsK
LSAgICAgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJS
QVlfVFlQRV9DQVNFKG5hbWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0g
ICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUj
I0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9F
WENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UKLSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAg
ICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVh
cHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIo
c2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJy
YXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwot
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgZW1pdE5l
d1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsK
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0g
ICAgICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dT
dHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1Bh
dGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxv
Y2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRB
cnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUu
Z2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBo
aShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBl
bWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQorI2VuZGlm
CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKIApAQCAtODI3Nyw3ICs4MjM3LDEwMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAor
CisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVk
QXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNC
bG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNC
bG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sg
bm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAgIG1f
b3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNv
bnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAg
IHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNs
b3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZh
c3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGlj
X2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxp
bWl0KSk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNo
bChzaXplNjRCaXRzLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlU
eXBlKSkpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgewor
ICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9v
dXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9
CisKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmlt
aXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAg
ICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7
CisKKyAgICAgICAgc3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAg
ICBtX291dC5pbnQzMlplcm8sCisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5s
U2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQu
aW50NjRaZXJvLAorICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisK
KyNpZiBDUFUoQVJNNjRFKQorICAgICAgICB7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUq
IGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAg
ICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAg
ICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6VmFs
dWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0
R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdw
cigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihw
YXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwor
CisgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0
Y2ggKHR5cGVkQXJyYXlUeXBlKSB7CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1l
KSBcCisgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0
VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQu
aW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9S
X0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZ
UEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBl
RGF0YVZpZXc6CisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxK
U0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAg
ICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RS
ZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBt
dXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0
LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9T
dG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAg
ICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAg
IFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxM
YXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVM
YXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlw
ZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJl
Y3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigp
LAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVl
KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0
LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgp
CiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKQEAgLTE0NjU2LDYgKzE0NzA5LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAor
ICAgIC8vIGJhc2UgYW5kIHZhbHVlIGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1i
aXRzCisgICAgLy8gc3RvcmVzIHZhbHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJh
c2UrYmVnaW4qOCBhbmQgYmFzZStlbmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFz
ZSwgTFZhbHVlIGJlZ2luLCBMVmFsdWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0
SGVhcCYgaGVhcCkKICAgICB7CiAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0
ID0gMTA7CkBAIC0xNTU5MSw3ICsxNTY0Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZp
ZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1ZSBs
ZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUgbGVu
Z3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnpl
cm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAg
ICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdElu
dDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNTczNCw3ICsxNTc4OSw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwog
Ci0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5v
bk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOwor
ICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcs
IG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgTFZhbHVlIGluZGV4
VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRl
U2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0No
ZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsx
NzI5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0gWyZdKExW
YWx1ZSB0YWdnZWRQdHIpIHsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYgKGtpbmQg
PT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSkgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQ2NChiYXNlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVudGFnQXJy
YXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
biBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBhOTQyMDA5M2Y1
MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCkBA
IC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBub25OZWdhdGl2ZTMyKExWYWx1
ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsgfQogICAgIExWYWx1
ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZDMy
KHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBj
b25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIoYmFzZSwgZmllbGQpOyB9
CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFj
dEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQpOyB9CiAKICAgICBMVmFs
dWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUsIExW
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0Vt
aXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNw
cAppbmRleCBmNzg2Zjc2NTFhNjAuLjVkMmM2YzQwMjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODMsMjMgKzgzLDMyIEBAIHZv
aWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJpbnNpYygpKSB7CiAgICAg
Y2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAg
IGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRl
LnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHZhbHVlR1BSKTsKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3Mp
OworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAgICAg
VHlwZWRBcnJheVR5cGUgdHlwZSA9IHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJh
eVN0b3JhZ2VUeXBlOwotCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5sb2FkNjQo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0
eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1l
bnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIs
IHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAg
ICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAg
ICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkgewotICAgICAgICAgICAgLy8gV2UgY2FuIHVz
ZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxl
bmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KLSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2
YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAg
ICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSBvbiAzMi1iaXQgcGxhdGZv
cm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4g
aW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRT
aXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAgICB9Ci0KICAgICAgICAgaml0LmJveEludDMy
KHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMCw4ICsxMzksMTIgQEAgdm9pZCBJbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFs
dWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAKKwor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVl
R1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAg
IGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0
ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05
MzcsMTAgKzkzNyw4IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90
IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAg
ICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAg
ICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmls
ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0
T2ZCb3VuZHMoKTsKQEAgLTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
SlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGlu
ZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAq
aW5kZXg7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4Owog
ICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+
PSAwICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAg
aWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAg
ICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNl
IGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJ
bmRleFF1aWNrbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1
ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQor
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1h
cmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRl
eGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oaSkgPCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgewor
ICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGln
dW91cworICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVj
dC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6
CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4Mjk0MAogICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+
Z2xvYmFsT2JqZWN0KHZtKTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQot
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2Jh
bE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVs
c2UgaWYgKHN1YnNjcmlwdC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJh
eVByb2ZpbGUpCiAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
CmluZGV4IDQxYzcxYjYwMDQ0ZS4uM2FjMmYwMTBjNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5
LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgQ1BV
KFJFR0lTVEVSNjQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX1JFR0lTVEVSNjQgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fUkVHSVNURVI2NCAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNT
NjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTY4MTM3N2JiOTg0
Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAg
fSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0
SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0
LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMg
PSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3MCwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RN
b2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7
CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNP
YmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFs
dWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1
ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5k
ZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAg
ICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGds
b2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9F
TkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI0MjFhN2ZhNDEwZS4uZTM0YzU4Yzg2YjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVj
dHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRy
b3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIFJFR0lTVEVSNjQKKyAg
ICBjb25zdCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggPSBjb25zdGV4cHIgQXJyYXlQcm9maWxl
OjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aAorZW5kCisKIGNvbnN0IG1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsID0gY29uc3RleHByIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
CiAKIGlmIFg4Nl82NCBvciBYODZfNjRfV0lOIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBSSVNDVjY0
CkBAIC0xMzEwLDcgKzEzMTQsNyBAQCBtYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5k
SW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKICAgICBsb2FkYiBKU0NlbGw6Om1faW5k
ZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIAotbWFjcm8gZ2V0QnlW
YWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91Ymxl
R2V0QnlWYWwsIHNsb3dQYXRoKQorbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4
LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRB
cnJheSwgc2xvd1BhdGgpCiAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBh
IHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4K
ICAgICBsb2FkYiBKU0NlbGw6Om1fdHlwZVtiYXNlXSwgdDIKICAgICBzdWJpIEZpcnN0VHlwZWRB
cnJheVR5cGUsIHQyCkBAIC0xMzIxLDEzICsxMzI1LDI2IEBAIG1hY3JvIGdldEJ5VmFsVHlwZWRB
cnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFs
LCBzCiAgICAgaWYgQVJNNjRFCiAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2CiAgICAgICAgIGNv
bnN0IHNjcmF0Y2ggPSB0NwotICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5n
dGhbYmFzZV0sIGxlbmd0aAotICAgICAgICBiaWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAor
ICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAor
ICAgICAgICAjIFdlIGhhdmUgdG8gc2lnbi1leHRlbmQgaW5kZXggaGVyZSwgc28gdGhhdCB0aGUg
Y29tcGFyaXNvbiB3aXRoIGxlbmd0aCB3aWxsIGFsc28gY2F0Y2ggYW55IG5lZ2F0aXZlIHZhbHVl
CisgICAgICAgIHN4aTJxIGluZGV4LCBpbmRleAorICAgICAgICBicWFlcSBpbmRleCwgbGVuZ3Ro
LCBzbG93UGF0aAorICAgIGVsc2lmIFJFR0lTVEVSNjQKKyAgICAgICAgIyBsZW5ndGggYW5kIHNj
cmF0Y2ggYXJlIGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2Ug
dGhleSBhcmUgbm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICAjIFdlIGhhdmUg
dG8gc2lnbi1leHRlbmQgaW5kZXggaGVyZSwgc28gdGhhdCB0aGUgY29tcGFyaXNvbiB3aXRoIGxl
bmd0aCB3aWxsIGFsc28gY2F0Y2ggYW55IG5lZ2F0aXZlIHZhbHVlCisgICAgICAgIHN4aTJxIGlu
ZGV4LCBpbmRleAorICAgICAgICBicWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVu
Z3RoW2Jhc2VdLCBzbG93UGF0aAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0
Y2ggYXJlIGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhl
eSBhcmUgbm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICBiaWFlcSBpbmRleCwg
SlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAogICAgIGVuZAogCisg
ICAgaWYgUkVHSVNURVI2NAorICAgICAgICBicWJlcSBpbmRleCwgU21hbGxUeXBlZEFycmF5TWF4
TGVuZ3RoLCAuc21hbGxUeXBlZEFycmF5CisgICAgICAgIHNldExhcmdlVHlwZWRBcnJheSgpCisu
c21hbGxUeXBlZEFycmF5OgorICAgIGVuZAorCiAgICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fdmVjdG9yW2Jhc2VdLCB0MwogICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5ndGgsIGJhc2Us
IHNjcmF0Y2gpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNTBkNWRiZGY2MDJhLi42NzhlYzY0YzY3
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNjY5LDcgKzE2NjksNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFn
ZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmlu
aXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIG1hY3Jv
ICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDg0YjZl
YWQzN2ZkLi41ZTcwYWNkMDU2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEzLDYgKzE3MTMsMTYgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEs
IHNjcmF0Y2gyKQogICAgIGVuZAogCisgICAgaWYgUkVHSVNURVI2NAorICAgICAgICBtYWNybyBz
ZXRMYXJnZVR5cGVkQXJyYXkoKQorICAgICAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlWYWw6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQorICAgICAg
ICBlbmQKKyAgICBlbHNlCisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAg
ICAgICAgICBjcmFzaCgpCisgICAgICAgIGVuZAorICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUs
IHQyKQogCiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBAIC0xNzYzLDcgKzE3NzMsNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVk
U3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZh
bCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5
cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWws
IHNldExhcmdlVHlwZWRBcnJheSwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6
CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5
MWUuLjljZDdlNDM2ZjVjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lk
Kik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1
cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29u
dGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6
ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBV
Q1BVUmVnaXN0ZXIgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVj
dG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92
ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZSkKQEAgLTY4LDcgKzY4LDcg
QEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNv
bnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJhbnNmZXJUbygqdGhpcyk7CiB9CiAKLUFycmF5
QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQg
c2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikK
K0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQ
VVJlZ2lzdGVyIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRl
c3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMpCiAgICAgLCBtX3NpemVJ
bkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsxMDksMjEgQEAgdm9pZCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9CiAKLXZvaWQg
QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQordm9p
ZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5
KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNp
emUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9
IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90YWxTaXplIC8g
bnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1BWF9BUlJBWV9C
VUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0gbnVtRWxlbWVudHM7Cisg
ICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXplSW5CeXRlcy5o
YXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9CVUZGRVJf
U0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNp
emVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVudHMpICogc3Rh
dGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgVUNQVVJlZ2lzdGVyIGFsbG9jYXRpb25TaXplID0g
c2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAgICAgICBh
bGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2NhdGVz
IHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0IHRo
ZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRyeU1h
bGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRhID0g
RGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEs
IHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNldCgp
OwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBtZW1zZXQo
ZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5
dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIFJFTEVB
U0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKICAgICBt
X2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7
CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdp
dGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQob3RoZXIu
bV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShV
Q1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsK
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIGF1dG8g
YnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIp
CkBAIC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5
IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRX
YXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJl
YWR5IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkK
K1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCog
ZGF0YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6
aXNFbmFibGVkKCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29u
dGFpbnMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEp
KSk7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBA
IFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCog
ZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQg
aW50cm9kdWNlIGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2Vk
IGFuZCBnZXQgYWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBX
YXNtIHNob3VsZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRh
LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24m
JiBkZXN0cnVjdG9yKQogewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRp
dmVHaWdhY2FnZSgpOwpAQCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVu
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIz
Nyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1
ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5
dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BV
UmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRz
OwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2ln
bmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29udGVudHMp
LCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRp
YWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxl
bWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxp
emUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
CiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRl
U2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3IEBAIFJl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJh
eUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQg
Ynl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFs
KEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCBVQ1BV
UmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291cmNl
KTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShj
b250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0
aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAg
ICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5p
dGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29u
dGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRl
U2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmln
aHQpCitVQ1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIFVDUFVS
ZWdpc3RlciBsZWZ0LCBVQ1BVUmVnaXN0ZXIgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0g
cmlnaHQpOwogICAgIGlmICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBB
cnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQg
cmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKK1VDUFVSZWdpc3RlciBBcnJheUJ1ZmZlcjo6Y2xhbXBJ
bmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9
IGJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5n
dGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGgg
KyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7
CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVkSW5kZXgo
Y2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5z
aWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VX
aXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVyIGVuZCkgY29u
c3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAw
OworICAgIFVDUFVSZWdpc3RlciBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAw
OwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0KQogICAg
ICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJhLi5iMGFl
NTZiZTU4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFz
ay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgQ1BVKFJF
R0lTVEVSNjQpCisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAzMikKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKFVDUFVSZWdpc3RlcikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7Cisj
ZWxzZQorLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBVQ1BVUmVnaXN0ZXIgdG8gc3RvcmUgdGhl
IHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9u
IDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVp
bnQ2NF90IHdvdWxkIGJlIHF1aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRv
IGJlIGFibGUgdG8gbWFuaXB1bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJH
Qi4gSXQgc2hvdWxkIGluIHRoZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0Ig
LSAxQikgaWYgYW55b25lIGNhcmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3
ZmZmZmZmZnUKKyNlbmRpZgogCiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEs
NyArNjAsNyBAQCB1c2luZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBh
Y2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZv
aWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYp
OworICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVy
LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZm
ZXJDb250ZW50cygpOwogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0ZXMpOyB9CkBAIC02MCwxNCArNjksMTQgQEAgcHJp
dmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUs
IHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1f
c2l6ZUluQnl0ZXM7CisgICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFz
cyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1
ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZl
ckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCBVQ1BVUmVnaXN0ZXIgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVu
dHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1
ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKQEAgLTc5LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiAh
IW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
Z2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAgVUNQVVJlZ2lzdGVyIHNpemVJ
bkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIAogICAgIGJvb2wg
aXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApAQCAtOTQsNyArMTAz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9OwogCi0gICAgdm9p
ZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxvY2F0ZShVQ1BVUmVn
aXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRp
b25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgdHJhbnNm
ZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExNCwyOCBAQCBwcml2YXRl
OgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgVUNQ
VVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1Ymxp
YyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRl
TGVuZ3RoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVu
Z3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBV
Q1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdp
c3RlciBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoVUNQ
VVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJh
eUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIAogICAgIC8v
IE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFs
aXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGluZSBjb25z
dCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdDsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsKICAgICAK
ICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5QnVm
ZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3Vi
bGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+
IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRy
PEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2ln
bmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVy
PiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoVUNQVVJlZ2lzdGVyIGJlZ2luLCBVQ1BVUmVnaXN0ZXIg
ZW5kKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9p
ZCB1bnBpbigpOwpAQCAtMTYxLDEyICsxNzAsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2Fj
YWdlRGVzdHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+
IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25z
dCB2b2lkKiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7
CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJD
b250ZW50cyYmLCBjb25zdCB2b2lkKiwgVUNQVVJlZ2lzdGVyKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGlu
ZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25l
ZCByaWdodCk7CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBjbGFtcEluZGV4KGRvdWJsZSBpbmRl
eCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBWYWx1ZShkb3Vi
bGUgeCwgVUNQVVJlZ2lzdGVyIGxlZnQsIFVDUFVSZWdpc3RlciByaWdodCk7CiAKICAgICB2b2lk
IG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMjAxLDcgQEAgY29uc3Qgdm9pZCog
QXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRhdGEoKTsK
IH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQVVJlZ2lz
dGVyIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250
ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxNCw3IEBAIGJvb2wgQXJyYXlCdWZm
ZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJ
bkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBzY2Fs
ZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1cm4g
c2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsK
KyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAogdm9p
ZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uZWIwNTA5ZWNkY2FjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJh
eUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lz
dGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0
ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAg
ICAgICwgbV9ieXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVu
Z3RoKGJ5dGVPZmZzZXQpOworICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBDcmFzaE9uT3ZlcmZs
b3c+IGxlbmd0aChieXRlT2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uMDBl
ZGNkMzg0N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlclZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0KCkgY29uc3QKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIHJldHVybiBtX2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQg
Ynl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIFVDUFVSZWdp
c3RlciBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0Rl
dGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkz
LDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZl
clZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBh
bGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWdu
ZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9m
ZnNldEFsaWdubWVudChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGVsZW1l
bnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChzaXplIC0gMSkp
OworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRTaXplIC0gMSkpOwogICAg
IH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBh
biBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAgICBzdGF0aWMgYm9vbCB2
ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAgLy8gSGVs
cGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlz
IHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25z
dCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lz
dGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBVQ1BVUmVn
aXN0ZXIgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
dW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8g
c2l6ZTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5n
dGggLSBieXRlT2Zmc2V0KSAvIHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZWxlbWVudFNpemUp
OwogICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMgKzExMyw0
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2Jh
bE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpT
X0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3Rl
ciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9v
bCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlu
bGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZz
ZXQpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJv
b2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25z
dCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBi
eXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRp
b24sIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQp
OwogCi0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBz
aXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxh
dGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQg
YXJyYXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsK
KyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBV
Q1BVUmVnaXN0ZXIgcmFuZ2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNldCBpcyBp
biBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAvLyBvdXRw
dXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZl
cidzIHZpZXcuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZl
ciwKLSAgICAgICAgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAq
b2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIFVDUFVSZWdp
c3RlciBhcnJheUJ5dGVPZmZzZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciAqb2Zmc2V0LAorICAg
ICAgICBVQ1BVUmVnaXN0ZXIgKm51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQg
bWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAg
ICAgICAgVUNQVVJlZ2lzdGVyIG1heE9mZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVS
ZWdpc3Rlcj46Om1heCgpIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAg
aWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIu
Ynl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsg
Km9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5i
eXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50
cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAg
IENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gYWRqdXN0ZWRPZmZzZXQgPSAq
b2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFk
anVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zm
c2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5
dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUo
KTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRl
TGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0g
c3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAg
dW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgdWlu
dDY0X3QgbV9ieXRlT2Zmc2V0IDogNjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNl
dCA6IDMxOworI2VuZGlmCiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWdu
ZWQgbV9ieXRlTGVuZ3RoOworICAgIFVDUFVSZWdpc3RlciBtX2J5dGVMZW5ndGg7CiAKICAgICB1
c2luZyBCYXNlQWRkcmVzcyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRh
Z0NhZ2VkUHRyPjsKICAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZl
cidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBB
cnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQg
Ynl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmll
dyogYXJyYXksIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0
ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0
aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxl
bmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9y
IG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBh
cnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+
YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1
ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgZGF0
YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zm
c2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0
aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGgg
PCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZs
b3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRl
TGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAg
ICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsK
ICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwo
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9m
ZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRp
b24sIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQp
CiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9m
ZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZz
ZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJh
bmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
Ynl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGluYXRpb24s
IGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1Jh
bmdlSW1wbChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIHJhbmdlQnl0ZUxl
bmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91
dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5P
ckVxdWFsKGJ5dGVPZmZzZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2UgKyBieXRl
T2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGludCBzdGFy
dCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25l
ZCogbGVuZ3RoKQotewotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFycmF5
U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYgKGVu
ZCA8IDApCi0gICAgICAgIGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAg
ICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlT
aXplKQotICAgICAgICBlbmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQotICAg
ICAgICBlbmQgPSBzdGFydDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRl
eCA2ODgzYTE3YzQ3MmQuLmQzNjI0NTBhMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBzdGF0aWMg
dW5zaWduZWQgdmFsaWRhdGVBdG9taWNBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBKU0FycgogICAgICAgICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4VmFsdWUu
dG9JbmRleChnbG9iYWxPYmplY3QsICJhY2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCAwKTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVkQXJyYXlW
aWV3LT5sZW5ndGgoKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOworCiAgICAg
aWYgKGFjY2Vzc0luZGV4ID49IHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBvdXQgb2Yg
Ym91bmRzIGZvciBhdG9taWMgYWNjZXNzLiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2NGFmMi4u
N2IxZWQ3Y2Y1NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDIwICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6
OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBi
eXRlTGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9m
ZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRl
KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0g
YnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSBidWZm
ZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwg
Ynl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5o
CmluZGV4IGRhMDZiNGJiMjE0NC4uZGU3MTRiNjI1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGlj
OgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBs
ZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbApA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNH
bG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlh
biwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdldChVQ1BVUmVnaXN0ZXIgb2Zmc2V0
LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAg
ICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBi
eXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29s
IGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQoVUNQVVJl
Z2lzdGVyJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRy
KQogICAgIHsKICAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0
LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMp
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0
dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KFVDUFVSZWdp
c3RlciBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9m
ZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZp
ZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJl
Z2lzdGVyIGJ5dGVMZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmlu
ZGV4IGJlN2U2YzA1MzRmYS4uYjI4NzliM2RmMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNCArMzMsMjQg
QEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUo
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3Rh
dGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUo
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsK
KyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoVUNQ
VVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJl
Z2lzdGVyIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNl
QWRkcmVzcygpKTsgfQogICAgIAotICAgIGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldChHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4qIGFycmF5LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXksIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQp
CisgICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBV
Q1BVUmVnaXN0ZXIgY291bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSksCkBAIC01OCwzOSArNTgsMzkgQEAgcHVibGljOgogICAgICAgICAgICAgb2Zm
c2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAg
Ym9vbCB6ZXJvUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpCisgICAgYm9vbCB6
ZXJvUmFuZ2UoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHplcm9SYW5nZUltcGwob2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpLCBjb3VudCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgemVyb0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7
IH0KICAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIFVDUFVSZWdpc3RlciBs
ZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0
ZW0oVUNQVVJlZ2lzdGVyIGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIHJl
dHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBp
bmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3RlciBpbmRl
eCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtp
bmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0KIAotICAg
IHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZh
bHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKFVDUFVSZWdpc3RlciBpbmRleCwgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBk
YXRhKClbaW5kZXhdID0gdmFsdWU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkKKyAg
ICBib29sIGdldFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIFVDUFVSZWdpc3Rl
ciBjb3VudCwgVUNQVVJlZ2lzdGVyIG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRS
YW5nZUltcGwoCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSwKQEAg
LTk4LDE4ICs5OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KIAotICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0
YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKKyAgICBib29sIGNoZWNrSW5i
b3VuZERhdGEoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KSBjb25zdAog
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAg
IHJldHVybiAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQg
PD0gbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYg
b2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRo
YW5PckVxdWFsKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAgICAgCi0g
ICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25z
dDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQs
IGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25z
dCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsKQEAgLTEx
OCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9i
YWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAgIEdlbmVy
aWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5n
dGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5k
ZXggYWU1YmRkOGM2YTMxLi41OWM2OWUzMTIyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRB
cnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IEFycmF5QnVm
ZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdpc3Rlcj46
Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNp
ZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAg
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9
IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUo
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShsZW5n
dGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZmZXIpCkBA
IC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwog
ICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUo
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCkK
IHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgp
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwpAQCAtMTE4LDI1ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnlDcmVh
dGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAg
IHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdAotewotICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0ZU9mZnNl
dEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0aCk7
Ci0gICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAg
QVNTRVJUKGJ1ZmZlcik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpU
eXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVy
biB0cnlDcmVhdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+Ojp3cmFwKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4uMjdhOTc3
OWY0OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5
QnVmZmVyVmlldzo6c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVj
dGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0cnVjdHVy
ZShzdHJ1Y3R1cmUpCiAgICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVu
Z3RoKGxlbmd0aCkKQEAgLTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVj
dGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3
OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNp
emUsCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCwgdW5zaWduZWQgZWxlbWVudFNpemUsCiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAg
ICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNjMs
NyArNjMsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3Ry
dWN0aW9uQ29udGV4dCgKICAgICBpZiAobGVuZ3RoIDw9IGZhc3RTaXplTGltaXQpIHsKICAgICAg
ICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwotICAgICAg
ICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKKyAgICAgICAgVUNQ
VVJlZ2lzdGVyIHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7CiAgICAgICAgIHRl
bXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVh
bCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsK
ICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODEsMTggKzgxLDE4
IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25D
b250ZXh0KAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0
eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpIC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZDxVQ1BV
UmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93PiBzaXplID0gbGVuZ3RoOworICAgIHNpemUgKj0gZWxl
bWVudFNpemU7CisgICAgaWYgKHNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUgPiBNQVhfQVJS
QVlfQlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVu
dFNpemUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3IgPSBWZWN0
b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1
ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwgc2l6ZSk7
CiAgICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBvcnRFeHRy
YU1lbW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0dXJlID0g
c3RydWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEwMCw3ICsx
MDAsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0
aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lz
dGVyIGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQsNyArMTE0
LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25z
dHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUp
CiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoRGF0YVZpZXdNb2RlKQpAQCAt
MjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShKU1R5cGUg
dHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJyYXlUeXBlXTsK
IH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQ
VVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKKyNpZiBB
U1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBsZW5ndGgo
KTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0
LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlzIGFscmVh
ZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4dHJhIHNh
bml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0dXJuIGxlbmd0aCgp
ICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1ZmZlciogSlNBcnJh
eUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3NCw3IEBA
IEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgp
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IHRo
aXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5
dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0VHlwZWRB
cnJheTogewpAQCAtMzE1LDggKzMyMiw4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJy
YXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIEFycmF5QnVmZmVyKiBidWZm
ZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNl
dCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOworICAgIFVDUFVSZWdpc3RlciBs
ZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBG
QUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCBkZDAx
ZjdmODJhNTMuLjQ2NzBiNDZkOGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBVQ1BVUmVnaXN0ZXIgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNpbmcgVmVj
dG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0Nh
Z2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTExNywxMCAr
MTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwogICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90
IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBVQ1BVUmVnaXN0ZXIgc2l6ZU9mKFVDUFVSZWdpc3Rl
ciBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChz
dGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAx
KTsKKyAgICAgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXI+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAg
ICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSAtIDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgs
MjUgQEAgcHJvdGVjdGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlv
bk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50
MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBa
ZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQo
Vk0mLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6
ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAgICAgLy8g
VGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0J3MgdXNl
ZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0
cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAgQ29uc3Ry
dWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0
b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYm
LAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICAgICAgICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsK
ICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9OwogICAgICAg
ICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNl
dCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAgICAgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAg
CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1
cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0
TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAgdXNpbmcg
VmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2Vk
UHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMyX3QgbV9s
ZW5ndGg7CisgICAgICAgIFVDUFVSZWdpc3RlciBtX2xlbmd0aDsKICAgICAgICAgVHlwZWRBcnJh
eU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAgIH07CkBA
IC0xOTAsMTEgKzE5MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0aCgpKTsgfQogICAgIHZvaWQqIHZlY3Rv
cldpdGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0VW5zYWZl
KCk7IH0KICAgICAKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwotICAgIGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAg
aW5saW5lIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KCk7CisgICAgaW5saW5lIHN0ZDo6b3B0aW9u
YWw8VUNQVVJlZ2lzdGVyPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgoKSBjb25zdDsKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9sZW5ndGg7IH0KKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZl
Y3RvclB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBVQ1BVUmVnaXN0
ZXIgbV9sZW5ndGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGlu
ZXMuaAppbmRleCAxZDA3MmI3MWFjYjcuLjYzMTgxNTVlNjQwYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgK
QEAgLTk5LDcgKzk5LDcgQEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5
dGVPZmZzZXRJbXBsKCkKICAgICBwdHJkaWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3aXNlX2Nh
c3Q8dWludDhfdCo+KHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGljX2Nhc3Q8
dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihkZWx0YSk7CisgICAgVUNQVVJlZ2lzdGVyIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PFVDUFVSZWdpc3Rlcj4oZGVsdGEpOwogICAgIGlmIChyZXF1ZXN0ZXIgPT0gTXV0YXRv
cikKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSA9PSBkZWx0
YSk7CiAgICAgZWxzZSB7CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBpbmxpbmUgUmVzdWx0VHlwZSBK
U0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLWlubGluZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCitpbmxp
bmUgVUNQVVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsKLSAgICBy
ZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgdW5zaWduZWQ+KCk7CisgICAgcmV0dXJuIGJ5
dGVPZmZzZXRJbXBsPE11dGF0b3IsIFVDUFVSZWdpc3Rlcj4oKTsKIH0KIAotaW5saW5lIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVu
dGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gSlNBcnJheUJ1ZmZlclZp
ZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1w
bDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAgICByZXR1
cm4gYnl0ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDxVQ1BVUmVn
aXN0ZXI+PigpOwogfQogCiBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1
ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggYjFlYTlkYTBmZTRjLi40OTYxNmY1
YzgzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbm1vdmFibGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTI5OCw2ICsyOTksNyBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCB0b0ludDMy
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9VSW50MzIoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAgICBVQ1BVUmVnaXN0ZXIgdG9UeXBlZEFycmF5
SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OwogICAg
IGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXgg
MzRlYTIxNDYwYTBkLi44MGMyM2Y2YzY5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjksMTQgKzY5LDQ3IEBAIGlubGlu
ZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFt
ZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0g
ICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKKworICAg
IGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMyKCk7CisKKyAgICBpZiAoZCA+
IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdl
IikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworfQorCitpbmxpbmUgVUNQVVJlZ2lzdGVyIEpTVmFs
dWU6OnRvVHlwZWRBcnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IGNoYXIqIGVycm9yTmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRv
dWJsZSBkID0gdG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCAwKTsKKyAgICBpZiAoZCA8PSAtMSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0
cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIo
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7CisKKyAg
ICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSkgewor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxsIG9mIHRoaXMgbW9uc3Ryb3Np
dHkgaXMganVzdCB0byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBvbiAxPDwzMi4KKyAgICBVQ1BV
UmVnaXN0ZXIgb3V0cHV0T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUgaW5wdXRPZmZzZXQgPSAwOwor
ICAgIFVDUFVSZWdpc3RlciBpbnQzMk1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpOworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnQzMk1heCkpIHsKKyAg
ICAgICAgb3V0cHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgICAgIGlucHV0T2Zmc2V0ID0gaW50
MzJNYXg7CisgICAgfQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3V0cHV0T2Zmc2V0
ICsgc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNDOjp0
b0ludDMyKGQgLSBpbnB1dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
MjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjkuLjk4NWQ5ZTI0NDk4MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3
ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250
ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZlciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZp
ZXc6OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
NzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBK
U0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgVUNQVVJlZ2lzdGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZp
ZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlcikKIHsK
ICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmpl
Y3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9i
amVjdCosIFVDUFVSZWdpc3RlciwgSlNPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIFVDUFVSZWdpc3Rl
cikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBV
Q1BVUmVnaXN0ZXIsIEpTVmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oCmluZGV4IDJjNzg1ZTQ3NjExYS4uNWVlMWQ4NjE5ZTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3Jl
YXRlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5
dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMsIHdoaWNoIGRvbid0IGFjdHVh
bGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCiAgICAgLy8gcGxhY2F0ZSBzb21l
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3aGVyZS4KLSAgICBzdGF0aWMgSlNE
YXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXQoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFs
dWUpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIEpT
RGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBK
U09iamVjdCosIFVDUFVSZWdpc3RlciwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgYm9vbCBz
ZXRJbmRleChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciwgSlNWYWx1ZSk7CiAgICAgCiAg
ICAgQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXI7IH0KICAgICBBcnJheUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNw
cAppbmRleCA5NDkwNjI0N2VhNjUuLmQ4Yzk5YzNjNjhhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYs
MTEgKzEzNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2Jh
bE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
CiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6
ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgZWxl
bWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1l
bnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAg
IGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFu
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAg
aWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVu
IGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGRhdGFW
aWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVP
ZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3Mp
OwogCkBAIC0xODIsNyArMTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFW
aWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAg
ICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0
ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBi
b29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIFVDUFVSZWdpc3RlciBlbGVtZW50U2l6
ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUg
PiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAgICAgICAgbGl0dGxl
RW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0Jvb2xlYW4oZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0
YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNo
ZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZp
ZXctPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxl
bmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+
IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4uMDU2ODM4YzllNDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2lu
Y2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyogZ2V0Qmln
VWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1cmUqIFMgICAgIC8vIGZyb20g
SlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAgICAvLyBmcm9tIEpTT2JqZWN0CiAvLyAgICAg
RWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJfdCBMCisvLyAgICAgVUNQVVJlZ2lzdGVyIEwK
IC8vICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0
b3RhbCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCisvLyBUaGVzZSBm
aWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6
IE1ha2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBCIGlzIHVzdWFsbHkgdW51c2Vk
IGJ1dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZsb3ciIGRhdGEgZm9yCkBAIC0x
MDMsMTUgKzEwNCwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogCi0gICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1
bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BV
UmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAg
ICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
LCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCi0g
ICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9Ci0gICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3Qg
eyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0
aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQorICAgIFVDUFVSZWdpc3RlciBi
eXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsgfQogICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIHR5cGVkVmVjdG9yKCkgY29uc3QKICAgICB7CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+
KHZlY3RvcigpKTsKICAgICB9CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0
CisgICAgYm9vbCBpbkJvdW5kcyhVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUg
bWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAg
Ly8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5H
ZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVp
Y2tseShVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5k
cyhpKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wg
Y2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAg
Ym9vbCBjYW5TZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGksIEpTVmFsdWUgdmFsdWUpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVy
KCkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KICAgICAKLSAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWdu
ZWQgaSkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
aSA8IG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClbaV07CiAgICAgfQog
ICAgIAotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAg
SlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseVRv
TmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKKyAg
ICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoVUNQVVJlZ2lzdGVyIGksIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVu
Z3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZv
aWQgc2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgc2V0SW5kZXhRdWlj
a2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPih2YWx1ZSkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29sIHNldEluZGV4KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIGpzVmFsdWUp
CiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSArMTc3LDE1IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIEVsZW1l
bnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+
KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFw
dG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
anNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9y
PihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24o
SlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lv
bjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRU
eXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1Zh
bHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJj
aW9uPEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpA
QCAtMTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9v
bCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5n
dGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAg
ICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBv
ZmZzZXQ7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGxl
bmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNrbHks
IGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAvLyBh
cHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRh
dGVSYW5nZShKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxz
ZSBvbiBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZl
IHRocm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29s
IHNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTT2JqZWN0KiwgVUNQ
VVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUgPSBD
b3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRv
cjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMy
Miw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBm
YWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdGhlckFkYXB0b3I+CiAgICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAg
ICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8T3RoZXJBZGFwdG9yPiosCi0gICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBDb3B5VHlwZSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lz
dGVyIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAg
ICAgIFVDUFVSZWdpc3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlU
eXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMgdGhhdCBmbG9hdGluZyBwb2lu
dCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBvcmRlcmluZzoKICAgICAv
LwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXJpZnlBcnJheSgpCiAg
ICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBlZFZlY3RvcigpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKKyAgICAgICAgZm9yIChV
Q1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAgICAgICAgYXJyYXlb
aV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggZDI1ODQwNjdlODNmLi5lZWRhNTVlM2Nh
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApA
QCAtMTQzLDcgKzE0Myw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21B
cnJheUJ1ZmZlcklmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpZXdDbGFzcz4KLWlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWdu
ZWQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCitpbmxpbmUgSlNP
YmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1Zh
bHVlIGZpcnN0QXJndW1lbnQsIFVDUFVSZWdpc3RlciBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8VUNQ
VVJlZ2lzdGVyPiBsZW5ndGhPcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1Nyw3ICsx
NTcsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgICAgICBV
Q1BVUmVnaXN0ZXIgbGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGxlbmd0aE9wdCkKICAgICAgICAg
ICAgIGxlbmd0aCA9IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKQEAgLTE4Miw3
ICsxODIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIC8vIC0gQSBwcmltaXRpdmUu
IFRoaXMgY3JlYXRlcyBhIG5ldyB0eXBlZCBhcnJheSBvZiB0aGF0IGxlbmd0aCBhbmQgemVyby1p
bml0aWFsaXplcyBpdC4KIAogICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHZtLCBmaXJzdFZhbHVlKSkgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGg7
CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGg7CiAgICAgICAgIEpTQXJyYXlCdWZmZXIqIGN1
c3RvbUJ1ZmZlciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG9iamVjdC0+
Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkgewpAQCAtMjUwLDcgKzI1MCw3
IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZmlyc3RWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVj
dCwgImxlbmd0aCIpOworICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSBmaXJzdFZhbHVlLnRvVHlw
ZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgVmll
d0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCkpOwogfQpAQCAt
Mjc1LDggKzI3NSw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICB9CiAKICAgICBKU1Zh
bHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIHVu
c2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0g
c3RkOjpudWxsb3B0OworICAgIFVDUFVSZWdpc3RlciBvZmZzZXQgPSAwOworICAgIHN0ZDo6b3B0
aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEp
IHsKICAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0lu
ZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODUsNyArMjg1LDcgQEAgQUxXQVlT
X0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBs
KEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgLy8gSWYgdGhlIGxlbmd0aCB2YWx1ZSBpcyBw
cmVzZW50IGJ1dCB1bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3NpbmcuCiAgICAgICAgICAgICBK
U1ZhbHVlIGxlbmd0aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAg
ICAgICAgICAgIGlmICghbGVuZ3RoVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAg
ICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6
OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAi
bGVuZ3RoIik7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9UeXBlZEFy
cmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9
PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CiAgICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUwMjM4
NzkyZDEwLi4wNTNjZmI1MWUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIKICNpbmNs
dWRlICJUeXBlRXJyb3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgPHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUs
NyArNjYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9p
ZCogdmVjdG9yKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4
dChzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKQEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpjcmVhdGVXaXRoRmEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05OSwx
MSArMTAwLDExIEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgc2l6ZV90IHNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7Cisg
ICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAg
ICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJh
bmdlTGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKQEAgLTE0NSw3ICsx
NDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVy
IG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
MTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZh
bGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5h
bWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90
aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBl
IHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIG9m
ZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCisgICAg
VUNQVVJlZ2lzdGVyIG90aGVyT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBDb3B5VHlwZSB0
eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyArMjE5LDcgQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAg
ICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3RpbmdCdWZmZXIoKQogICAgICAg
ICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBvdGhl
ci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0KSB7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAg
ICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCAr
IGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAg
ICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJP
ZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8vIE5vdyB3ZSBlaXRoZXIg
aGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAoMkIpLgogICAgIGlm
IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gbGVu
Z3RoOyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAog
ICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVy
dFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5
QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIzOSwxMSBAQCBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBl
KAogICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1
ZmZlciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUs
IDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0
aDsgaS0tOykgeworICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBsZW5ndGg7IGktLTspIHsKICAg
ICAgICAgdHJhbnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRU
bzxBZGFwdG9yPigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZh
bHVlKGkgKyBvdGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5n
dGg7IGktLTspCisgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxlbmd0aDsgaS0tOykKICAgICAg
ICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZl
cltpXSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29s
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgVUNQVVJlZ2lzdGVy
IG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xh
c3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9y
Ojp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1
c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAgICAgIC8vIFRoZSBzdXBl
ciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlw
ZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90aGVyID0ganNDYXN0PEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAgbGVuZ3RoID0gc3RkOjptaW4o
bGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAgLTMxMiw5ICszMTMsMTEgQEAg
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgICAgICBpZiAo
IXN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgLy8gVmVyaWZ5
IHRoYXQgd2Ugd29uJ3QgZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0aCBhbiBpbmRleCBvZiBV
SU5UX01BWCBvciBtb3JlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzU3VtU21hbGxlclRoYW5P
ckVxdWFsKHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2JqZWN0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkpKTsKICAgICAgICAgLy8gV2UgY291bGQgb3B0aW1pemUgdGhp
cyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2Jq
ZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0KTsKKyAgICAgICAgZm9yIChV
Q1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGkgKyBvYmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2JhbE9i
amVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKaW5kZXggNGMwZWJkMWY2MTY1Li5hOTc0NzM3M2M0ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNjAsNiArNjAsNyBAQCBpbmxp
bmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK2NsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEdl
dHRlclNldHRlcjsKIGNsYXNzIEludGVybmFsRnVuY3Rpb247CkBAIC0yMTEsMTAgKzIxMiw4IEBA
IHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwotICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFtZSwg
dmFsdWUpKSB7Ci0gICAgICAgICAgICBzZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUpOworICAgICAgICBpZiAodHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yODksNyArMjg4LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheSh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkodW5zaWduZWQsIEFycmF5UHJvZmlsZSogPSBudWxscHRyKSBjb25zdDsKICAgICAK
ICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAg
LTM0NSwxNCArMzQ0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAotICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlj
a2x5KHVuc2lnbmVkIGkpIGNvbnN0CisKKyAgICAvLyBVc2VzIHRoZSAob3B0aW9uYWwpIGFycmF5
IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2
YW50CisgICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgQXJyYXlQcm9m
aWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
QnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UzoKICAgICAgICAgICAgIGlmIChjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIGFy
cmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJ
REVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTEsMzUgKzQxMSw3
MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0LCBpKTsKICAgICB9
CiAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpT
VmFsdWUpIGNvbnN0OwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCwgSlNWYWx1ZSk7Ci0gICAgICAgIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JBcnJh
eVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisKKyAgICAvLyBS
ZXR1cm4gdHJ1ZSB0byBpbmRpY2F0ZSBzdWNjZXNzCisgICAgLy8gVXNlIHRoZSAob3B0aW9uYWwp
IGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVu
IHJlbGV2YW50CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2ln
bmVkLCBKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2ts
eShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlz
LT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ01vZGUoKSkgewogICAgICAg
ICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBjYW5T
ZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHYsIGFycmF5UHJvZmlsZSk7CiAg
ICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQ
RVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAg
ICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAg
ICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAg
IGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgeworICAgICAgICAgICAg
ICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5k
ZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExf
V1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkg
Pj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKHYpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5w
dWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0
aChpICsgMSk7CisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2KTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRB
QkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBpZiAoIXYuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb3VibGUg
dmFsdWUgPSB2LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHsK
KyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5n
U2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhp
cywgaSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVu
Z3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBOb25B
cnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdl
OgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOworICAg
ICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0
b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgY2Fz
ZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBi
dXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKQotICAgICAgICAgICAgICAg
ICYmICEhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpCisg
ICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5n
dGgoKSB8fCAhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV0pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4
aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdN
b2RlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAgICAgCisKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpT
VmFsdWUgdikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJm
bHkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCmluZGV4IDZlMWJiMWI1OWYxZS4uYjNjMjY2YzY0NDQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDIxICs0NjUs
MTUgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkodW5zaWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0Ojpj
YW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUp
IGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRB
cnJheSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkgY29uc3QKIHsKLSAg
ICBzd2l0Y2ggKHR5cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkg
XAotICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxj
b25zdCBKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHkoaSwg
dmFsdWUpOwotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRB
X1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQ
RQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19CisjaWYgQ1BV
KFJFR0lTVEVSNjQpCisgICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5
TWF4TGVuZ3RoICYmIGFycmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlC
ZUxhcmdlVHlwZWRBcnJheSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxl
KTsKKyNlbmRpZgogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAj
ZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAgICAgY2FzZSBuYW1lICMjIEFy
cmF5VHlwZSA6IHtcCkBAIC01MTIsNyArNTA2LDUwIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0Ojpz
ZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiB9Ci0gICAgCisKK2lubGluZSB2b2lkIEpTT2JqZWN0Ojpz
ZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mIHZtLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+YnV0
dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9
IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xkID0geC5nZXQoKTsKKyAgICB4
LnNldCh2bSwgdGhpcywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAgICAgICAgKytzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yOworICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkK
KyAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7CisgICAgfQorfQorCitpbmxp
bmUgYm9vbCBKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQoreworICAgIHN3aXRj
aCAodHlwZSgpKSB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVmaW5lIFVQREFURV9BUlJBWV9Q
Uk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8ge1wKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9m
aWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAg
ICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgfSB3
aGlsZSAoZmFsc2UpCisjZWxzZQorI2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJh
eVByb2ZpbGUpIGRvIHtcCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7XAorICAgIH0g
d2hpbGUgKGZhbHNlKQorI2VuZGlmCisjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1l
KSBcCisgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtcCisgICAgICAgIGF1dG8qIHR5cGVk
QXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlm
ICghdHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtc
CisgICAgICAgIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAg
ICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhD
TFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBF
RF9BUlJBWV9UWVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6
dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcy
MTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAg
LTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0
aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNl
LT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNl
KTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5k
ZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1
aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5j
YW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNv
dW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKICNpbmNsdWRl
IDxsaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJp
dmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFY
X0FSUkFZX0JVRkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAK
ICAgICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk4ZjA2MTE1M2Y3ZC4uM2ExOWM0
YTNkYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTEwLTA1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8g
NEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkz
NTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUyBmbGFnIHdo
aWNoIGlzIGVxdWl2YWxlbnQgdG8gVVNFX0pTVkFMVUU2NCwgaXQgcHJvdmVkIHVzZWZ1bCB0byB0
ZXN0IHRoaW5ncyBhbmQgY2F0Y2ggYnJlYWthZ2Ugb24gMzItYml0IHBsYXRmb3JtcyB3aXRob3V0
IHJlbHlpbmcgb24gRVdTLgorICAgICAgICBBbHNvIG1hZGUgc29tZSBvZiBDaGVja2VkQXJpdGht
ZXRpYyBjb25zdGV4cHIsIGFuZCBhZGRlZCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCBzaW5jZSBp
dCBpcyBhIGNvbW1vbmx5IHVzZWQgdGVzdCBpbiBBcnJheUJ1ZmZlciBhbmQgZWFzeSB0byBnZXQg
d3JvbmcgaW4gdGVybXMgb2Ygb3ZlcmZsb3cuCisKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaDoKKyAgICAgICAgKFdURjo6aXNJbkJvdW5kcyk6CisgICAgICAgIChXVEY6OmNvbnZl
cnRTYWZlbHkpOgorICAgICAgICAoV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCk6CisgICAg
ICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjEtMTAtMTEgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIHRvIHN3aXRjaCBm
cm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NoZWNrZWRBcml0aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oCmluZGV4IGZmMTU2NWYxMWRlZC4uZWZhYjRhZDNiYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRB
cml0aG1ldGljLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9IHNpemVvZihUYXJn
ZXQpID49IHNpemVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9v
bCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91
bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBp
bXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRv
IHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxUYXJnZXQ+OjptYXgoKTsKICAgICB9CiB9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFs
c2UsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24g
d2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICBy
ZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8PSB2YWx1ZSAmJiB2YWx1
ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwpAQCAtMTU5LDcgKzE1OSw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFy
Z2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNl
LCBmYWxzZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIC8vIFdoZW4gY29udmVydGluZyB2YWx1ZSB0byB1bnNpZ25lZCBTb3Vy
Y2UsIHZhbHVlIHdpbGwgYmVjb21lIGEgYmlnIHZhbHVlIGlmIHZhbHVlIGlzIG5lZ2F0aXZlLgog
ICAgICAgICAvLyBDYXN0ZWQgdmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2VyIHRoYW4gVGFyZ2V0Ojpt
YXggYXMgU291cmNlIGlzIGJpZ2dlciB0aGFuIFRhcmdldC4KQEAgLTE2OCw3ICsxNjgsNyBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHND
aGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFs
c2UsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBUaGUgdW5zaWduZWQgU291cmNlIHR5cGUgaGFzIGdyZWF0ZXIgcHJlY2lz
aW9uIHRoYW4gdGhlIHRhcmdldCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3VyY2Ugd2lsbCB3aWRlbi4K
ICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxUYXJnZXQ+OjptYXgoKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCBm
YWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWdu
LCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4
NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRz
KFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAg
IHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wg
Y29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdl
dCBpcyBzaWduZWQgd2l0aCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLiBJZiBzdHJpY3RseSBn
cmVhdGVyLCBpdCBpcyBhbHdheXMgc2FmZS4KICAgICAgICAgaWYgKHNpemVvZihUYXJnZXQpID4g
c2l6ZW9mKFNvdXJjZSkpCkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIHRydWU+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wg
Y29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdl
dCBpcyB1bnNpZ25lZCB3aXRoIGdyZWF0ZXIgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdmFs
dWUgPj0gMDsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBj
b25zdGV4cHIgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVlKTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wg
Y29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQordGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBi
b29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKIHsKICAgICBp
ZiAoIWlzSW5Cb3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTk5Niw2ICs5OTYsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4g
Ym9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKICAgICByZXR1cm4gY2hlY2tlZFBy
b2R1Y3Q8VD4oYXJncy4uLikuaGFzT3ZlcmZsb3dlZCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBib29sIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKFQgYSwgVCBiLCBUIGJvdW5kKQorewor
ICAgIENoZWNrZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+IHN1bSA9IGE7CisgICAgc3VtICs9IGI7Cisg
ICAgcmV0dXJuICFzdW0uaGFzT3ZlcmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDw9IGJvdW5kOwor
fQorCiB9CiAKIHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsKQEAgLTEwMTcsMyArMTAyNCw0
IEBAIHVzaW5nIFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVzaW5nIFdURjo6aXNJbkJvdW5k
czsKIHVzaW5nIFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5nIFdURjo6c3VtT3ZlcmZsb3dz
OwordXNpbmcgV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NzUw
YTgzMGE2NzQuLjU1ODdlOTIxNmZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIx
LTEwLTA1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAg
QWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBwYXJ0cyBv
ZiBXZWJDb3JlIHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5vdCBidWlsZCBhZnRlciBJIG1h
ZGUgdGhlIGxlbmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5cyByZXR1cm4gc2l6ZV90IGlu
c3RlYWQgb2YgdWludDMyX3QuCisgICAgICAgIEkgZml4ZWQgaXQgdHJpdmlhbGx5IGJ5IFJFTEVB
U0VfQVNTRVJUaW5nIHRoYXQgdGhlIHNpemVfdCBmaXRzIGluIGEgdWludDMyX3QgYW5kIHRoZW4g
Y2FzdGluZyBpdC4KKyAgICAgICAgTm8gbmV3IHRlc3RzIGZvciBXZWJDb3JlIGFzIHRoZXJlIGlz
IG5vIGludGVuZGVkIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlG
cm9tQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5l
bCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21h
aW5EYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6Cisg
ICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Cb3guaDoKKwogMjAyMS0xMC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVuaWZpZWQgYnVpbGQgZml4CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IGNiN2U4NGQ0
NTM4My4uMmRiNDljYTI0YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTkzLDEyICsxOTMsMTIgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gQXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIGRlc3Rp
bmF0aW9uLAogICAgIAogICAgIEZsb2F0MzJBcnJheSogY2hhbm5lbERhdGEgPSBtX2NoYW5uZWxz
W2NoYW5uZWxOdW1iZXJdLmdldCgpOwogICAgIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gY2hh
bm5lbERhdGEtPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBkYXRhTGVuZ3RoID0gY2hhbm5l
bERhdGEtPmxlbmd0aCgpOwogICAgIAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0
aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFM
ZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgVUNQVVJlZ2lzdGVyIGNvdW50ID0gZGF0YUxlbmd0
aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3RpbmF0aW9uLmdldCgp
Lmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IGNoYW5uZWxE
YXRhLT5kYXRhKCk7CkBAIC0yMjEsMTIgKzIyMSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b0J1ZmZlcjo6Y29weVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJjZSwgdW5zaWdu
ZQogICAgIAogICAgIEZsb2F0MzJBcnJheSogY2hhbm5lbERhdGEgPSBtX2NoYW5uZWxzW2NoYW5u
ZWxOdW1iZXJdLmdldCgpOwogICAgIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gY2hhbm5lbERh
dGEtPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBkYXRhTGVuZ3RoID0gY2hhbm5lbERhdGEt
Pmxlbmd0aCgpOwogICAgIAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGgg
LSBidWZmZXJPZmZzZXQ7CisgICAgVUNQVVJlZ2lzdGVyIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1
ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKHNvdXJjZS5nZXQoKS5sZW5ndGgoKSwg
Y291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBzb3VyY2UtPmRhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
Y3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uYWM4OWNhZWJlY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTE5Niw4
ICsxOTYsOCBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVp
bnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAgZG9GRlRBbmFseXNpc0lmTmVjZXNzYXJ5
KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxpbmVhciBtYWduaXR1ZGUgdG8gdW5zaWdu
ZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSBtYWduaXR1ZGVC
dWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0
aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVu
Z3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3Rk
OjptaW4obWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpLCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAg
aWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgY29uc3QgZG91YmxlIHJhbmdlU2NhbGVGYWN0b3Ig
PSBtX21heERlY2liZWxzID09IG1fbWluRGVjaWJlbHMgPyAxIDogMSAvIChtX21heERlY2liZWxz
IC0gbV9taW5EZWNpYmVscyk7CiAgICAgICAgIGNvbnN0IGRvdWJsZSBtaW5EZWNpYmVscyA9IG1f
bWluRGVjaWJlbHM7CkBAIC0yMjcsOCArMjI3LDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpn
ZXRGbG9hdFRpbWVEb21haW5EYXRhKEZsb2F0MzJBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIHVuc2lnbmVkIGZmdFNpemUg
PSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUs
IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0
aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlz
LT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3Rp
bmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5w
dXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYm
IG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRC
dWZmZXJHb29kKTsKQEAgLTI1MSw4ICsyNTIsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6Omdl
dEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+
ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5h
dGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0
aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6
ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkxl
bmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVy
R29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0
QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lucHV0QnVmZmVyR29v
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjllODQ2N2FkNjJhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC0xMjYzLDggKzEyNjMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB3cml0ZShJbWFn
ZURhdGFUYWcpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPndpZHRoKCkpOwogICAgICAg
ICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShk
YXRhLT5kYXRhKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEo
KS5kYXRhKCksIGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQ2hlY2tl
ZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFMZW5ndGggPSBkYXRhLT5kYXRhKCkubGVu
Z3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0
YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAg
ICAgICB3cml0ZShkYXRhLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQpAQCAtMTMxMSw4ICsxMzE2LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHdyaXRlKEFy
cmF5QnVmZmVyVGFnKTsKLSAgICAgICAgICAgICAgICB3cml0ZShhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAg
ICAgICAgICAgICAgIENoZWNrZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiBieXRlTGVuZ3Ro
ID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoYnl0ZUxl
bmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdyaXRlKGJ5
dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0
czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmNwcAppbmRleCBhNjZiMTkxZDY4NmQuLmJhZjFhYmFkNjdiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC02OCw3ICs2OCw5
IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZShXZWJDb3JlOjpCbG9iJiBibG9iKQog
CiAgICAgYXV0byBieXRlTGVuZ3RoID0gYmxvYi5zaXplKCk7CiAgICAgaWYgKCFieXRlTGVuZ3Ro
KSB7Ci0gICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKDBVLCAxKSwgMCwg
MCk7CisgICAgICAgIC8vIFRoZSBjYXN0IGxvb2tzIHdlaXJkLCBidXQgaXMgcmVxdWlyZWQgZm9y
IHRoZSBvdmVybG9hZGluZyByZXNvbHV0aW9uIHRvIHN1Y2NlZWQuCisgICAgICAgIC8vIFdpdGhv
dXQgaXQsIHRoZXJlIGlzIGFuIGFtYmlndWl0eSB3aGVyZSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNv
bnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpIGNvdWxkIGJlIGNhbGxl
ZCBpbnN0ZWFkLgorICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KDBVKSwgMSksIDAsIDApOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8QmxvYkxvYWRlcj4oW3Ro
aXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li4xYmEzMjJjMTBiYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2luY2x1ZGUgIkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC02Myw3ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGJvb2wgY2hlY2tlZFJlYWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVuc2lnbmVkJiBvZmZz
ZXQsIEVuZGlhbm5lc3MgZW5kaWFubmVzcykKICAgICB7CiAgICAgICAgIGJvb2wgcmVhZFN0YXR1
cyA9IGZhbHNlOwotICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KG9mZnNl
dCwgZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgVUNQ
VVJlZ2lzdGVyIGFjdHVhbE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgVCB2YWx1ZSA9IHZpZXcu
dGVtcGxhdGUgcmVhZDxUPihhY3R1YWxPZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFu
LCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dWludDMy
X3Q+KGFjdHVhbE9mZnNldCkpOworICAgICAgICBvZmZzZXQgPSBhY3R1YWxPZmZzZXQ7CiAgICAg
ICAgIGlmICghcmVhZFN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440836</attachid>
            <date>2021-10-11 14:24:18 -0700</date>
            <delta_ts>2021-10-12 03:58:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>242472</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ODZmM2MzMTU0Zjc5Li5kYzZhMjFlYzI5YTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMDUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmlnLXdhc20tbWVtb3J5IHRl
c3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00gYXQgMkdCLgorICAgICAgICBUaGV5IG5v
dyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWlsdXJlIGF0IDRHQisxLgorICAgICAgICBU
aGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZp
b3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUgdGhhdCB3YXMgY2F1c2luZyB0aGUgc3Bl
Y2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3duIChyZXN1bHRpbmcgaW4gdGhlIGdlbmVy
aWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29kZSkuCisgICAgICAgIEZpbmFsbHkgSSBt
YWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRmb3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBw
b3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRzLCBhbmQgSSBtYWRlIHRoZW0gb25seSBy
dW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQg
b2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZp
Y2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxhcmdlIHR5cGVkIGFycmF5cywgYW5kIGVz
cGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9NQVguCisKKyAgICAgICAgKiBzdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzOiBBZGRlZC4KKwogMjAyMS0x
MC0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IFJlZmluZSBSZWdFeHAjY29tcGlsZSBiYXNlZCBvbiByZWdleHAtbGVnYWN5LWZlYXR1cmVzIHBy
b3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyNWRjY2I4Mzk1Li5jMmMwNGM4OWMwNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NiBAQAorMjAyMS0xMC0wNSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00g
dG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoaWxlIGluY3JlYXNpbmcgTUFYX0FS
UkFZX0JVRkZFUl9TSVpFIHRvIDRHQiB3YXMgZWFzeSwgaXQgd2FzIG5vdCByZW1vdGVseSB0aGUg
b25seSB0aGluZyByZXF1aXJlZCB0byBnZXQgdGhpcyB0byB3b3JrOgorICAgICAgICAtIDRHQiBp
cyBub3QgcmVwcmVzZW50YWJsZSBpbiBhIHVpbnQzMl90LCBzbyBJIGNoYW5nZWQgYWxsIGxlbmd0
aCBvZiBBcnJheUJ1ZmZlci9UeXBlZEFycmF5L2V0Yy4uIHRvIGJlaW5nIFVDUFVSZWdpc3Rlci4K
KyAgICAgICAgLSBUaGlzIGFsc28gcmVxdWlyZWQgY2hhbmdpbmcgTmV3VHlwZWRBcnJheSBpbiBh
bGwgb2YgTExJbnQvQmFzZWxpbmUvREZHL0ZUTCB0byBhY2NlcHQgYSBub24taW50MzIgc2l6ZS4K
KyAgICAgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zLCBJ
IGhhZCB0byBhZGQgc3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwsIHdoaWNoIG5vdyBoYXZlIHR3
byB2ZXJzaW9ucyBvZiBOZXdUeXBlZEFycmF5IChvbmUgdGhhdCB0YWtlcyBhbiBJbnQzMiBhbmQg
b25lIHRoYXQgdGFrZXMgYSBTdHJpY3RJbnQ1MikKKyAgICAgICAgLSBTaW1pbGFybHksIEdldEFy
cmF5TGVuZ3RoIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCBub3cgY2FuIGVpdGhlciByZXR1
cm4gYW4gSW50MzIgb3IgYSBsYXJnZXIgbnVtYmVyLgorICAgICAgICAgICAgSSBhbHNvIGhhZCB0
byBzcGxpdCB0aGVtIGluIHRoZSBERkcvRlRMLCBzZWUgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIgYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBmb3IgZXhhbXBsZXMKKyAgICAg
ICAgLSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMy
IGluZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4
aW11bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVk
IGEgIm1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJy
YXlQcm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQz
MiBpbmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxp
emF0aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4g
dXBkYXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBj
b3JyZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9m
IHRpbWUgdG8gYWRkIHRoZXNlIHNwZWN1bGF0aW9ucy91cGRhdGUgdGhlIGZhc3QgcGF0aHMuCisg
ICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVw
IHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBh
dGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGlu
ZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBo
aWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBw
YXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBjdXJy
ZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZv
cm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBh
dGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRy
ICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisg
ICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMg
Y2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2gg
aXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRp
ZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBv
ZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkK
KyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQg
d2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50
cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6
OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6
YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0
aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJM
ZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGlu
ZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRl
Y29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlC
ZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJn
ZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmls
ZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fy
cmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0
aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJy
YXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
R2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpT
Qzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RvcmFnZUNoaWxkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpzdG9yYWdlQ2hpbGRJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzQXJyYXlNb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5
UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudEFycmF5Q2hlY2tzKToKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1p
dE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQu
aDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ2NE5vbk5lZ2F0aXZlKToKKyAgICAg
ICAgKiBqaXQvSW50cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpn
ZXRCeVZhbCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29u
dGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
OjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXggY29u
c3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyQ29udGVudHM6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
Z2NTaXplRXN0aW1hdGVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJW
aWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJWaWV3OjpjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXJWaWV3OjpzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRS
YW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCk6CisgICAgICAg
IChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpEYXRhVmlldzo6RGF0YVZpZXcpOgorICAg
ICAgICAoSlNDOjpEYXRhVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3
Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcpOgor
ICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSk6CisgICAgICAgIChK
U0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZp
ZXc6OnNpemVPZik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmll
dzo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvSW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRl
eCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAg
IChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJ
bmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChK
U0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoK
KwogMjAyMS0xMC0xMSAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
SlNDXVtBUk12N10gTWFrZSBMTEludCBDU1Igc2F2ZS9yZXN0b3JlIG9yZGVyIG1hdGNoIHRoZSBK
SVRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggNDNmNzg0YTRhYjkzLi5lYzMy
YjcyMjFjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yOTgsOSArMjk4LDkgQEAgcHVibGljOgog
ICAgIC8vIGluIGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRl
ciB0byBkaWZmZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRl
IGFkZHJlc3NlcyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRy
IDogcHVibGljIFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAg
ICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBj
b25zdGV4cHIgVHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDog
bV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMTEsMjEgKzMxMSwyMSBA
QCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0
ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVz
dGVkSW1tUHRyKHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRy
X3QgYXNJbnRwdHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0
cigpCisgICAgICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzM1
LDEyICszMzUsMTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1
c3RlZEltbVB0cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZh
bHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVl
KQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0
aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigp
IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTM1
OCw3ICszNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAg
ICAgICBleHBsaWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAg
ICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAt
MzY5LDE3ICszNjksMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRl
IFRydXN0ZWRJbW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisg
ICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAg
ICAgOiBUcnVzdGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUo
WDg2XzY0KQotICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAg
ICAgOiBUcnVzdGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAg
ICAgICBjb25zdCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4g
KnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVk
SW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwx
NSArMzkwLDE1IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFu
IGVudW0pIGZyb20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0
ZSB2YWx1ZXMuCiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAg
ICBUcnVzdGVkSW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsg
fQogICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkK
ICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNp
ZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDA5LDE3ICs0
MDksMTcgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1t
NjQKICAgICB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBU
cnVzdGVkSW1tNjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQp
IHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRy
dXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsK
ICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVk
SW1tNjQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3Qg
VHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAg
ICAgfTsKICAgICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVy
IGhhbmRsZXMKQEAgLTEwODYsOSArMTA4Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAg
ICAgfQotICAgIHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBz
dGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50
NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxp
bmQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAg
ICBmcmllbmQgY2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGQ3ZmUzYTgxZTM0MS4uZTY3NjdjNmE5
YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCkBAIC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikg
fHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmxzaGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAg
ICB9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUo
WDg2XzY0KSAmJiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgc3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0j
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQp
IHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJ
bW0zMigpKTsKICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBw
bGF0Zm9ybXMgZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25h
bENvbmRpdGlvbiwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJp
Z2h0IGZpbGUuCisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2
XzY0LmgsIGJlY2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRD
b25zdGFudCwgZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUu
CisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgSW1tNjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQp
KSB7CisgICAgICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsK
KyAgICAgICAgICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGlu
ZENvbnN0YW50KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJs
aW5kaW5nKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBo
YXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAg
ICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1
aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BD
b3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsK
KyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAppbmRleCA0MjUwOTAzYmMzMjIuLjE3OTZiNjUxYmM0MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0
NCw4ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxp
bmtSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVh
c29uYWJsZSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxk
QmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4
MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBA
IC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJh
bmNoKGNvbmQpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRD
YWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5k
ZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4MmQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCAr
MTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFy
Z2V0LCBib29sIHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJh
eVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxp
ZGF0ZUF1dGgpCiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVu
Z3RoR1BSKTsKKyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0
byBzY3JhdGNoID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihs
ZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0MDE3Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBS
ZWdpc3RlcklEIHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVn
aXN0ZXJzOjplYnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMy
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgp
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRG
b3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZm
ZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAg
IC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li5m
Njg2YWQ5ZjIzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKQEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRj
aEZQUigpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1
c3RvbVZhbHVlU2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2Fz
ZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAg
ICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNz
Q2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5
VWludDMyU3RvcmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlw
ZWRBcnJheUxlbmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hp
bmcgdGhlaXIgcmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTE5MSwxMiArMTE5MiwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlH
UFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0
Y2hHUFIpOwotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMy
KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOwor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BS
KTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIFVDUFVS
ZWdpc3Rlciwgc28gZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9y
bS4KKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2Fs
bEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7Cisj
ZWxzZQorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKEND
YWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7
CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0
dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5i
YXNlUmVncygpKTsKQEAgLTEyMTEsOSArMTIxNywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZl
ZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJz
QnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4
dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAg
ICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAg
ICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAg
ICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQu
Y2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQ
Uiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0
ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0
eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewpAQCAtMTYz
MCw5ICsxNjQwLDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAg
ICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9CiAKLSAgICAgICAgaml0LmxvYWQz
MihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgLy8gT3V0T2ZCb3VuZHMgYml0IG9m
IEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0aW9uIGZ1bmN0aW9uLgotICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVy
czo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAgICAg
aml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBDUFUo
UkVHSVNURVI2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIFVDUFVSZWdpc3Rlciwgc28g
ZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAg
c3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFi
b3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7CisjZWxzZQorICAgICAg
ICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7CisjZW5kaWYKIAog
ICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRS
ZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsK
QEAgLTE2NDgsOSArMTY2MywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJk
KAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNl
cnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAog
ICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFj
ZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBqaXQubG9h
ZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9h
ZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uYmVlN2E5ZmNkYzkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVz
IHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0
eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBB
cnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3
aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAg
IH0KLSAgICAKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIC8vIEFjY2Vzc2luZyB0eXBlZCBh
cnJheXMgbGFyZ2VyIHRoYW4gdGhhdCB0ZW5kcyB0byBiZSBtb3JlIGNvbXBsaWNhdGVkIGFzIHdl
IGNhbid0IGZvcmNlIGNvbnZlcnQgZXZlcnl0aGluZyB0byBpbnQzMl90LgorICAgIC8vIFdlIG9u
bHkgc3VwcG9ydCBzdWNoIGxhcmdlIHR5cGVkIGFycmF5cyBvbiA2NC1iaXQgcGxhdGZvcm1zLgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICB2b2lkIHNldE1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsgfQorICAg
IGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29u
c3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorI2Vsc2UKKyAgICBib29sIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFy
cmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5
TW9kZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZt
X21heVN0b3JlVG9Ib2xlOyB9CkBAIC0yNDQsNiArMjU0LDkgQEAgcHJpdmF0ZToKICAgICBTdHJ1
Y3R1cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3Jl
VG9Ib2xlIHsgZmFsc2UgfTsgLy8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBp
bmRpY2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcg
YXJyYXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1
cnJlbnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFu
dHMgb2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5
IHdoYXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9
OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7
IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2Vz
IDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBi
b29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY2LDEzIEBA
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxp
bmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9
IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6
IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgQ1BVKFJFR0lTVEVSNjQp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAg
ICAgICBpZiAobV9tYXlCZUxhcmdlVHlwZWRBcnJheSkKKyAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBl
ZEFycmF5OworI2VuZGlmCiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjkwLDcgKzMxNiwxMSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X291dE9mQm91bmRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVz
IHsgdHJ1ZSB9OworICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOwor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7
CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5UHJvZmlsZSkg
PD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDJiMmY1
ZTAzMDE5Zi4uZjViN2YyYjY4OWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDYzLDcgKzM0
NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5v
ZGUtPmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgaWYgKHZpZXcg
JiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBH
ZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewog
ICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVW
aWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBpZiAodmlldykg
ewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXct
PmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7
CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZp
ZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0
ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3
ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92
YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVD
UFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsK
KyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBH
ZXRQcm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1f
dHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZS5jcHAKaW5kZXggNmUyNzUzMTA0YmQzLi5hM2I5MzQwZjY5MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlLmNwcApAQCAtMzI1LDYgKzMyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyOgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgaXMgb25seSB1c2Vk
IGZvciBUeXBlZEFycmF5cywgc28gc2hvdWxkIG5vdCBiZSByZWxldmFudCBmb3IgYXJndW1lbnRz
IGVsaW1pbmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDIoKSwg
bm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgICAgICAgICAgQml0VmVjdG9yKiBi
aXRWZWN0b3IgPSBub2RlLT5iaXRWZWN0b3IoKTsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50ID0gbV9ncmFwaC5pc1dhdGNoaW5nSGF2
aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmNwcAppbmRleCA2ZTRmZTlhZmEzZWIuLjcyNThlMzcxNTg2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcApAQCAtMjA5LDcgKzIwOSw3
IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6Rm9yY2VFeGl0LCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAotICAgIGlmICghaXNJ
bnQzMlNwZWN1bGF0aW9uKGluZGV4KSkKKyAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRl
eCkgJiYgIW1heUJlTGFyZ2VUeXBlZEFycmF5KCkpCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OkdlbmVyaWMsIGFjdGlvbigpKTsKICAgICAKICAgICAvLyBJZiB3ZSBoYWQgZXhpdGVk
IGJlY2F1c2Ugb2YgYW4gZXhvdGljIG9iamVjdCBiZWhhdmlvciwgdGhlbiBkb24ndCB0cnkgdG8g
c3BlY2lhbGl6ZS4KQEAgLTI5NCw2ICsyOTQsOCBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoCiAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJpZ0lu
dDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnVWludDY0QXJyYXk6CisgICAgICAgIC8vIEZJ
WE1FOiBubyBpZGVhIHdoeSB3ZSBvbmx5IHByZXNlcnZlIHRoaXMgb3V0LW9mLWJvdW5kcyBpbmZv
cm1hdGlvbiBmb3IgUHV0QnlWYWwgYW5kIG5vdCBHZXRCeVZhbCBhcyB3ZWxsLgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjc2CiAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsKSB7CiAgICAgICAgICAgICBpZiAoZ3JhcGguaGFz
RXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdXRPZkJvdW5kcykgfHwgIWlzSW5Cb3Vu
ZHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZWRBcnJheVJlc3VsdCh3aXRoU3BlY3Vs
YXRpb24oQXJyYXk6Ok91dE9mQm91bmRzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cnJheU1vZGUuaAppbmRleCBhMDI2YWFkMTg5M2IuLmRmNzVjNzg5MGQ2NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHVibGlj
OgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAg
ICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRl
cy5hY3Rpb24gPSBBcnJheTo6V3JpdGU7CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlw
ZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBleHBsaWNpdCBBcnJheU1vZGUoQXJy
YXk6OlR5cGUgdHlwZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xMzYsNiArMTM3LDcgQEAg
cHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7
CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUu
YXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlw
ZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAt
MTQ1LDE1ICsxNDcsMTcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24g
PSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6
OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNC
eXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBBcnJh
eU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpT
cGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJy
YXk6OkFjdGlvbiBhY3Rpb24pCisgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1heUJl
TGFyZ2VUeXBlZEFycmF5ID0gZmFsc2UpCiAgICAgewogICAgICAgICB1LmFzQnl0ZXMudHlwZSA9
IHR5cGU7CiAgICAgICAgIHUuYXNCeXRlcy5hcnJheUNsYXNzID0gYXJyYXlDbGFzczsKICAgICAg
ICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gc3BlY3VsYXRpb247CiAgICAgICAgIHUuYXNCeXRl
cy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFj
dGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gbWF5QmVMYXJn
ZVR5cGVkQXJyYXk7CiAgICAgfQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBl
LCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwg
QXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNjMsNiArMTY3LDcgQEAgcHVibGljOgogICAgICAg
ICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNC
eXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9
IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIEFycmF5OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxBcnJheTo6VHlwZT4odS5hc0J5dGVzLnR5cGUpOyB9CkBAIC0xNzAsNiArMTc1LDcg
QEAgcHVibGljOgogICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpTcGVjdWxhdGlvbj4odS5hc0J5dGVzLnNwZWN1bGF0
aW9uKTsgfQogICAgIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxBcnJheTo6Q29udmVyc2lvbj4odS5hc0J5dGVzLmNvbnZlcnNpb24pOyB9
CiAgICAgQXJyYXk6OkFjdGlvbiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxB
cnJheTo6QWN0aW9uPih1LmFzQnl0ZXMuYWN0aW9uKTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSBjb25zdCB7IHJldHVybiB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXk7
IH0KICAgICAKICAgICB1bnNpZ25lZCBhc1dvcmQoKSBjb25zdCB7IHJldHVybiB1LmFzV29yZDsg
fQogICAgIApAQCAtMTc5LDM1ICsxODUsNTAgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBz
dGF0aWMgQXJyYXlNb2RlIGZyb21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBB
cnJheVByb2ZpbGUqLCBBcnJheTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKLSAgICAKKworICAg
IEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNv
bnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKwog
ICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb24oQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOworICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwgY29udmVy
c2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAot
ICAgIEFycmF5TW9kZSB3aXRoQXJyYXlDbGFzcyhBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcykgY29u
c3QKKworICAgIEFycmF5TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252
ZXJzaW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOworICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBj
b252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CiAgICAgfQotICAg
IAotICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZl
KSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlw
ZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNv
bnZlcnNpb24sIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKKyAg
ICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBl
ZEFycmF5KEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3Vs
YXRpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkpIGNvbnN0CiAgICAgewotICAgICAgICBB
cnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigp
LCBtYXlCZUxhcmdlVHlwZWRBcnJheSk7CisgICAgfQogCisgICAgc3RhdGljIEFycmF5OjpTcGVj
dWxhdGlvbiBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYg
bG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpCisgICAgewogICAg
ICAgICBpZiAobWFrZVNhZmUpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91
dE9mQm91bmRzOworICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpPdXRPZkJvdW5kczsKICAgICAg
ICAgZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hvbGUobG9ja2VyKSkKLSAgICAgICAgICAg
IG15U3BlY3VsYXRpb24gPSBBcnJheTo6VG9Ib2xlOworICAgICAgICAgICAgcmV0dXJuIEFycmF5
OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJh
eTo6SW5Cb3VuZHM7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15
U3BlY3VsYXRpb24pOworICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpJbkJvdW5kczsKICAgICB9
Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBt
YWtlU2FmZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24oc3Bl
Y3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKSk7CisgICAgfQor
CiAgICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9j
a2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewog
ICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNzOwotCiAgICAgICAgIGlmIChpc0pTQXJy
YXkoKSkgewogICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0
dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewogICAgICAgICAg
ICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rl
cyhsb2NrZXIpOwpAQCAtMjIxLDIzICsyNDIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4g
d2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShs
b2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdp
dGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBh
Y3Rpb24oKSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoQ29udmVyc2lvbihBcnJh
eTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwg
YWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGVBbmRDb252ZXJz
aW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOworCisgICAgICAgIEFycmF5OjpTcGVj
dWxhdGlvbiBzcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisKKyAgICAgICAgYm9vbCBsYXJnZVR5cGVkQXJyYXkgPSBwcm9maWxl
LT5tYXlCZUxhcmdlVHlwZWRBcnJheShsb2NrZXIpOworCisgICAgICAgIHJldHVybiB3aXRoQXJy
YXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkobXlBcnJheUNsYXNz
LCBzcGVjdWxhdGlvbiwgbGFyZ2VUeXBlZEFycmF5KTsKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSB1bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlID0gU3Bl
Y0ludDMyT25seTsKQEAgLTUyNiw3ICs1MzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0
eXBlKCkgPT0gb3RoZXIudHlwZSgpCiAgICAgICAgICAgICAmJiBhcnJheUNsYXNzKCkgPT0gb3Ro
ZXIuYXJyYXlDbGFzcygpCiAgICAgICAgICAgICAmJiBzcGVjdWxhdGlvbigpID09IG90aGVyLnNw
ZWN1bGF0aW9uKCkKLSAgICAgICAgICAgICYmIGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJz
aW9uKCk7CisgICAgICAgICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigp
CisgICAgICAgICAgICAmJiBtYXlCZUxhcmdlVHlwZWRBcnJheSgpID09IG90aGVyLm1heUJlTGFy
Z2VUeXBlZEFycmF5KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBB
cnJheU1vZGUmIG90aGVyKSBjb25zdApAQCAtNTc5LDcgKzU5MCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB1aW50OF90IGFycmF5Q2xhc3M7CiAgICAgICAgICAgICB1aW50OF90IHNwZWN1bGF0
aW9uOwogICAgICAgICAgICAgdWludDhfdCBjb252ZXJzaW9uIDogNDsKLSAgICAgICAgICAgIHVp
bnQ4X3QgYWN0aW9uIDogNDsKKyAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogMTsKKyAgICAg
ICAgICAgIHVpbnQ4X3QgbWF5QmVMYXJnZVR5cGVkQXJyYXkgOiAxOwogICAgICAgICB9IGFzQnl0
ZXM7CiAgICAgICAgIHVuc2lnbmVkIGFzV29yZDsKICAgICB9IHU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGM4OGRlNGIyMzljNy4u
MDM0YmRkNjYxNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtMzgwNyw4ICszODA3LDE3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0
IERPCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uLCBjb25zdCBHZXRCeVZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CisjaWYgQ1BVKFJFR0lTVEVSNjQp
CisgICAgc3RhdGljX2Fzc2VydChlbmFibGVJbnQ1MigpKTsKKyNlbmRpZgorCiAgICAgc3dpdGNo
ICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aElu
dHJpbnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNp
ZiAhQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGlu
c2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQu
c3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5
cGU7CkBAIC0zODIyLDI2ICszODMxLDMwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAg
ICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7
CiAKLSAgICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgs
IE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlz
Tm9kZSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7Cisg
ICAgICAgIE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2Rl
KGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAv
LyBPdXIgQXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hv
dWxkIGJlIG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRy
dWU7CiAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6
ZSkgewogICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hp
ZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3Ro
Ci0gICAgICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5v
ZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwg
YWRkVG9HcmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAg
ICAgIC8vIFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5
cyBtYXkgaGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5v
ZGUqIHR5cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAg
ICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUp
KTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlM
ZW5ndGhJbnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxv
dyk7CisjaWYgIUNQVShSRUdJU1RFUjY0KQorICAgICAgICBpZiAod2lsbE5lZWRHZXRUeXBlZEFy
cmF5TGVuZ3RoQXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAg
ICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2
YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0
b3JhZ2VUeXBlOwpAQCAtMzg1MywxMyArMzg2NiwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
YwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAg
ICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgs
IE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlz
Tm9kZSkpOworICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTIgPyBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA6IEdldEFycmF5TGVuZ3RoOwor
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnRyaW5z
aWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MiA9ICFpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpOworI2lm
ICFDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAg
IGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlh
bnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFn
ZVR5cGU7CkBAIC0zODcxLDcgKzM4OTAsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAg
ICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0p
OwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0
aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyID8gR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIDogR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9w
SW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9k
ZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNmZGU5Nzc5Li43NDkyMDVkNjRlZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1
Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRvckhh
c093blByb3BlcnR5OgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNl
IEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0xMzM3LDYgKzEzMzgs
MTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihU
eXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5
Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyOgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYo
SGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5v
ZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAgICBj
YXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTAsMTQgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2Rl
LT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFy
cmF5VmlldygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBM
b2NhdGlvbihUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxk
MSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2Fz
ZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJh
eU1vZGUoKTsKICAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uLmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUg
Ym9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxl
SW50NTIoKQoraW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5Ny4uNWFiZGVlODY3NWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAg
Y2FzZSBHZXRTZXR0ZXI6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNh
c2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIFB1dFN0cnVj
dHVyZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGUxYjkzZWVlNmNhLi5mMGMxYjYwNWRmYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNDMsNiAr
MTA0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUt
PmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5h
cnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFy
cmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYg
IW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsK
IAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCkBAIC0xMDczLDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBj
YXNlIEFycmF5OjpGb3JjZUV4aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBmb3JjZSBP
U1IgYmVjYXVzZSB3ZSBoYXZlIG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2RlLgotICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXRSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4u
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkg
dG8gZG8gdGhpcy4uLgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEVudW1lcmF0
b3JHZXRCeVZhbCkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUt
PmFycmF5TW9kZSgpLndpdGhUeXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMTMzLDYgKzExMzQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEtub3duU3RyaW5nVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6Oklu
dDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpJbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDhB
cnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpV
aW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpKTsKQEAgLTExODQsNiArMTE5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAg
ICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAg
ICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRl
eCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xNzE3LDEyICsxNzMxLDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OiB7CiAgICAg
ICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJS
ZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE0OSw2
ICsyMTY3LDI3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisj
aWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTI6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUo
KS5yZWZpbmUobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJy
YXlNb2RlOjp1bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChh
cnJheU1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRB
cnJheU1vZGUoYXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9k
ZS0+Y2hpbGQxKCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7
CisKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbHNlCisg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQwOTYsMTQgKzQx
MzUsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIG5vZGUtPmNoaWxkMigpID0g
RWRnZShzdG9yYWdlKTsKICAgICB9Ci0gICAgCi0gICAgTm9kZSogcHJlcGVuZEdldEFycmF5TGVu
Z3RoKE5vZGVPcmlnaW4gb3JpZ2luLCBOb2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkK
LSAgICB7Ci0gICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgb3Jp
Z2luLCBjaGlsZCwgbnVsbHB0ciwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKLSAgICAgICAgcmV0dXJu
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywg
U3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5m
byhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGNoaWxkLCBLbm93bkNlbGxVc2UpLCBFZGdlKHN0
b3JhZ2UpKTsKLSAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRUb0hhc0luZGV4ZWRQcm9wZXJ0eShO
b2RlKiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdGlvbkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJh
dGlvbkluZm8uaAppbmRleCA0ZmFmOTQ5YTc4NjAuLjJkODZlYjc1NzM5YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaApAQCAtMzksOCArMzksNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQg
dG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGxpdmUgdmFsdWVzIGR1cmluZyBjb2RlIGdl
bmVyYXRpb24uCiAvLyBDYW4gcHJvdmlkZSBpbmZvcm1hdGlvbiBhcyB0byB3aGV0aGVyIGEgdmFs
dWUgaXMgaW4gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBpZiBzbyB3aGljaCwKIC8vIHdoZXRoZXIg
YSB2YWx1ZSBoYXMgYmVlbiBzcGlsbGVkIHRvIHRoZSBSZWdpc3RlckZpbGUsIGFuZCBpZiBzbyBt
YXkgYmUgYWJsZSB0byBwcm92aWRlCi0vLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5
IChhbGwgdmFsdWVzIGFyZSBzcGlsbGVkIGluIGEgYm94ZWQgZm9ybSwgYnV0IHdlIG1heSBiZQot
Ly8gYWJsZSB0byB0cmFjayB0aGUgdHlwZSBvZiBib3gpLCBhbmQgdHJhY2tzIGhvdyBtYW55IG91
dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCisvLyBkZXRhaWxzIG9mIHRoZSBmb3Jt
YXQgaW4gbWVtb3J5LCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2
YWx1ZSByZW1haW4sCiAvLyBzbyB0aGF0IHdlIGtub3cgd2hlbiB0aGUgdmFsdWUgaXMgZGVhZCBh
bmQgdGhlIG1hY2hpbmUgcmVnaXN0ZXJzIGFzc29jaWF0ZWQgd2l0aCBpdAogLy8gbWF5IGJlIHJl
bGVhc2VkLgogY2xhc3MgR2VuZXJhdGlvbkluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCmluZGV4IDJiYjlkNGJlYTgwMC4uMDY2MWU1YjgyNmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCkBA
IC0xODIsNiArMTgyLDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBM
b2NhdGlvbktpbmQga2luZCkKICAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNl
dExvYyIpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0
SW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1Mkxv
YyIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnQ1Mkxv
YzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MiKTsKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgY2FzZSBQcm90b3R5cGVMb2M6CiAgICAgICAgIG91dC5wcmludCgi
UHJvdG90eXBlTG9jIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0hlYXBMb2NhdGlvbi5oCmluZGV4IDI2OTE3MWNiMzQxZC4uNDBmYjcxNjczMjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKQEAgLTY3LDYg
KzY3LDggQEAgZW51bSBMb2NhdGlvbktpbmQgewogICAgIFNldHRlckxvYywKICAgICBTdHJ1Y3R1
cmVMb2MsCiAgICAgVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MsCisgICAgVHlwZWRBcnJheUJ5dGVP
ZmZzZXRJbnQ1MkxvYywKKyAgICBUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MsCiAgICAgUHJvdG90
eXBlTG9jLAogICAgIFN0YWNrTG9jLAogICAgIFN0YWNrUGF5bG9hZExvYywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6
YXRpb25QaGFzZS5jcHAKaW5kZXggMWJhYTFjOGJjZjUxLi5iM2IxNDVhOTEwOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9u
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuY3BwCkBAIC0xNDk5LDYgKzE0OTksNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0
b3JMZW5ndGg6IHsKICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hpcChSZWxhdGlvbnNoaXAobm9k
ZSwgbV96ZXJvLCBSZWxhdGlvbnNoaXA6OkdyZWF0ZXJUaGFuLCAtMSkpOwogICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4u
MGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUs
NiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3Bl
cnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAg
ICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJu
IDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxE
aXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0
Y2ZkYWM4Li4wMDY2ZjdiMDI2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTI2MSw4ICsyNjEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8q
IFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBv
bmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBi
aXRzLiAqLyBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIsIE5vZGVSZXN1
bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFZlY3Rvckxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBc
CiAgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE5vZGVSZXN1bHRJbnQzMikgXAor
ICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgTm9kZVJlc3VsdEludDUy
KSBcCiAgICAgbWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNraXBT
Y29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUmVzb2x2ZVNjb3BlLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAppbmRleCBlNTA3ZjFlODBhYzAuLmIzZjJiYjdhOTEzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC05NywxMCArOTcsOCBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgSlNWYWx1ZQogICAgIH0KICAgICBpZiAoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
Ci0gICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpbmRleCwgdmFsdWUpKSB7
Ci0gICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsK
KyAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKICAgICAgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1
ZSwgc3RyaWN0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc1LDcgKzE3Myw3IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIHZvaWQgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLWNoYXIq
IG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IHNpemUsIGNoYXIqIHZlY3RvcikKK2No
YXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBzaXplLCBjaGFyKiB2ZWN0
b3IpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0x
ODMsMTEgKzE4MSwxMyBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cgogICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiX3MpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIAorCisgICAgVUNQVVJlZ2lzdGVyIHVuc2lnbmVkU2l6ZSA9IHN0
YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oc2l6ZSk7CisKICAgICBpZiAodmVjdG9yKQotICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVj
dG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplLCB1bnRhZ0FycmF5UHRyKHZlY3Rvciwg
c2l6ZSkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpj
cmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXpl
LCB1bnRhZ0FycmF5UHRyKHZlY3RvciwgdW5zaWduZWRTaXplKSkpOwogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgdW5zaWduZWRTaXplKSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+
CkBAIC0xOTA4LDcgKzE5MDgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QXJyYXlCdWZmZXIsIEpTQ2VsbCosIChWTSogdm1Qb2ludGVyLCBTdHJ1YwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJl
Z2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMTkyNCw3ICsxOTI0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE8KICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTQwLDcgKzE5NDAsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MTZBcnJheT4oZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0x
OTU2LDcgKzE5NTYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTSW50MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1
ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3Rl
ciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE5ODgsNyArMTk4OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNVaW50OENsYW1wZWRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMDQsNyArMjAwNCw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1
bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50MTZBcnJh
eT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0
KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdp
c3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTIwMjAsNyArMjAyMCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNVaW50MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAzNiw3ICsyMDM2LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1
bWVudCwgY2hhciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0MzJBcnJh
eT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0
KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJl
Z2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMjA1Miw3ICsyMDUyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDY4LDcgKzIwNjgsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsbwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmlnSW50
NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpu
dWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdV
aW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
aW5kZXggMzkzZGU4ODUwNzA3Li44Zjk2ZWMwYjA3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xMTksMjcgKzExOSwyNyBAQCBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKgogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdFbXB0eUFy
cmF5LCBjaGFyKiwgKFZNKiwgU3RydWN0dXJlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kSGludCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGludDMyX3QsIEJ1dHRlcmZseSopKTsKLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lz
dGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0
ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQx
NkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50
NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
SW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
Q1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IsIEpTQ2Vs
bCosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3TWFwSXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKaW5kZXggMjBkMDQ0ZjVmNWMwLi5kNWYwZmZjZGY1OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCkBAIC05ODYsNiArOTg2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTI6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQ1MkFueSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICAgICAgY2Fz
ZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50
MzJPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggOTI0ZmM4YzMxMDg2Li4xOTlmNmNjM2IxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNzMsNiArMzczLDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBib29sIGlnbm8KICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFBy
b3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2Fz
ZSBBcnJheVBvcDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKQEAgLTM4NSw2ICszODYsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogCiAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTI6CiAgICAgICAgIHJldHVybiAhKHN0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZSAmIH4oU3BlY1R5cGVkQXJyYXlWaWV3KSk7CiAgICAgICAgICAgICAKICAgICBj
YXNlIFB1dEJ5VmFsRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCA0OTQ1NGM4N2RkZmUuLmIzODhjZTMyZjM5MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMy
MzgsMjggKzMyMzgsNDIgQEAgc3RhdGljIHZvaWQgY29tcGlsZUNsYW1wRG91YmxlVG9CeXRlKEpJ
VENvbXBpbGVyJiBqaXQsIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBzb3UKIAogfQogCi1KSVRDb21w
aWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhO
b2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKQorSklUQ29tcGlsZXI6
Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSog
bm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIp
CiB7CiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxBbGlhcykKICAgICAgICAgcmV0dXJu
IEpJVENvbXBpbGVyOjpKdW1wKCk7CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2pp
dC5ncmFwaCgpLnRyeUdldEZvbGRhYmxlVmlldygKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG1f
aml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsK
ICAgICBpZiAodmlldykgewotICAgICAgICB1aW50MzJfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgo
KTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCA9IHZpZXctPmxlbmd0aCgpOwogICAgICAg
ICBOb2RlKiBpbmRleE5vZGUgPSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDEpLm5vZGUoKTsK
LSAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNJbnQzMkNvbnN0YW50KCkgJiYgaW5kZXhOb2RlLT5h
c1VJbnQzMigpIDwgbGVuZ3RoKQorICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0FueUludENvbnN0
YW50KCkgJiYgaW5kZXhOb2RlLT5hc1VJbnQzMigpIDwgbGVuZ3RoKQogICAgICAgICAgICAgcmV0
dXJuIEpJVENvbXBpbGVyOjpKdW1wKCk7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIG1f
aml0LnNpZ25FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vsc2UK
ICAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgp
KTsKKyNlbmRpZgogICAgIH0KKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIG1faml0LnNpZ25F
eHRlbmQzMlRvUHRyKGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKKyAgICByZXR1cm4gbV9qaXQuYnJh
bmNoNjQoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIs
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZWxzZQogICAgIHJldHVybiBtX2ppdC5icmFuY2gz
MigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
IGluZGV4R1BSKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVj
ayhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUikKIHsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wID0ganVtcEZvclR5cGVkQXJy
YXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBpbmRleEdQUik7CisgICAgSklUQ29tcGlsZXI6
Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZUdQUiwg
aW5kZXhHUFIsIHNjcmF0Y2hHUFIpOwogICAgIGlmICghanVtcC5pc1NldCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwg
bnVsbHB0ciwganVtcCk7CkBAIC0zMzgwLDE3ICszMzk0LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBub2RlLCBUeXBlZEFycmF5
VHlwZSB0CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVy
dHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgU3RvcmFnZU9wZXJh
bmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIo
KTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICBHUFJSZWcg
c3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKICAgICBEYXRhRm9ybWF0
IGZvcm1hdDsKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4KERhdGFG
b3JtYXRJbnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZvcm1hdEpT
OwogCi0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0b3JhZ2VS
ZWcsIHByb3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAgICAgY29u
c3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFycmF5TG9h
ZFJlc3VsdChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3VsZEJveCk7
CkBAIC0zNTQ4LDYgKzM1NjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlW
YWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydAogICAgIEFTU0VS
VChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCAodGhpcyk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOwogICAg
IAogICAgIEVkZ2UgdmFsdWVVc2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIp
OwpAQCAtMzU4MCw3ICszNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnQKICAgICBBU1NF
UlRfVU5VU0VEKHZhbHVlR1BSLCB2YWx1ZUdQUiAhPSBwcm9wZXJ0eSk7CiAgICAgQVNTRVJUKHZh
bHVlR1BSICE9IGJhc2UpOwogICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBzdG9yYWdlUmVnKTsKLSAg
ICBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZC
b3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9m
Qm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0
eSwgc2NyYXRjaC5ncHIoKSk7CiAKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAg
ICAgY2FzZSAxOgpAQCAtMzYzOCwxMCArMzY1NSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlw
ZQogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0
b3JhZ2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAg
ICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3Jh
Z2VSZWcgPSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7CiAgICAgRGF0YUZvcm1hdCBmb3Jt
YXQ7CkBAIC0zNjQ5LDcgKzM2NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZQogCiAgICAg
RlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBGUFJSZWcgcmVzdWx0UmVnID0gcmVzdWx0
LmZwcigpOwotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJv
cGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywg
cHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkp
IHsKICAgICBjYXNlIDQ6CiAgICAgICAgIG1faml0LmxvYWRGbG9hdChNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNG
b3VyKSwgcmVzdWx0UmVnKTsKQEAgLTM2ODMsMTAgKzM3MDIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJS
ZWcgcHJvcGUKIAogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1
ZVVzZSk7CiAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5
IGdwU2NyYXRjaCh0aGlzKTsKICAgICBGUFJSZWcgdmFsdWVGUFIgPSB2YWx1ZU9wLmZwcigpOwog
ICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsKKyAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IGdwU2NyYXRjaC5ncHIoKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9m
Qm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0
eSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRB
cnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoR1BSKTsKICAgICAK
ICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OiB7CkBAIC03OTYw
LDcgKzc5ODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWdlVHlwZWRBcnJheVN0b3JhZ2Uo
R1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBzdG9yYWdlUmVnLCBibwogewogICAgIGF1dG8gdW50YWdB
cnJheVB0ciA9IFsmXSgpIHsKICNpZiBDUFUoQVJNNjRFKQotICAgICAgICBtX2ppdC51bnRhZ0Fy
cmF5UHRyTGVuZ3RoMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzdG9yYWdlUmVnLCB2YWxpZGF0ZUF1dGgpOwor
ICAgICAgICBtX2ppdC51bnRhZ0FycmF5UHRyTGVuZ3RoNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzdG9yYWdl
UmVnLCB2YWxpZGF0ZUF1dGgpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHZhbGlkYXRl
QXV0aCk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiYXNlUmVnKTsKQEAgLTgwMzIsOSArODA1Myw2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChO
b2RlKiBub2RlKQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcg
dmVjdG9yR1BSID0gdmVjdG9yLmdwcigpOwogICAgIEdQUlJlZyBkYXRhR1BSID0gZGF0YS5ncHIo
KTsKLSAgICBBU1NFUlQoYmFzZUdQUiAhPSB2ZWN0b3JHUFIpOwotICAgIEFTU0VSVChiYXNlR1BS
ICE9IGRhdGFHUFIpOwotICAgIEFTU0VSVCh2ZWN0b3JHUFIgIT0gZGF0YUdQUik7CiAKICAgICBH
UFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOwogCkBAIC04MDc2LDYgKzgwOTQsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUq
IG5vZGUpCiAgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CiAjZW5kaWYKIAorI2lmIENQVShS
RUdJU1RFUjY0KQorICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhlIHJlc3VsdCBvZiBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBtdXN0IHVwaG9sZCB0aGF0IHBy
b21pc2UgaGVyZS4KKyAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygp
LCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHZlY3RvckdQ
UiwgVHJ1c3RlZEltbTMyKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOwor
I2VuZGlmCisKICAgICBzdHJpY3RJbnQzMlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOwogfQogCkBA
IC04MzQyLDEyICs4MzY1LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJh
eUxlbmd0aChOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBiYXNlKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworI2lmIENQVShSRUdJU1RFUjY0KQor
ICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0
LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQo
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBt
X2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0
cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0g
fQogfQogCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5v
ZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMTExMTIsMTAgKzExMTQxLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5
cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIENQVShS
RUdJU1RFUjY0KQorICAgIC8vIFRoZSBvcGVyYXRpb25zIHdlIGNhbGwgb24gdGhlIHNsb3cgcGF0
aCBleHBlY3QgYSBDUFVSZWdpc3Rlciwgc28gaW50NjRfdCBvbiA2NCBiaXQgcGxhdGZvcm1zCiAg
ICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5n
cHIoKTsKLSAgICAKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAg
bV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CisgICAgZW1pdE5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVj
dHVyZSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXpl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7
CisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJh
eVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7CisjZW5kaWYKK30KKwordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSogbm9kZSwgVHlw
ZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
LCBHUFJSZWcgc2l6ZUdQUikKK3sKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAg
IEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwpAQCAtMTExMjksOCArMTExNzIsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIAogICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihudWxscHRyKSwgc3RvcmFnZUdQUik7CiAKKyNpZiBVU0UoUkVHSVNURVI2
NCkKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRydXN0ZWRJbW02NChKU0FycmF5QnVmZmVyVmlldzo6
ZmFzdFNpemVMaW1pdCkpKTsKKyAgICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0
aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRp
Y19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVM
aW1pdCkpOworI2Vsc2UKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihKU0FycmF5
QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpKTsKKyNlbmRpZgogICAgIAogICAgIG1faml0Lm1v
dmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMy
KGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTExODYs
OSArMTEyMzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShOb2RlKiBub2RlKQogICAgIG1faml0LnN0b3JlUHRyKAogICAgICAgICBzdG9yYWdl
R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAg
bV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBUcnVz
dGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAtMTQx
NjAsNiArMTQyMTYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJy
YXkoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3VHlw
ZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBDUFUoUkVHSVNURVI2
NCkKKyAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICBjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhJbnQ1MlNpemUobm9kZSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBVbnR5
cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNW
YWx1ZVJlZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAppbmRleCBiNjUxNWQ4YjcyMTkuLmRlYjlhOTMwN2MzNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMDAsOSArMTMwMCwxMyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENv
bnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKICAgICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdP
YmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld1N5bWJvbChOb2RlKik7Ci0gICAgCisK
KyAgICB2b2lkIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqLCBUeXBl
ZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpOwogICAgIHZv
aWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKik7Ci0gICAgCisjaWYgQ1BVKFJF
R0lTVEVSNjQpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9k
ZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3Jv
QXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVJbnQ1MkNv
bXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICNpZiBV
U0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21w
aWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0
aChOb2RlKik7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVj
a1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSop
OwpAQCAtMTQzMSwxMCArMTQzOCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhN
aW5NYXgoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwot
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSos
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1w
IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJS
ZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBq
dW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJZk91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFz
ZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVk
QXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7
CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxl
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSopOworI2lmIENQVShSRUdJU1RFUjY0KQorICAg
IHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKik7CisjZW5k
aWYKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiwgVHlwZWRB
cnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRh
Rm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwogICAgIHZvaWQg
Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3Bl
cnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25G
bG9hdFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8
c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRG
b3JtYXQpPiYgcHJlZml4KTsKQEAgLTI0MjcsNyArMjQzNyw3IEBAIHByaXZhdGU6CiAgICAgR1BS
UmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KKy8vIEdpdmVz
IHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxMiwgbG93
IGJpdHMgemVybykuCiBjbGFzcyBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMjQ3NSw3ICsyNDg1LDcgQEAgcHJpdmF0ZToK
ICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBzdHJpY3Qg
SW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJp
dHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgorLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUu
IHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNTIgYml0cywgaGlnaCAxMiBiaXRzIGFyZSBzaWdu
LWV4dGVuZGVkKS4KIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2YTBmMjUyMGVhMzcu
LmIzNjU5YmEwMjkxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMTM0LDYgKzIxMzQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRh
PHN0ZDo6dHVwbGU8SgogICAgICAgICBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50cyhu
b2RlLCBwcmVmaXgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OiB7CisgICAgICAgIEFT
U0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKICAgICAgICAg
VHlwZWRBcnJheVR5cGUgdHlwZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9u
SW50VHlwZWRBcnJheShub2RlLCB0eXBlLCBwcmVmaXgpOwpAQCAtMzUzOCw2ICszNTM5LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGls
ZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHR5cGVk
IGFycmF5cyBsYXJnZXIgdGhhbiAyR0Igb24gMzItYml0IHBsYXRmb3Jtcy4KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIERl
bGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMzYyMCw2ICszNjI2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjog
ewogICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggZTEzNWZkNTM0OGU4Li45NWQwY2YzOWYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2OTQsNiArMjY5NCw4
NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29u
c3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgIH0gfQogfQogCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9kZSogbm9kZSkKK3sK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBhdXRvIHR5cGVkQXJyYXlUeXBl
ID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBl
ZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3Bl
cmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNp
emUuZ3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2Rl
LCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqIG5vZGUpCit7
CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZp
ZXcoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CisgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgxdWxsIDw8IDUyKSwgInRoZXJl
IGlzIGEgcmlzayB0aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJyYXkgd29uJ3QgZml0IGluIGFu
IEludDUyIik7CisgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MihOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3IodGhpcyk7CisgICAgR1BSVGVt
cG9yYXJ5IGRhdGEodGhpcyk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Cisg
ICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKKyAgICBHUFJSZWcgZGF0YUdQUiA9
IGRhdGEuZ3ByKCk7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJhbmNoMzIoCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwKKyAg
ICAgICAgVHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBu
dWxsVmVjdG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmVjdG9yR1BS
LCBUcnVzdGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKTsKKwor
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2FnZVdpdGhvdXRV
bnRhZ2dpbmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAgY2FnZVR5cGVkQXJy
YXlTdG9yYWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZl
cigpKSwgYXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNhZ2luZy4K
KyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTE1Cisg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1ZmZlckdQUiwg
QXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYgQ1BVKEFSTTY0RSkK
KyAgICBtX2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRpZgorCisgICAgbV9q
aXQuc3ViUHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBk
b25lID0gbV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBudWxsVmVjdG9yLmxp
bmsoJm1faml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZtX2ppdCk7Cisg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIpOworCisgICAg
ZG9uZS5saW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNTRVJUKCFKU0FycmF5
QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0
KTsKKyNlbmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKK30K
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5vZGVU
eXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjIsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaDsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgaW5k
ZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRUeXBlZEFycmF5Qm91
bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgICAgICBlbWl0VHlwZWRBcnJh
eUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoLmdwcigpKTsKICAg
ICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwogICAgICAgICAKQEAgLTQzNzUs
NiArNDQ1NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjb21waWxlR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTIobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBE
ZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTQ0OTMsNiArNDU3NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
R2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTU1ODAsMTAgKzU2NjgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbm9k
ZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoUkVHSVNURVI2NCkKKyAgICAgICAgbV9qaXQu
c2lnbkV4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQyKTsKKyNlbHNlCiAgICAgICAgIG1faml0Lnpl
cm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOworI2VuZGlmCiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRh
LmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRh
dGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IHQyLCB0MSkpOwogCkBAIC01NzgxLDEwICs1ODczLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5l
bXBsYWNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAgICAgICBHUFJS
ZWcgaXNMaXR0bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVuZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVu
ZGlhbk9wZXJhbmQtPmdwcigpIDogSW52YWxpZEdQUlJlZzsKIAorI2lmIFVTRShSRUdJU1RFUjY0
KQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgdDIpOworI2Vsc2UK
ICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CisjZW5kaWYK
ICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQo
VHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1Zh
bHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1
MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAg
ICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0
aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAg
ICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNr
RGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdl
OgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAg
ICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAg
ICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNh
c2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAg
IGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEyNDhjOWZhZDY3
Li43NGZlODk1MjZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKQEAgLTE3MCw2ICsxNzAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50
NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAg
IGNhc2UgU3RvcmVCYXJyaWVyOgpAQCAtMzkxLDYgKzM5Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9p
bnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0
VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhU
aGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmlu
ZGV4IDJhZGRmZjc3YjAzNS4uMDY0NDNhM2M5ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDI1LDYgKzEwMjUsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRB
cnJheUxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICBjb21w
aWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoKTsKKyAgICAgICAgICAgIGJyZWFrOworI2Vu
ZGlmCiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdl
dFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTc1LDYgKzExODAsMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAg
ICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorI2lmIENQ
VShSRUdJU1RFUjY0KQorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
QXNJbnQ1MigpOworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOgogICAgICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTQ4MjgsOSArNDg0MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5p
c051bGwobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rv
cikpKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgp
CisgICAgTFZhbHVlIGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1
bHQoKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpOyAgICAKKyAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIHdhc3RlZnVsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGwgPSBtX291dC5uZXdCbG9jaygpOwpA
QCAtNDg0Niw3ICs0ODU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyh3YXN0ZWZ1bENhc2UsIG5vdE51bGwpOwogCiAgICAgICAgIExW
YWx1ZSB2ZWN0b3IgPSBtX291dC5sb2FkUHRyKGJhc2VQdHIsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfdmVjdG9yKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3Rvciwg
bV9vdXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLCAK
KyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3RvciwgbV9vdXQuY29uc3RJbnRQ
dHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLAogICAgICAgICAgICAgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3ROdWxsKSk7CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obm90TnVsbCwgY29udGludWF0aW9uKTsKQEAgLTQ4NjYsOSArNDg3OCwyNiBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgIHNldEludDMyKG1fb3V0
LmNhc3RUb0ludDMyKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxsVmVjdG9yT3V0LCB3YXN0
ZWZ1bE91dCkpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxs
VmVjdG9yT3V0LCB3YXN0ZWZ1bE91dCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsKKyNpZiBDUFUoUkVH
SVNURVI2NCkKKyAgICAgICAgLy8gQUkgcHJvbWlzZXMgdGhhdCB0aGUgcmVzdWx0IG9mIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0IHdpbGwgYmUgSW50MzIsIHNvIHdlIG11c3QgdXBob2xkIHRoYXQg
cHJvbWlzZSBoZXJlLgorICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVs
bHB0ciwgbV9vdXQuYWJvdmVPckVxdWFsKHJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorICAgICAgICBzZXRJbnQz
MihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAgICB9CisjaWYgQ1BVKFJFR0lTVEVSNjQp
CisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCkKKyAgICB7
CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNl
cHRTZXR0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldFN0cmljdEludDUyKHJlc3VsdCk7CisgICAg
fQorI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1MDgzLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJy
YXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSkgewotICAgICAgICAgICAgICAgIHNldElu
dDMyKAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOwor
ICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0
aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxw
dHIsIG1fb3V0LmFib3ZlT3JFcXVhbChsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIo
bV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYgKzUwOTQsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2Rl
KCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0
LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2
b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25v
ZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAtODE2OSw5OCArODIwNiwyMSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50
eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAKLSAgICAg
ICAgICAgIExWYWx1ZSBzaXplID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7Ci0KLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5h
bmNob3IobV9vdXQuaW50UHRyWmVybyk7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0
LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAg
ICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQu
Y29uc3RJbnQzMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAg
ICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91
Z2hDYXNlLCBzbG93Q2FzZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAg
ICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0
SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAo
ZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVT
aXplID0gbV9vdXQuYml0QW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNp
emUsIG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZt
KCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsK
LSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3Is
IHNsb3dDYXNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAg
ICAgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291
dC5jb25zdEludFB0cigzKSkpLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAg
ICAgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShB
Uk02NEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBt
X291dC56ZXJvRXh0UHRyKHNpemUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSog
YXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAg
ICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6
OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBq
aXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0g
ICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0
b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBmYXN0
UmVzdWx0VmFsdWUgPSBudWxscHRyOwotICAgICAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlw
ZSkgewotI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAotICAgICAgICAgICAg
Y2FzZSBUeXBlICMjIG5hbWU6IFwKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBh
bGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVy
bywgc2xvd0Nhc2UpOyBcCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBGT1Jf
RUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQ
RV9DQVNFKQotI3VuZGVmIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRQotICAgICAgICAgICAgY2FzZSBU
eXBlRGF0YVZpZXc6Ci0gICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVP
YmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2Us
IGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAg
ICAgICAgICAgbV9vdXQuc3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQu
Y29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19tb2RlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbXV0YXRvckZl
bmNlKCk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5j
aG9yKGZhc3RSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBl
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTog
eworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJl
bnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93
Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBt
X291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAg
ICAgICBMVmFsdWUgc2l6ZSA9IGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpOwogCi0g
ICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dS
ZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29u
c3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpH
ZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2Vu
ZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJh
eVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIo
KSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVz
dWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotCi0gICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
ICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dS
ZXN1bHQpKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJh
eVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotCisjZW5kaWYKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAg
ICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwog
CkBAIC04Mjc3LDcgKzgyMzcsMTAwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGVtaXROZXdUeXBlZEFycmF5V2l0aFNp
emUoVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFsdWUgc2l6ZTY0Qml0cykK
KyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3IobV9vdXQuaW50
UHRyWmVybyk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQuYWJv
dmUoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQ2NChKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNp
emVMaW1pdCkpLAorICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShzbWFsbEVu
b3VnaENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOworICAgICAgICAvLyBXZSBhc3N1bWUgdGhy
b3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUgaXMgYSAzMi1iaXQg
bnVtYmVyLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJh
eUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKworICAgICAgICBMVmFsdWUgYnl0ZVNpemUg
PQorICAgICAgICAgICAgbV9vdXQuc2hsKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50MzIobG9n
RWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0
eXBlZEFycmF5VHlwZSkgPCA4KSB7CisgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFu
ZCgKKyAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRy
KDcpKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KDcpKSk7CisgICAgICAgIH0KKworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxs
b2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVT
aXplLCBzbG93Q2FzZSk7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2Vs
bChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKKworICAgICAgICBzcGxhdFdvcmRzKAorICAgICAgICAg
ICAgc3RvcmFnZSwKKyAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKKyAgICAgICAgICAgIG1f
b3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDMp
KSksCisgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCisgICAgICAgICAgICBtX2hlYXBzLnR5
cGVkQXJyYXlQcm9wZXJ0aWVzKTsKKworI2lmIENQVShBUk02NEUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChw
b2ludGVyVHlwZSgpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lz
dGVyKHN0b3JhZ2UpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZTY0Qml0
cywgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAg
ICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAg
ICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAg
ICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsKKyAg
ICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBt
X291dC5hbmNob3Ioc3RvcmFnZSk7CisKKyAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9
IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKKyNkZWZpbmUgVFlQ
RURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKKyAgICAgICAgY2FzZSBUeXBlICMjIG5hbWU6IFwK
KyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNB
cnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19E
QVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQorI3VuZGVmIFRZUEVEX0FSUkFZX1RZUEVf
Q0FTRQorICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKKyAgICAgICAgICAgIGZhc3RSZXN1bHRW
YWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd0Nhc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVz
dWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKKyAgICAgICAgbV9v
dXQuc3RvcmU2NChzaXplNjRCaXRzLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMy
KEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X21vZGUpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBWYWx1ZUZyb21C
bG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7CisgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93
Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0
LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKworICAgICAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOworICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6
eVNsb3dQYXRoKAorICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4m
IGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAorICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlU
eXBlKSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBs
b2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sy
XS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2l6ZTY0Qml0cywg
c3RvcmFnZVZhbHVlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0
LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Cisg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNs
b3dSZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUFs
bG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBvYmplY3QgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTQ2NTYsNiArMTQ3MDksOCBAQCBwcml2YXRl
OgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gYmFzZSBhbmQgdmFsdWUgYXJlIDY0LWJpdHMs
IGJlZ2luIGFuZCBlbmQgYXJlIDMyLWJpdHMKKyAgICAvLyBzdG9yZXMgdmFsdWUgYXQgZXZlcnkg
NjQtYml0cyB3b3JkIGJldHdlZW4gYmFzZStiZWdpbio4IGFuZCBiYXNlK2VuZCo4CiAgICAgdm9p
ZCBzcGxhdFdvcmRzKExWYWx1ZSBiYXNlLCBMVmFsdWUgYmVnaW4sIExWYWx1ZSBlbmQsIExWYWx1
ZSB2YWx1ZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBoZWFwKQogICAgIHsKICAgICAgICAgY29uc3Qg
dWludDY0X3QgdW5yb2xsaW5nTGltaXQgPSAxMDsKQEAgLTE1NTkxLDcgKzE1NjQ2LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRh
KCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBMVmFsdWUg
aW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRl
eFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0
LDcgKzE1Nzg5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1f
bm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnpl
cm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJh
eUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2Fk
NjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
OwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7
CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVj
ayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6
ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3MjkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBk
b1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02NEUp
CiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAgICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQu
bG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZh
bHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZElu
c3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBw
b2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9u
TmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJu
IGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZh
bHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNl
LCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZh
bHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IGY3ODZmNzY1MWE2MC4uNWQyYzZjNDAyMDEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC04MywyMyArODMsMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRj
aCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsK
KyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwg
c3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50
MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0
aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBDUFUoUkVHSVNURVI2
NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAg
ICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkKKyAgICAgICAgICAgIGppdC5sc2hpZnQ2
NChUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAg
IGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRl
LnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHZhbHVlR1BSKTsKLQogICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKSB7Ci0g
ICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3ZSBUeXBlZEFy
cmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgotICAg
ICAgICAgICAgaml0LmxzaGlmdDMyKHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBl
KSksIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJl
IHNpbmNlIG9uIDMyLWJpdCBwbGF0Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxl
bmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KKyAgICAgICAgICAgIGppdC5sc2hpZnQzMihU
cnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAgICAgICAgIH0K
LQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAg
ICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwLDgg
KzEzOSwxMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNH
ZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQubW92ZShUcnVz
dGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBkb25lLmxp
bmsoJmppdCk7Ci0gICAgICAgIAorCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5i
b3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0
Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3Mp
OworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDRh
NWMwODBjMDYwYy4uZmFjOGUwYWM2NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlW
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFs
dWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1
ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
YmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShp
LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwg
aSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZt
LCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAg
ICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MiwyMSArMjM0MCwyMiBA
QCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0
ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7
Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAg
IHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkp
IHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0
SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5k
ZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmlu
ZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlm
IChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJv
dW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsK
KyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlj
a2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAog
ICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKLSAgICAg
ICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMg
JiYgaSA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5
KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5
cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJ
bnQzMiwgYW5kIG1heWJlIERvdWJsZToKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCiAgICAgICAgICAgICAgICAgYXV0byog
Z2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwpAQCAtMjM3Miw4ICsyMzcx
LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChpID49IDApCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkp
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2Jh
bE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFz
ZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5z
ZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNDFjNzFiNjAwNDRlLi4zYWMyZjAxMGM0ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21D
b25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgKQEAgLTE0OSw2ICsxNDksMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5U
MzIgMAogI2VuZGlmCiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgT0ZGTElORV9BU01f
UkVHSVNURVI2NCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9SRUdJU1RFUjY0IDAKKyNl
bmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0
IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAppbmRleCA1NjgxMzc3YmI5ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3LDggKzEwNDcsOCBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRP
dXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7
CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAg
ICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAo
SlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2Zp
bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wg
c2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0ICsxMTcwLDEzIEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1
ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0
KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwog
ICAgIAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50
cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAg
ICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNh
blNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJ
bmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGlmICghb2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2Rl
KTsKICAgICAgICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjQyMWE3
ZmE0MTBlLi5mYzE2ZWViNGVkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNW
QUxVRTY0CiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBT
dHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBl
bmQKIAoraWYgUkVHSVNURVI2NAorICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9
IGNvbnN0ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQK
KwogY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJN
NjQgb3IgQVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5
UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQog
ICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5
cGUKIGVuZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaElu
dEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBp
bmRleCBpcyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21h
Y3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZp
bmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMg
Rmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRz
IHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5
cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwx
MyArMTMyNiwyMiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlz
aEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAg
ICAgICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAg
ICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAg
ICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNBcnJheUJ1
ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgYnFhZXEgaW5kZXgsIGxl
bmd0aCwgc2xvd1BhdGgKKyAgICBlbHNpZiBSRUdJU1RFUjY0CisgICAgICAgICMgbGVuZ3RoIGFu
ZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNh
dXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEg
aW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBl
bHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVm
aW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBs
YXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0
aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAgICAg
YnFiZXEgaW5kZXgsIFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCwgLnNtYWxsVHlwZWRBcnJheQor
ICAgICAgICBzZXRMYXJnZVR5cGVkQXJyYXkoKQorLnNtYWxsVHlwZWRBcnJheToKKyAgICBlbmQK
KwogICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3RvcltiYXNlXSwgdDMKICAgICBj
YWdlZFByaW1pdGl2ZSh0MywgbGVuZ3RoLCBiYXNlLCBzY3JhdGNoKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IDUwZDVkYmRmNjAyYS4uNjc4ZWM2NGM2NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MTY2OSw3ICsxNjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgp
CiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5
KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRC
eVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlW
YWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBtYWNybyAoKSBlbmQsIC5vcEdldEJ5VmFsU2xvdykK
IAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dl
dF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ4NGI2ZWFkMzdmZC4uNDg1NDcwMWQ4ZWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEzLDE2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAg
ICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAorICAg
IGlmIFJFR0lTVEVSNjQKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAg
ICAgICAgIHN0b3JlYiAxLCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9t
YXlCZUxhcmdlVHlwZWRBcnJheVt0NV0KKyAgICAgICAgZW5kCisgICAgZWxzZQorICAgICAgICBt
YWNybyBzZXRMYXJnZVR5cGVkQXJyYXkoKQorICAgICAgICAgICAgY3Jhc2goKQorICAgICAgICBl
bmQKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKIAogICAgIGdldChtX2Jhc2UsIHQy
KQpAQCAtMTcyMyw3ICsxNzMzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogICAgIGdl
dChtX3Byb3BlcnR5LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwg
dDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgc3hpMnEgdDEsIHQxCisgICAgc3hpMnEgdDEs
IHQxICMgVGhpcyBzaWduLWV4dGVudGlvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdl
dEJ5VmFsVHlwZWRBcnJheSB3b3JrIGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAKICAgICBsb2Fk
Q2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCiAg
ICAgbW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwpAQCAtMTc2Myw3ICsxNzczLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhl
ZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlW
YWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxU
eXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFs
LCBzZXRMYXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93
OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcx
OTFlLi45Y2Q3ZTQzNmY1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9p
ZCopPj4gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0
dXJuIGRlc3RydWN0b3IuZ2V0KCkuY29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwg
VUNQVVJlZ2lzdGVyIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1
Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1v
dmUoZGVzdHJ1Y3RvcikpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3
IEBAIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJD
b250ZW50cyYmIG90aGVyKQogICAgIG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJh
eUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVk
IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3Ip
CitBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVD
UFVSZWdpc3RlciBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBk
ZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXpl
SW5CeXRlcyhzaXplSW5CeXRlcykKIHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlC
dWZmZXJDb250ZW50czo6cmVzZXQoKQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lk
IEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3Zv
aWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGlj
eSkKIHsKLSAgICAvLyBEbyBub3QgYWxsb3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBz
aXplLgotICAgIGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUg
PSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAv
IG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlf
QlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KKyAgICBDaGVja2VkU2l6ZSBzaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzOwor
ICAgIHNpemVJbkJ5dGVzICo9IGVsZW1lbnRCeXRlU2l6ZTsKKyAgICBpZiAoc2l6ZUluQnl0ZXMu
aGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJbkJ5dGVzLnZhbHVlKCkgPiBNQVhfQVJSQVlfQlVGRkVS
X1NJWkUpIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG51bUVsZW1lbnRzKSAqIHN0
YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudEJ5dGVTaXplKTsKLSAgICBzaXplX3QgYWxsb2NhdGlv
blNpemUgPSBzaXplSW5CeXRlczsKKworICAgIFVDUFVSZWdpc3RlciBhbGxvY2F0aW9uU2l6ZSA9
IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgaWYgKCFhbGxvY2F0aW9uU2l6ZSkKICAgICAgICAg
YWxsb2NhdGlvblNpemUgPSAxOyAvLyBNYWtlIHN1cmUgbWFsbG9jIGFjdHVhbGx5IGFsbG9jYXRl
cyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11Y2guIFdlIHVzZSBudWxsIHRvIG1lYW4gdGhhdCB0
aGUgYnVmZmVyIGlzIGRldGFjaGVkLgogCiAgICAgdm9pZCogZGF0YSA9IEdpZ2FjYWdlOjp0cnlN
YWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYWxsb2NhdGlvblNpemUpOwotICAgIG1fZGF0YSA9
IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzKTsKKyAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRh
LCBzaXplSW5CeXRlcy52YWx1ZSgpKTsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgcmVzZXQo
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHZvaWQgQXJyYXlCdWZmZXJD
b250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlCiAgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKICAgICAgICAgbWVtc2V0
KGRhdGEsIDAsIGFsbG9jYXRpb25TaXplKTsKIAotICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5C
eXRlczsKKyAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBSRUxF
QVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiAgICAg
bV9kZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3Rvcigp
OwogfQpAQCAtMTc4LDcgKzE3Niw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVX
aXRoKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQogICAgIFJFTEVBU0VfQVNTRVJUKG90aGVy
Lm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0KIAotUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUo
VUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAg
ICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSk7
CiAgICAgaWYgKCFidWZmZXIpCkBAIC0xOTEsNyArMTg5LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUo
Y29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBhdXRv
IGJ1ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtMjA4LDcgKzIwNiw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyBDdXJyZW50IHRoaXMgaXMgb25s
eSB1c2VkIGZyb206CiAvLyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PD46OnNsb3dEb3duQW5k
V2FzdGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1vcnkgc2hvdWxkIGhhdmUgYWxy
ZWFkeSBjb21lCiAvLyAgIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQq
IGRhdGEsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIEFTU0VSVCghR2lnYWNhZ2U6
OmlzRW5hYmxlZCgpIHx8IChHaWdhY2FnZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNhZ2U6OmNv
bnRhaW5zKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5ndGggLSAx
KSkpOwogICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgQXJyYXlC
dWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIyMCw3ICsyMTgsNyBA
QCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQq
IGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndAogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdlIGNvdWxk
IGludHJvZHVjZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUgdW5jYWdl
ZCBhbmQgZ2V0IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3NlbWJseS4g
V2FzbSBzaG91bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRl
TGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitSZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0
YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYgZGVzdHJ1Y3RvcikKIHsKICAgICBpZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0
aXZlR2lnYWNhZ2UoKTsKQEAgLTIyOSw3ICsyMjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bgogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzOSw3ICsy
MzcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlC
dWZmZXImIG90aGVyKQogICAgIHJldHVybiB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5i
eXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQ
VVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50
czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CkBAIC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNp
Z25lZCBieXRlTGVuZwogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRlbnRz
KSwgc291cmNlLCBieXRlTGVuZ3RoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0
aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFy
cmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVs
ZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFs
aXplKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVu
dHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5
KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIHBvbGljeSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yNjYsMTUgKzI2NCwxNyBAQCBS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlUwogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQ
VVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFieXRlTGVuZ3RoIHx8IHNvdXJj
ZSk7CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdFJlZigqbmV3IEFycmF5QnVmZmVyKFdURk1vdmUo
Y29udGVudHMpKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5n
dGgpOworICAgIGlmIChieXRlTGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChzb3VyY2UpOworICAg
ICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgfQog
ICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNv
bnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQXJyYXlCdWZmZXI6OkFycmF5QnVm
ZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIHsKIH0KIAotdW5zaWduZWQgQXJy
YXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJp
Z2h0KQorVUNQVVJlZ2lzdGVyIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBVQ1BV
UmVnaXN0ZXIgbGVmdCwgVUNQVVJlZ2lzdGVyIHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0IDw9
IHJpZ2h0KTsKICAgICBpZiAoeCA8IGxlZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVk
IHJpZ2h0KQogICAgIHJldHVybiB4OwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJ
bmRleChkb3VibGUgaW5kZXgpIGNvbnN0CitVQ1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmNsYW1w
SW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgg
PSBieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGN1cnJlbnRMZW5ndGggPSBieXRlTGVu
Z3RoKCk7CiAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3Ro
ICsgaW5kZXg7CiAgICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgp
OwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlKGRvdWJsZSBiZWdpbikgY29uc3QKICAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4
KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVu
c2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNl
V2l0aENsYW1wZWRJbmRleChVQ1BVUmVnaXN0ZXIgYmVnaW4sIFVDUFVSZWdpc3RlciBlbmQpIGNv
bnN0CiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDog
MDsKKyAgICBVQ1BVUmVnaXN0ZXIgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDog
MDsKICAgICBhdXRvIHJlc3VsdCA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7CiAgICAgaWYgKHJlc3VsdCkKICAg
ICAgICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9kZShzaGFyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IDY4ZmY5MGUxM2ViYS4uYjBh
ZTU2YmU1OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMywxMyArMzMsMjIgQEAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aD4KICNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NoYXJlZFRh
c2suaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIENQVShS
RUdJU1RFUjY0KQorI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihVQ1BVUmVnaXN0ZXIpID09IHNpemVvZih1aW50NjRfdCkpOwor
I2Vsc2UKKy8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgVUNQVVJlZ2lzdGVyIHRvIHN0b3JlIHRo
ZSBzaXplIGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRHQiBv
biAzMi1iaXQgcGxhdGZvcm1zLgorLy8gTm90ZSB0aGF0IHN0b3JpbmcgdGhlIHNpemUgaW4gYSB1
aW50NjRfdCB3b3VsZCBiZSBxdWl0ZSBtZXNzeSBvbiAzMi1iaXRzIGFzIHRoZSBKSVQgaGF2ZSB0
byBiZSBhYmxlIHRvIG1hbmlwdWxhdGUgaXQuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAy
R0IuIEl0IHNob3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdC
IC0gMUIpIGlmIGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4
N2ZmZmZmZmZ1CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUx
LDcgKzYwLDcgQEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQ
YWNrZWRSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYm
KTsKKyAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3Rl
ciwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMoKTsKICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmdldE1heUJlTnVsbChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHBy
aXZhdGU6CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZl
LCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBt
X3NpemVJbkJ5dGVzOworICAgIFVDUFVSZWdpc3RlciBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xh
c3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlC
dWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZm
ZXJDb250ZW50cygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9p
ZCogZGF0YSwgVUNQVVJlZ2lzdGVyIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiYmKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRl
bnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlC
dWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFycmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3
ICs4OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4g
ISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmdldE1heUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQorICAgIFVDUFVSZWdpc3RlciBzaXpl
SW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAgICAKICAgICBib29s
IGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEw
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0aWFsaXplCiAgICAgfTsKIAotICAgIHZv
aWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHZvaWQgdHJ5QWxsb2NhdGUoVUNQVVJl
Z2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0
aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHRyYW5z
ZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4ICsxMTQsMjggQEAgcHJpdmF0
ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9y
RnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZl
ckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIFVD
UFVSZWdpc3RlciBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJs
aWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0
ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNp
Z25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVn
aXN0ZXIgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKFVD
UFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJy
YXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKICAgICAv
LyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKICAgICBpbmxpbmUgY29u
c3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkg
Y29uc3Q7CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3Q7CiAgICAg
CiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFyaW5nTW9kZShBcnJheUJ1
ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91
YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVy
PiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1bnNp
Z25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVy
IGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZv
aWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdh
Y2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29u
c3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kp
OworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVy
Q29udGVudHMmJiwgY29uc3Qgdm9pZCosIFVDUFVSZWdpc3Rlcik7CisgICAgc3RhdGljIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSk7CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxp
bmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWdu
ZWQgcmlnaHQpOworICAgIGlubGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBJbmRleChkb3VibGUgaW5k
ZXgpIGNvbnN0OworICAgIHN0YXRpYyBpbmxpbmUgVUNQVVJlZ2lzdGVyIGNsYW1wVmFsdWUoZG91
YmxlIHgsIFVDUFVSZWdpc3RlciBsZWZ0LCBVQ1BVUmVnaXN0ZXIgcmlnaHQpOwogCiAgICAgdm9p
ZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzIwMSw3IEBAIGNvbnN0IHZvaWQq
IEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50cy5kYXRhKCk7
CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK1VDUFVSZWdp
c3RlciBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29u
dGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBAQCBib29sIEFycmF5QnVm
ZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRl
SW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gc2Nh
bGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcuCi0gICAgcmV0dXJu
IHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVMZW5ndGgoKSk7
CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3RoKCk7CiB9CiAKIHZv
aWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLmViMDUwOWVjZGNhYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJy
YXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygKLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5
dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAg
ICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxl
bmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPFVDUFVSZWdpc3RlciwgQ3Jhc2hPbk92ZXJm
bG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjAw
ZWRjZDM4NDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUu
aCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5z
aWduZWQgYnl0ZU9mZnNldCgpIGNvbnN0CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQoKSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBVQ1BVUmVn
aXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNE
ZXRhY2hhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5
MywxOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZm
ZXJWaWV3KCk7CiAKICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUg
YWxpZ25lZC4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVP
ZmZzZXRBbGlnbm1lbnQoVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBlbGVt
ZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEp
KTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAg
ICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2Yg
YW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wg
dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhl
bHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBp
cyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29u
c3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgVUNQVVJl
Z2lzdGVyIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0
ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAv
IHNpemU7CisgICAgICAgIFVDUFVSZWdpc3RlciByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVu
Z3RoIC0gYnl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KGVsZW1lbnRTaXpl
KTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMs
NDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9i
YWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJv
b2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBp
bmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBi
b29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3Ro
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29u
c3Qgdm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGRhdGFCeXRlTGVuZ3RoLCBVQ1BVUmVnaXN0ZXIg
Ynl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0
aW9uLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3Vs
YXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVk
IGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7
CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMg
aW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0
cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZm
ZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNs
YW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZm
ZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQg
Km9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBVQ1BVUmVn
aXN0ZXIgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBVQ1BVUmVnaXN0ZXIgKm9mZnNldCwKKyAg
ICAgICAgVUNQVVJlZ2lzdGVyICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7Cisg
ICAgICAgIFVDUFVSZWdpc3RlciBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxVQ1BV
UmVnaXN0ZXI+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAg
IGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVy
LmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCAr
ICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIu
Ynl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVu
dHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAg
ICBDaGVja2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IGFkanVzdGVkT2Zmc2V0ID0g
Km9mZnNldDsKKyAgICAgICAgYWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAgICBh
ZGp1c3RlZE9mZnNldCArPSBhcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3RlZE9m
ZnNldC5oYXNPdmVyZmxvd2VkKCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5i
eXRlTGVuZ3RoKCkpCisgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVl
KCk7CisgICAgICAgIFVDUFVSZWdpc3RlciByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0
ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9
IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAg
IHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6IDMxOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHVp
bnQ2NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZz
ZXQgOiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2ln
bmVkIG1fYnl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAgICAg
dXNpbmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0
YWdDYWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZm
ZXIncyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wg
QXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVk
IGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZp
ZXcqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNl
dCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5n
dGgoKSA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVM
ZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBv
ciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwg
YXJyYXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXkt
PmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlC
dWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGRh
dGFCeXRlTGVuZ3RoLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5n
dGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3Ro
IDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJm
bG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0
ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAog
ICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7
CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBs
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0
aW9uLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVP
ZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zm
c2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiBy
YW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFs
KGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9u
LCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9S
YW5nZUltcGwoVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciByYW5nZUJ5dGVM
ZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBP
dXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFu
T3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChiYXNlICsgYnl0
ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICBpbnQgc3Rh
cnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5zaWdu
ZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCArPSBhcnJh
eVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAgIGlmIChl
bmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAwKQotICAg
ICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFycmF5
U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFydCkKLSAg
ICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVmZmVyVmlldzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKaW5k
ZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAgc3RhdGlj
IHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nlc3NJbmRleFZhbHVl
LnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVCh0eXBlZEFycmF5
Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKKwogICAg
IGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0IG9m
IGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBkY2MyZjUwNjRhZjIu
LjdiMWVkN2NmNTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURhdGFWaWV3
OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0
ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZz
ZXQsIGJ5dGVMZW5ndGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0gYnVm
ZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAs
IGJ5dGVMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcu
aAppbmRleCBkYTA2YjRiYjIxNDQuLmRlNzE0YjYyNTA5YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgRGF0YVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1Ymxp
YzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwK
QEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpT
R2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRp
YW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBnZXQoVUNQVVJlZ2lzdGVyIG9mZnNl
dCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAg
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4g
Ynl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWduZWQmIG9mZnNldCwgYm9v
bCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCByZWFkKFVDUFVS
ZWdpc3RlciYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0
cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0PFQ+KG9mZnNl
dCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8fCAqc3RhdHVz
KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxp
dHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2b2lkIHNldChVQ1BVUmVn
aXN0ZXIgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChv
ZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIERhdGFW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVS
ZWdpc3RlciBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApp
bmRleCBiZTdlNmMwNTM0ZmEuLmIyODc5YjNkZjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMzLDI0
IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdl
bmVyaWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRl
KGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
KGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoVUNQVVJlZ2lzdGVy
IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShj
b25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7
CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJy
YXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFVD
UFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVS
ZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNl
dCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiBjcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVS
ZWdpc3RlciBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFz
ZUFkZHJlc3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgVUNQVVJlZ2lzdGVyIG9mZnNldCkKICAgICB7
CiAgICAgICAgIHJldHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0
KQorICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwg
VUNQVVJlZ2lzdGVyIGNvdW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsKICAgICAgICAg
cmV0dXJuIHNldFJhbmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLApAQCAtNTgsMzkgKzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9m
ZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAg
IGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wg
emVyb1JhbmdlKFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBjb3VudCkKICAgICB7
CiAgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSwgY291bnQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwog
ICAgIH0KICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkp
OyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBp
dGVtKFVDUFVSZWdpc3RlciBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBy
ZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWduZWQg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChVQ1BVUmVnaXN0ZXIgaW5k
ZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClb
aW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2
YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShVQ1BVUmVnaXN0ZXIgaW5kZXgsIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAg
ZGF0YSgpW2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisg
ICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBVQ1BVUmVnaXN0
ZXIgY291bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0
UmFuZ2VJbXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBA
IC05OCwxOCArOTgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERh
dGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0lu
Ym91bmREYXRhKFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBjb3VudCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgICAg
ICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50
IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYm
IG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJU
aGFuT3JFcXVhbChvZmZzZXQsIGNvdW50LCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAot
ICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29u
c3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0
LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29u
c3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0x
MTgsNyArMTExLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xv
YmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5l
cmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGFlNWJkZDhjNmEzMS4uNTljNjllMzEyMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVk
QXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQ
VVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiAgICAgOiBBcnJheUJ1
ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxVQ1BVUmVnaXN0ZXI+
OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5z
aWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisg
ICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVSZWdpc3RlciBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lz
dGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQg
PSB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGUodW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoVUNQVVJlZ2lzdGVy
IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVu
Z3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpA
QCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRl
KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcgQEAgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBsZW5ndGgp
CiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
KTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5Q3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkg
Y29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVPZmZz
ZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgp
OwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAg
IEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6
VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1
cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjI3YTk3
NzlmNDk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBcnJh
eUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1
Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1
cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1
Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRT
aXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5n
dGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQog
ICAgIDogbV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTYz
LDcgKzYzLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiAgICAgaWYgKGxlbmd0aCA8PSBmYXN0U2l6ZUxpbWl0KSB7CiAgICAg
ICAgIC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCogdGVtcDsKLSAgICAg
ICAgc2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7CisgICAgICAgIFVD
UFVSZWdpc3RlciBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNpemUpOwogICAgICAgICB0
ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1
YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7
CiAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgxLDE4ICs4MSwx
OCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEg
dHlwZWQgYXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWQ8VUNQ
VVJlZ2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gc2l6ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9IGVs
ZW1lbnRTaXplOworICAgIGlmIChzaXplLmhhc092ZXJmbG93ZWQoKSB8fCBzaXplID4gTUFYX0FS
UkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHNpemUg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1l
bnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhH
aWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3RoKTsKKworICAgIG1fdmVjdG9yID0gVmVj
dG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUudmFs
dWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3RvcikKICAgICAgICAgcmV0dXJuOwogICAg
IGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBtZW1zZXQodmVjdG9yKCksIDAsIHNpemUp
OwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUpOworICAgIHZtLmhlYXAucmVwb3J0RXh0
cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsKICAgICAKICAgICBtX3N0cnVjdHVyZSA9
IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6ZVR5cGVkQXJyYXk7CkBAIC0xMDAsNyAr
MTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVj
dGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpD
b25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCiAgICAgLCBtX21vZGUoV2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcgKzEx
NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rp
b25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgRGF0YVZpZXdUYWcpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVS
ZWdpc3RlciBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJl
KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKQEAg
LTIzOCw5ICsyMzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNUeXBl
IHR5cGUpCiAgICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlwZV07
CiB9CiAKLXVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKK1VD
UFVSZWdpc3RlciBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICBDaGVja2VkPFVDUFVSZWdpc3Rlcj4gcmVzdWx0ID0gbGVuZ3Ro
KCk7CisgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplKHR5cGUoKSk7CisgICAgcmV0dXJuIHJlc3Vs
dC52YWx1ZSgpOworI2Vsc2UKKyAgICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVyZmxvdyBpcyBhbHJl
YWR5IGNoZWNrZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRkIHRoZSBleHRyYSBz
YW5pdHkgY2hlY2sgd2hlbiBhc3NlcnRzIGFyZSBlbmFibGVkLgogICAgIHJldHVybiBsZW5ndGgo
KSAqIGVsZW1lbnRTaXplKHR5cGUoKSk7CisjZW5kaWYKIH0KIAogQXJyYXlCdWZmZXIqIEpTQXJy
YXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2Nyw3ICsyNzQsNyBA
QCBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnko
KQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKIAogICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSB0
aGlzLT5ieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSB0aGlzLT5i
eXRlTGVuZ3RoKCk7CiAKICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgIGNhc2UgRmFzdFR5cGVk
QXJyYXk6IHsKQEAgLTMxNSw4ICszMjIsOCBAQCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0Fy
cmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKICAgICBBcnJheUJ1ZmZlciogYnVm
ZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZz
ZXQoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVn
aXN0ZXIgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKKyAgICBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUg
RkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMjIEFycmF5VHlwZTogXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggZGQw
MWY3ZjgyYTUzLi40NjcwYjQ2ZDhiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGZhc3RTaXplTGltaXQgPSAxMDAwOworICAgIHN0YXRpYyBj
b25zdGV4cHIgVUNQVVJlZ2lzdGVyIGZhc3RTaXplTGltaXQgPSAxMDAwOwogICAgIHVzaW5nIFZl
Y3RvclB0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAKICAgICBzdGF0aWMgdm9pZCogbnVsbFZlY3RvclB0cigpCkBAIC0xMTcsMTAg
KzExNywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxsLnJhd0JpdHMoKTsKICAgICB9
CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBzaXplT2YodWludDMyX3QgbGVuZ3RoLCB1aW50MzJf
dCBlbGVtZW50U2l6ZSkKKyAgICBzdGF0aWMgVUNQVVJlZ2lzdGVyIHNpemVPZihVQ1BVUmVnaXN0
ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAo
c3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpIC0gMSkKLSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0g
MSk7CisgICAgICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBsZW5ndGg7CisgICAg
ICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSArMTM4
LDI1IEBAIHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSW5pdGlhbGl6YXRp
b25Nb2RlIHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07CiAgICAgICAgIAotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWlu
dDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0g
WmVyb0ZpbGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0
KFZNJiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNp
emUsIEluaXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8v
IFRoaXMgaXMgb25seSBmb3IgY29uc3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVz
ZWQgYnkgdGhlIEpJVCdzIHNsb3cgcGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChT
dHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0
cnVjdGlvbkNvbnRleHQoU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVj
dG9yKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNv
bnRleHQoCiAgICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7
CiAgICAgICAgIAogICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0YVZpZXcgfTsKICAgICAg
ICAgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgRGF0YVZpZXdUYWcpOworICAgICAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZz
ZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAgICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAgICAgICAg
IAogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0
dXJlOyB9CiAgICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdl
dE1heUJlTnVsbChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25z
dCB7IHJldHVybiBtX21vZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25z
dCB7IHJldHVybiBtX2J1dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3ICsxNjQsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgIHVzaW5n
IFZlY3RvclR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdl
ZFB0cj47CiAgICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAgIHVpbnQzMl90IG1f
bGVuZ3RoOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbV9sZW5ndGg7CiAgICAgICAgIFR5cGVkQXJy
YXlNb2RlIG1fbW9kZTsKICAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAgICB9OwpA
QCAtMTkwLDExICsxOTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChsZW5ndGgoKSk7IH0KICAgICB2b2lkKiB2ZWN0
b3JXaXRob3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldFVuc2Fm
ZSgpOyB9CiAgICAgCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKTsKLSAgICBpbmxp
bmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOworICAg
IGlubGluZSBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCgpOworICAgIGlubGluZSBzdGQ6Om9wdGlv
bmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwogCi0gICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLSAgICB1bnNpZ25lZCBieXRl
TGVuZ3RoKCkgY29uc3Q7CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsKIAogICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAgcHJvdGVjdGVk
OgogICAgIEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7CiAKICAgICBW
ZWN0b3JQdHIgbV92ZWN0b3I7Ci0gICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgVUNQVVJlZ2lz
dGVyIG1fbGVuZ3RoOwogICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxp
bmVzLmgKaW5kZXggMWQwNzJiNzFhY2I3Li42MzE4MTU1ZTY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5o
CkBAIC05OSw3ICs5OSw3IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlT2Zmc2V0SW1wbCgpCiAgICAgcHRyZGlmZl90IGRlbHRhID0KICAgICAgICAgYml0d2lzZV9j
YXN0PHVpbnQ4X3QqPih2ZWN0b3JXaXRob3V0UEFDVmFsaWRhdGlvbigpKSAtIHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSk7CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGVsdGEpOworICAgIFVDUFVSZWdpc3RlciByZXN1bHQgPSBzdGF0
aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KGRlbHRhKTsKICAgICBpZiAocmVxdWVzdGVyID09IE11dGF0
b3IpCiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHJlc3VsdCkgPT0gZGVs
dGEpOwogICAgIGVsc2UgewpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgaW5saW5lIFJlc3VsdFR5cGUg
SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1pbmxpbmUgdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQoKQoraW5s
aW5lIFVDUFVSZWdpc3RlciBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCiB7Ci0gICAg
cmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2lnbmVkPigpOworICAgIHJldHVybiBi
eXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCBVQ1BVUmVnaXN0ZXI+KCk7CiB9CiAKLWlubGluZSBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJl
bnRseSgpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IEpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNldElt
cGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+KCk7CisgICAgcmV0
dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8VUNQVVJl
Z2lzdGVyPj4oKTsKIH0KIAogaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlC
dWZmZXJWaWV3Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGIxZWE5ZGEwZmU0Yy4uNDk2MTZm
NWM4MzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBA
IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25tb3ZhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0yOTgsNiArMjk5LDcgQEAgcHVibGljOgogICAgIGludDMyX3QgdG9JbnQz
MihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvVUludDMyKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9JbmRleChKU0dsb2JhbE9iamVjdCosIGNv
bnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3Q7CisgICAgVUNQVVJlZ2lzdGVyIHRvVHlwZWRBcnJh
eUluZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKICAg
ICBkb3VibGUgdG9MZW5ndGgoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4
IDM0ZWEyMTQ2MGEwZC4uODBjMjNmNmM2OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDE0ICs2OSw0NyBAQCBpbmxp
bmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5h
bWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQot
ICAgIGlmIChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CisKKyAg
ICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworCisgICAgaWYgKGQg
PiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJn
ZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsKK30KKworaW5saW5lIFVDUFVSZWdpc3RlciBKU1Zh
bHVlOjp0b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBk
b3VibGUgZCA9IHRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgMCk7CisgICAgaWYgKGQgPD0gLTEpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKwogICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMy
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworCisg
ICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSkpIHsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIEFsbCBvZiB0aGlzIG1vbnN0cm9z
aXR5IGlzIGp1c3QgdG8gZ2l2ZSB0aGUgY29ycmVjdCByZXN1bHQgb24gMTw8MzIuCisgICAgVUNQ
VVJlZ2lzdGVyIG91dHB1dE9mZnNldCA9IDA7CisgICAgZG91YmxlIGlucHV0T2Zmc2V0ID0gMDsK
KyAgICBVQ1BVUmVnaXN0ZXIgaW50MzJNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKTsKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oaW50MzJNYXgpKSB7Cisg
ICAgICAgIG91dHB1dE9mZnNldCA9IGludDMyTWF4OworICAgICAgICBpbnB1dE9mZnNldCA9IGlu
dDMyTWF4OworICAgIH0KKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG91dHB1dE9mZnNl
dCArIHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQzo6
dG9JbnQzMihkIC0gaW5wdXRPZmZzZXQpKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggNmZhYjQ2NWRkM2I5Li45ODVkOWUyNDQ5ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIs
NyArNDIsNyBAQCBKU0RhdGFWaWV3OjpKU0RhdGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29u
dGV4dCYgY29udGV4dCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcgogCiBKU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9m
ZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTcwLDI1ICs3MCwyNSBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFs
aXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyog
SlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIpCiB7
CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2Jq
ZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxP
YmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBVQ1BVUmVnaXN0
ZXIpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQsIEpTVmFsdWUpCitib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwg
VUNQVVJlZ2lzdGVyLCBKU1ZhbHVlKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuaAppbmRleCAyYzc4NWU0NzYxMWEuLjVlZTFkODYxOWU5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZpZXcqIGNy
ZWF0ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciBi
eXRlTGVuZ3RoKTsKICAgICAKICAgICAvLyBEdW1teSBtZXRob2RzLCB3aGljaCBkb24ndCBhY3R1
YWxseSB3b3JrOyB0aGVzZSBhcmUganVzdCBpbiBwbGFjZSB0bwogICAgIC8vIHBsYWNhdGUgc29t
ZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3ZSBkbyBlbHNld2hlcmUuCi0gICAgc3RhdGljIEpT
RGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0KEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1Zh
bHVlKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBK
U0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3Rlciwg
SlNPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIGJvb2wg
c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpTVmFsdWUpOwogICAgIAog
ICAgIEFycmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAKaW5kZXggOTQ5MDYyNDdlYTY1Li5kOGM5OWMzYzY4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2
LDExICsxMzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2
ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAg
dW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9i
YWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNp
emUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lzdGVyIGVs
ZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVt
ZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAg
ICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVh
bihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRh
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVl
biBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgg
PSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSBkYXRh
Vmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9z
KTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRh
VmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwog
ICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
SW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIFVDUFVSZWdpc3RlciBieXRl
T2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5
dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAg
Ym9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNp
emUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXpl
ID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAgIGxpdHRs
ZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9Cb29sZWFuKGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRh
dGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFW
aWV3LT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5s
ZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQg
PiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4MWQuLjA1NjgzOGM5ZTQxOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNp
bmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUuaCIKKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTU1LDEwICs1NiwxMCBAQCBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBDbGFzc0luZm8qIGdldEJp
Z1VpbnQ2NEFycmF5Q2xhc3NJbmZvKCk7CiAvLyAgICAgU3RydWN0dXJlKiBTICAgICAvLyBmcm9t
IEpTQ2VsbAogLy8gICAgIEJ1dHRlcmZseSogQiAgICAgLy8gZnJvbSBKU09iamVjdAogLy8gICAg
IEVsZW1lbnRUeXBlKiBWCi0vLyAgICAgdWludDMyX3QgTAorLy8gICAgIFVDUFVSZWdpc3RlciBM
CiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEg
dG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQorLy8gVGhlc2Ug
ZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1F
OiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAvLwogLy8gQiBpcyB1c3VhbGx5IHVudXNl
ZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwgIm92ZXJmbG93IiBkYXRhIGZvcgpAQCAt
MTAzLDE1ICsxMDQsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKIAotICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
dW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwog
ICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJl
KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAot
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQotICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
KTsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAgICBVQ1BVUmVnaXN0ZXIg
Ynl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKiB0eXBlZFZlY3RvcigpIGNvbnN0CiAgICAgewpAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
Pih2ZWN0b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25z
dAorICAgIGJvb2wgaW5Cb3VuZHMoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJl
IG1lYW50IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAg
IC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2Fu
R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1
aWNrbHkoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3Vu
ZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29s
IGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAg
IGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIHZhbHVlKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJl
cigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKFVDUFVSZWdpc3RlciBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
KGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3RvcigpW2ldOwogICAgIH0K
ICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAg
IEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHlU
b05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCisg
ICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKFVDUFVSZWdpc3RlciBpLCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xl
bmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2
b2lkIHNldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BVUmVnaXN0ZXIgaSwgSlNWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVt
ZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9y
PihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRh
cHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRv
cj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9u
KEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50
VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNW
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2Vy
Y2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsK
QEAgLTE5OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJv
b2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KFVDUFVSZWdpc3RlciBvZmZzZXQsIFVD
UFVSZWdpc3RlciBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVu
Z3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAg
ICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0g
b2Zmc2V0OworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBs
ZW5ndGgsIG1fbGVuZ3RoKTsKICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5
LCBleGNlcHQ6IGlmIGl0IHJldHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8g
YXBwcm9wcmlhdGUgZXhjZXB0aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlk
YXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFs
c2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFsc2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2
ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9v
bCBzZXQoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU09iamVjdCosIFVD
UFVSZWdpc3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlUeXBlID0g
Q29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0
b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJlZlB0cjx0eXBl
bmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAgLTMxOCw4ICsz
MjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQg
ZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdp
c3RlciBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAorICAg
ICAgICBVQ1BVUmVnaXN0ZXIgb2JqZWN0T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBDb3B5
VHlwZSk7CiAKICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9p
bnQgVHlwZWQgQXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAg
Ly8KQEAgLTM0OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQog
ICAgIHsKICAgICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAo
VUNQVVJlZ2lzdGVyIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5
W2ldID0gcHVyaWZ5TmFOKGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uZWVkYTU1ZTNj
YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgK
QEAgLTE0Myw3ICsxNDMsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9t
QXJyYXlCdWZmZXJJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2ln
bmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpT
T2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNW
YWx1ZSBmaXJzdEFyZ3VtZW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFVD
UFVSZWdpc3Rlcj4gbGVuZ3RoT3B0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyAr
MTU3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAg
VUNQVVJlZ2lzdGVyIGxlbmd0aCA9IDA7CiAgICAgICAgIGlmIChsZW5ndGhPcHQpCiAgICAgICAg
ICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAgICAgICAgZWxzZSB7CkBAIC0xODIs
NyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAvLyAtIEEgcHJpbWl0aXZl
LiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkgb2YgdGhhdCBsZW5ndGggYW5kIHplcm8t
aW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
OworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoOwogICAgICAgICBKU0FycmF5QnVmZmVyKiBj
dXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChpc1R5cGVkVmlldyhvYmplY3Qt
PmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsKQEAgLTI1MCw3ICsyNTAs
NyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJsZW5ndGgiKTsKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0gZmlyc3RWYWx1ZS50b1R5
cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFZp
ZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgpKTsKIH0KQEAg
LTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgfQogCiAgICAgSlNW
YWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICB1
bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aCA9
IHN0ZDo6bnVsbG9wdDsKKyAgICBVQ1BVUmVnaXN0ZXIgb2Zmc2V0ID0gMDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFVDUFVSZWdpc3Rlcj4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAx
KSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1w
bChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFsdWUgaXMg
cHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAgICAgICAg
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAg
ICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAg
ICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNz
OjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDog
Imxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVHlwZWRB
cnJheUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIz
ODc5MmQxMC4uMDUzY2ZiNTFlMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5j
bHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1
LDcgKzY2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZv
aWQqIHZlY3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRl
eHQoc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlV2l0aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5p
bml0aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTks
MTEgKzEwMCwxMSBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBVQ1BVUmVn
aXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwor
ICAgIFVDUFVSZWdpc3RlciBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwog
ICAgIEFTU0VSVChidWZmZXIpOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJS
YW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemUpKSB7CiAgICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSk7CkBAIC0xNDUsNyAr
MTQ2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3Rl
ciBvZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTE1OSw4ICsxNjAsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2
YWxpZGF0ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVu
YW1lIE90aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBv
dGhlciwKLSAgICB1bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlw
ZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBv
ZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAorICAg
IFVDUFVSZWdpc3RlciBvdGhlck9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUg
dHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjE4LDcgKzIxOSw3IEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAg
ICAgIHx8IGV4aXN0aW5nQnVmZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5nQnVmZmVyKCkKICAgICAg
ICAgfHwgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUgJiYgdmVjdG9yKCkgPD0gb3Ro
ZXItPnZlY3RvcigpKQogICAgICAgICB8fCB0eXBlID09IENvcHlUeXBlOjpMZWZ0VG9SaWdodCkg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAg
ICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQg
KyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAg
ICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVy
T2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKICAgICAvLyBOb3cgd2UgZWl0aGVy
IGhhdmUgKDJCKSBvciAoMykgLSBzbyBmaXJzdCB3ZSB0cnkgdG8gY292ZXIgKDJCKS4KICAgICBp
ZiAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSkgewotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxl
bmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgK
ICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZl
cnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2ts
eUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjM4LDExICsyMzksMTEgQEAg
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlw
ZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGludGVybWVkaWF0ZSB0cmFuc2ZlciBi
dWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZlY3Rvcjx0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
LCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5n
dGg7IGktLTspIHsKKyAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07KSB7CiAg
ICAgICAgIHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0
VG88QWRhcHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVW
YWx1ZShpICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVu
Z3RoOyBpLS07KQorICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBsZW5ndGg7IGktLTspCiAgICAg
ICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsgaSwgdHJhbnNmZXJCdWZm
ZXJbaV0pOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0ICsyNTEsMTQgQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIFVDUFVSZWdpc3Rl
ciBvYmplY3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNs
YXNzSW5mbyh2bSk7CiAgICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRv
cjo6dHlwZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBq
dXN0IG1lbWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3Vw
ZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5
cGUuCiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWlu
KGxlbmd0aCwgb3RoZXItPmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0zMTIsOSArMzEzLDExIEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKICAgICAgICAgaWYg
KCFzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIC8vIFZlcmlm
eSB0aGF0IHdlIHdvbid0IGV2ZXIgY2FsbCBvYmplY3QtPmdldCgpIHdpdGggYW4gaW5kZXggb2Yg
VUlOVF9NQVggb3IgbW9yZQorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1N1bVNtYWxsZXJUaGFu
T3JFcXVhbChzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9iamVjdE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7CiAgICAgICAgIC8vIFdlIGNvdWxkIG9wdGltaXplIHRo
aXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9i
amVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9iamVjdE9mZnNldCk7CisgICAgICAgIGZvciAo
VUNQVVJlZ2lzdGVyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFs
dWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihpICsgb2JqZWN0T2Zmc2V0KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBzZXRJbmRleChnbG9iYWxP
YmplY3QsIG9mZnNldCArIGksIHZhbHVlKTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCmluZGV4IDRjMGViZDFmNjE2NS4uYTk3NDczNzNjNGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgaW5s
aW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCitjbGFzcyBBcnJheVByb2ZpbGU7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOwpAQCAtMjExLDEwICsyMTIsOCBA
QCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIHB1dEJ5SW5kZXhJbmxpbmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKGNhblNldEluZGV4UXVpY2tseShwcm9wZXJ0eU5hbWUs
IHZhbHVlKSkgewotICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsKKyAgICAgICAgaWYgKHRyeVNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OCw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQpIGNvbnN0OwotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JU
eXBlZEFycmF5KHVuc2lnbmVkLCBBcnJheVByb2ZpbGUqID0gbnVsbHB0cikgY29uc3Q7CiAgICAg
CiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBA
IC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKLSAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVp
Y2tseSh1bnNpZ25lZCBpKSBjb25zdAorCisgICAgLy8gVXNlcyB0aGUgKG9wdGlvbmFsKSBhcnJh
eSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxl
dmFudAorICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEFycmF5UHJv
ZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgICAgICBpZiAoY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCBh
cnJheVByb2ZpbGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDExLDM1ICs0MTEs
NzMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0KGdsb2JhbE9iamVjdCwgaSk7CiAgICAg
fQogCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBK
U1ZhbHVlKSBjb25zdDsKICAgICB2b2lkIHNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5z
aWduZWQsIEpTVmFsdWUpOwotICAgICAgICAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1
bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yQXJy
YXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiwgdW5zaWduZWQsIEpTVmFsdWUpOworCisgICAgLy8g
UmV0dXJuIHRydWUgdG8gaW5kaWNhdGUgc3VjY2VzcworICAgIC8vIFVzZSB0aGUgKG9wdGlvbmFs
KSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSBiaXQgd2hl
biByZWxldmFudAorICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNr
bHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9m
aWxlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhp
cy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdNb2RlKCkpIHsKICAgICAg
ICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1cm4gY2Fu
U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2LCBhcnJheVByb2ZpbGUpOwog
ICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZ
UEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0g
ICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAg
ICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAg
ICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc0ludDMyKCkpIHsKKyAgICAgICAgICAg
ICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZU9yQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldElu
ZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxM
X1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChp
ID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0
V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+
cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5n
dGgoaSArIDEpOworICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgdik7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklU
QUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKCF2LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91
YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG91Ymxl
IHZhbHVlID0gdi5hc051bWJlcigpOworICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7
CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWlu
Z1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRo
aXMsIGkpID0gdmFsdWU7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xl
bmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAx
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9u
QXJyYXlXaXRoQXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFn
ZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKKyAg
ICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlT
dG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNh
c2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwg
YnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkKLSAgICAgICAgICAgICAg
ICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQor
ICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVu
Z3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRl
eGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0NvcHlPbldyaXRlKGluZGV4aW5n
TW9kZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgICAgIAorCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHYpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVy
Zmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaAppbmRleCA2ZTFiYjFiNTlmMWUuLmIzYzI2NmM2NDQ0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTQ2NSwyMSArNDY1
LDE1IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFy
cmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgfQogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6
Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
KSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpIGNvbnN0CiB7Ci0g
ICAgc3dpdGNoICh0eXBlKCkpIHsKLSNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUp
IFwKLSAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDpcCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8
Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGks
IHZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFU
QV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKLSN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZ
UEUKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQorI2lmIENQ
VShSRUdJU1RFUjY0KQorICAgIGlmIChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJh
eU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUpCisgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5
QmVMYXJnZVR5cGVkQXJyYXkoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmls
ZSk7CisjZW5kaWYKIAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewog
I2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBB
cnJheVR5cGUgOiB7XApAQCAtNTEyLDcgKzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6
c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogfQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6
c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2KQoreworICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1
dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHgg
PSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAg
eC5zZXQodm0sIHRoaXMsIHYpOworICAgIGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+
bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkp
CisgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUoKSkgeworI2lmIENQVShSRUdJU1RFUjY0KQorI2RlZmluZSBVUERBVEVfQVJSQVlf
UFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHtcCisgICAgICAgIGlmICgoaSA+IEFycmF5UHJv
ZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAg
ICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0g
d2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJy
YXlQcm9maWxlKSBkbyB7XAorICAgIFVOVVNFRF9QQVJBTShhcnJheVByb2ZpbGUpO1wKKyAgICB9
IHdoaWxlIChmYWxzZSkKKyNlbmRpZgorI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFt
ZSkgXAorICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XAorICAgICAgICBhdXRvKiB0eXBl
ZEFycmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyk7XAorICAgICAgICBp
ZiAoIXR5cGVkQXJyYXktPmNhblNldEluZGV4UXVpY2tseShpLCB2KSlcCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7XAorICAgICAgICB0eXBlZEFycmF5LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7
XAorICAgICAgICBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpO1wKKyAgICAg
ICAgcmV0dXJuIHRydWU7XAorICAgIH0KKyAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VY
Q0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQorI3VuZGVmIENBU0VfVFlQ
RURfQVJSQVlfVFlQRQorI3VuZGVmIFVQREFURV9BUlJBWV9QUk9GSUxFCisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGNlNzMwZjNiZjk2NS4uMDkxOWU3
MjE4NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBA
IC04OTgsOCArODk4LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdp
dGhJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBpZiAoYmFz
ZS0+aXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpbmRleCkpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGlu
ZGV4KSk7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhR
dWlja2x5KGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKICAgICB9CiAKICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+
Y2FuR2V0SW5kZXgoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VD
b3VudC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4uYjdkOGM5ZmNmNzJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorCiAjaW5jbHVk
ZSA8bGltaXRzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtOTYsNyArOTgsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQgKiBLQjsKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE1B
WF9BUlJBWV9CVUZGRVJfU0laRSAvIHN0YXRpY19jYXN0PHVpbnQ2NF90PihwYWdlU2l6ZSkpOwog
CiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA5OGYwNjExNTNmN2QuLjNhMTlj
NGEzZGI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMC0wNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRv
IDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVTRV9MQVJHRV9UWVBFRF9BUlJBWVMgZmxhZyB3
aGljaCBpcyBlcXVpdmFsZW50IHRvIFVTRV9KU1ZBTFVFNjQsIGl0IHByb3ZlZCB1c2VmdWwgdG8g
dGVzdCB0aGluZ3MgYW5kIGNhdGNoIGJyZWFrYWdlIG9uIDMyLWJpdCBwbGF0Zm9ybXMgd2l0aG91
dCByZWx5aW5nIG9uIEVXUy4KKyAgICAgICAgQWxzbyBtYWRlIHNvbWUgb2YgQ2hlY2tlZEFyaXRo
bWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwgc2luY2Ug
aXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVhc3kgdG8gZ2V0
IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAgICogd3RmL0NoZWNrZWRBcml0
aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAoV1RGOjpjb252
ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwpOgorICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybVVzZS5oOgorCiAyMDIxLTEwLTExICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJlcGFyZSB0byBzd2l0Y2gg
ZnJvbSBXVEY6OlZhcmlhbnQgdG8gc3RkOjp2YXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFy
Z2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28g
aW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0
byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9u
IHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFs
dWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTks
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291
cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4K
ICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6
bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAg
IHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNp
c2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4u
CiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2ln
biwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAg
ICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkg
Z3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+
IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZh
bHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUg
Y29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29s
IGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIg
Ym9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAg
aWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+
IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQ
cm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sK
KyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOwor
ICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsK
K30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQs
NCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3Vu
ZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93
czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc1
MGE4MzBhNjc0Li41NTg3ZTkyMTZmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAy
MS0xMC0wNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgcGFydHMg
b2YgV2ViQ29yZSB1c2UgVHlwZWRBcnJheXMsIGFuZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBt
YWRlIHRoZSBsZW5ndGgoKSBmdW5jdGlvbiBvbiB0eXBlZCBhcnJheXMgcmV0dXJuIHNpemVfdCBp
bnN0ZWFkIG9mIHVpbnQzMl90LgorICAgICAgICBJIGZpeGVkIGl0IHRyaXZpYWxseSBieSBSRUxF
QVNFX0FTU0VSVGluZyB0aGF0IHRoZSBzaXplX3QgZml0cyBpbiBhIHVpbnQzMl90IGFuZCB0aGVu
IGNhc3RpbmcgaXQuCisgICAgICAgIE5vIG5ldyB0ZXN0cyBmb3IgV2ViQ29yZSBhcyB0aGVyZSBp
cyBubyBpbnRlbmRlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5
RnJvbUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5u
ZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9t
YWluRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgor
ICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94Lmg6CisKIDIwMjEtMTAtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbmlmaWVkIGJ1aWxkIGZpeApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCBjYjdlODRk
NDUzODMuLjJkYjQ5Y2EyNGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE5MywxMiArMTkzLDEyIEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBkZXN0
aW5hdGlvbiwKICAgICAKICAgICBGbG9hdDMyQXJyYXkqIGNoYW5uZWxEYXRhID0gbV9jaGFubmVs
c1tjaGFubmVsTnVtYmVyXS5nZXQoKTsKICAgICAKLSAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGNo
YW5uZWxEYXRhLT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgZGF0YUxlbmd0aCA9IGNoYW5u
ZWxEYXRhLT5sZW5ndGgoKTsKICAgICAKICAgICBpZiAoYnVmZmVyT2Zmc2V0ID49IGRhdGFMZW5n
dGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBkYXRh
TGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIFVDUFVSZWdpc3RlciBjb3VudCA9IGRhdGFMZW5n
dGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihkZXN0aW5hdGlvbi5nZXQo
KS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBjaGFubmVs
RGF0YS0+ZGF0YSgpOwpAQCAtMjIxLDEyICsyMjEsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVk
aW9CdWZmZXI6OmNvcHlUb0NoYW5uZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBzb3VyY2UsIHVuc2ln
bmUKICAgICAKICAgICBGbG9hdDMyQXJyYXkqIGNoYW5uZWxEYXRhID0gbV9jaGFubmVsc1tjaGFu
bmVsTnVtYmVyXS5nZXQoKTsKICAgICAKLSAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGNoYW5uZWxE
YXRhLT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgZGF0YUxlbmd0aCA9IGNoYW5uZWxEYXRh
LT5sZW5ndGgoKTsKICAgICAKICAgICBpZiAoYnVmZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3Ro
IC0gYnVmZmVyT2Zmc2V0OworICAgIFVDUFVSZWdpc3RlciBjb3VudCA9IGRhdGFMZW5ndGggLSBi
dWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihzb3VyY2UuZ2V0KCkubGVuZ3RoKCks
IGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gc291cmNlLT5kYXRhKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
LmNwcAppbmRleCA2YzFjOTQ0MDIyZWQuLmFjODljYWViZWNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0xOTYs
OCArMTk2LDggQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YShV
aW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogICAgIGRvRkZUQW5hbHlzaXNJZk5lY2Vzc2Fy
eSgpOwogICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBsaW5lYXIgbWFnbml0dWRlIHRvIHVuc2ln
bmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gbWFnbml0dWRl
QnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VMZW5n
dGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxl
bmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0
ZDo6bWluKG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAg
IGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGNvbnN0IGRvdWJsZSByYW5nZVNjYWxlRmFjdG9y
ID0gbV9tYXhEZWNpYmVscyA9PSBtX21pbkRlY2liZWxzID8gMSA6IDEgLyAobV9tYXhEZWNpYmVs
cyAtIG1fbWluRGVjaWJlbHMpOwogICAgICAgICBjb25zdCBkb3VibGUgbWluRGVjaWJlbHMgPSBt
X21pbkRlY2liZWxzOwpAQCAtMjI3LDggKzIyNyw5IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6
Z2V0RmxvYXRUaW1lRG9tYWluRGF0YShGbG9hdDMyQXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKLSAgICB1bnNpZ25lZCBmZnRTaXpl
ID0gdGhpcy0+ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXpl
LCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5n
dGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhp
cy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0
aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lu
cHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAm
JiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lucHV0
QnVmZmVyR29vZCk7CkBAIC0yNTEsOCArMjUyLDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpn
ZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMt
PmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGlu
YXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVz
dGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNp
emUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25M
ZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZl
ckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1
dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdv
b2QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggYTFhOGZhMjkyOWNhLi45ZTg0NjdhZDYyYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtMTI2Myw4ICsxMjYzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoSW1h
Z2VEYXRhVGFnKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0aCgpKTsKICAgICAg
ICAgICAgICAgICB3cml0ZShkYXRhLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUo
ZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRh
KCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNr
ZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiBkYXRhTGVuZ3RoID0gZGF0YS0+ZGF0YSgpLmxl
bmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkg
eworICAgICAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRh
dGFDbG9uZUVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0YUxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAg
ICAgICAgd3JpdGUoZGF0YS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTEzMTEsOCArMTMxNiwxMyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB3cml0ZShB
cnJheUJ1ZmZlclRhZyk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAg
ICAgICAgICAgICAgICBDaGVja2VkPHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gYnl0ZUxlbmd0
aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGJ5dGVM
ZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShi
eXRlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgpOwogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJp
dHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi5iYWYxYWJhZDY3YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNjgsNyArNjgs
OSBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29yZTo6QmxvYiYgYmxvYikK
IAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwogICAgIGlmICghYnl0ZUxlbmd0
aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSgwVSwgMSksIDAs
IDApOworICAgICAgICAvLyBUaGUgY2FzdCBsb29rcyB3ZWlyZCwgYnV0IGlzIHJlcXVpcmVkIGZv
ciB0aGUgb3ZlcmxvYWRpbmcgcmVzb2x1dGlvbiB0byBzdWNjZWVkLgorICAgICAgICAvLyBXaXRo
b3V0IGl0LCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkgd2hlcmUgQXJyYXlCdWZmZXI6OmNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKSBjb3VsZCBiZSBjYWxs
ZWQgaW5zdGVhZC4KKyAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPigwVSksIDEpLCAwLCAwKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlUmVmPEJsb2JMb2FkZXI+KFt0
aGlzXShCbG9iTG9hZGVyJikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT0JveC5oCmluZGV4IDg3MGJkYzgwZjM1NS4uMWJhMzIyYzEwYmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtNjMsNyArNjQsMTAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBib29sIGNoZWNrZWRSZWFkKFImIHJldHVyblZhbHVlLCBWJiB2aWV3LCB1bnNpZ25lZCYgb2Zm
c2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5lc3MpCiAgICAgewogICAgICAgICBib29sIHJlYWRTdGF0
dXMgPSBmYWxzZTsKLSAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihvZmZz
ZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFVD
UFVSZWdpc3RlciBhY3R1YWxPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIFQgdmFsdWUgPSB2aWV3
LnRlbXBsYXRlIHJlYWQ8VD4oYWN0dWFsT2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlh
biwgJnJlYWRTdGF0dXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0luQm91bmRzPHVpbnQz
Ml90PihhY3R1YWxPZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0ID0gYWN0dWFsT2Zmc2V0OwogICAg
ICAgICBpZiAoIXJlYWRTdGF0dXMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
</data>
<flag name="commit-queue"
          id="464917"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440916</attachid>
            <date>2021-10-12 03:58:49 -0700</date>
            <delta_ts>2021-10-12 12:03:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>252283</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ODZmM2MzMTU0Zjc5Li5kYzZhMjFlYzI5YTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMDUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmlnLXdhc20tbWVtb3J5IHRl
c3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00gYXQgMkdCLgorICAgICAgICBUaGV5IG5v
dyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWlsdXJlIGF0IDRHQisxLgorICAgICAgICBU
aGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZp
b3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUgdGhhdCB3YXMgY2F1c2luZyB0aGUgc3Bl
Y2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3duIChyZXN1bHRpbmcgaW4gdGhlIGdlbmVy
aWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29kZSkuCisgICAgICAgIEZpbmFsbHkgSSBt
YWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRmb3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBw
b3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRzLCBhbmQgSSBtYWRlIHRoZW0gb25seSBy
dW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQg
b2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZp
Y2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxhcmdlIHR5cGVkIGFycmF5cywgYW5kIGVz
cGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9NQVguCisKKyAgICAgICAgKiBzdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzOiBBZGRlZC4KKwogMjAyMS0x
MC0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IFJlZmluZSBSZWdFeHAjY29tcGlsZSBiYXNlZCBvbiByZWdleHAtbGVnYWN5LWZlYXR1cmVzIHBy
b3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyNWRjY2I4Mzk1Li5jMmMwNGM4OWMwNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NiBAQAorMjAyMS0xMC0wNSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00g
dG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoaWxlIGluY3JlYXNpbmcgTUFYX0FS
UkFZX0JVRkZFUl9TSVpFIHRvIDRHQiB3YXMgZWFzeSwgaXQgd2FzIG5vdCByZW1vdGVseSB0aGUg
b25seSB0aGluZyByZXF1aXJlZCB0byBnZXQgdGhpcyB0byB3b3JrOgorICAgICAgICAtIDRHQiBp
cyBub3QgcmVwcmVzZW50YWJsZSBpbiBhIHVpbnQzMl90LCBzbyBJIGNoYW5nZWQgYWxsIGxlbmd0
aCBvZiBBcnJheUJ1ZmZlci9UeXBlZEFycmF5L2V0Yy4uIHRvIGJlaW5nIFVDUFVSZWdpc3Rlci4K
KyAgICAgICAgLSBUaGlzIGFsc28gcmVxdWlyZWQgY2hhbmdpbmcgTmV3VHlwZWRBcnJheSBpbiBh
bGwgb2YgTExJbnQvQmFzZWxpbmUvREZHL0ZUTCB0byBhY2NlcHQgYSBub24taW50MzIgc2l6ZS4K
KyAgICAgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zLCBJ
IGhhZCB0byBhZGQgc3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwsIHdoaWNoIG5vdyBoYXZlIHR3
byB2ZXJzaW9ucyBvZiBOZXdUeXBlZEFycmF5IChvbmUgdGhhdCB0YWtlcyBhbiBJbnQzMiBhbmQg
b25lIHRoYXQgdGFrZXMgYSBTdHJpY3RJbnQ1MikKKyAgICAgICAgLSBTaW1pbGFybHksIEdldEFy
cmF5TGVuZ3RoIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCBub3cgY2FuIGVpdGhlciByZXR1
cm4gYW4gSW50MzIgb3IgYSBsYXJnZXIgbnVtYmVyLgorICAgICAgICAgICAgSSBhbHNvIGhhZCB0
byBzcGxpdCB0aGVtIGluIHRoZSBERkcvRlRMLCBzZWUgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIgYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBmb3IgZXhhbXBsZXMKKyAgICAg
ICAgLSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMy
IGluZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4
aW11bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVk
IGEgIm1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJy
YXlQcm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQz
MiBpbmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxp
emF0aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4g
dXBkYXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBj
b3JyZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9m
IHRpbWUgdG8gYWRkIHRoZXNlIHNwZWN1bGF0aW9ucy91cGRhdGUgdGhlIGZhc3QgcGF0aHMuCisg
ICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVw
IHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBh
dGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGlu
ZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBo
aWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBw
YXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBjdXJy
ZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZv
cm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBh
dGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRy
ICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisg
ICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMg
Y2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2gg
aXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRp
ZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBv
ZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkK
KyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQg
d2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50
cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6
OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6
YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0
aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJM
ZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGlu
ZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRl
Y29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlC
ZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJn
ZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmls
ZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fy
cmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0
aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJy
YXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
R2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpT
Qzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RvcmFnZUNoaWxkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpzdG9yYWdlQ2hpbGRJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzQXJyYXlNb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5
UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudEFycmF5Q2hlY2tzKToKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1p
dE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQu
aDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ2NE5vbk5lZ2F0aXZlKToKKyAgICAg
ICAgKiBqaXQvSW50cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpn
ZXRCeVZhbCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29u
dGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
OjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXggY29u
c3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyQ29udGVudHM6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
Z2NTaXplRXN0aW1hdGVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJW
aWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJWaWV3OjpjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXJWaWV3OjpzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRS
YW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCk6CisgICAgICAg
IChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpEYXRhVmlldzo6RGF0YVZpZXcpOgorICAg
ICAgICAoSlNDOjpEYXRhVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3
Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcpOgor
ICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSk6CisgICAgICAgIChK
U0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZp
ZXc6OnNpemVPZik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmll
dzo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvSW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRl
eCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAg
IChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJ
bmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChK
U0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoK
KwogMjAyMS0xMC0xMSAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
SlNDXVtBUk12N10gTWFrZSBMTEludCBDU1Igc2F2ZS9yZXN0b3JlIG9yZGVyIG1hdGNoIHRoZSBK
SVRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggNDNmNzg0YTRhYjkzLi5lYzMy
YjcyMjFjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yOTgsOSArMjk4LDkgQEAgcHVibGljOgog
ICAgIC8vIGluIGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRl
ciB0byBkaWZmZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRl
IGFkZHJlc3NlcyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRy
IDogcHVibGljIFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAg
ICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBj
b25zdGV4cHIgVHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDog
bV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMTEsMjEgKzMxMSwyMSBA
QCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0
ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVz
dGVkSW1tUHRyKHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3Zh
bHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRy
X3QgYXNJbnRwdHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0
cigpCisgICAgICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzM1
LDEyICszMzUsMTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1
c3RlZEltbVB0cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZh
bHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVl
KQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0
aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigp
IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTM1
OCw3ICszNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAg
ICAgICBleHBsaWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAg
ICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAt
MzY5LDE3ICszNjksMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRl
IFRydXN0ZWRJbW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisg
ICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAg
ICAgOiBUcnVzdGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUo
WDg2XzY0KQotICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAg
ICAgOiBUcnVzdGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAg
ICAgICBjb25zdCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4g
KnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVk
SW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM5MCwx
NSArMzkwLDE1IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFu
IGVudW0pIGZyb20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0
ZSB2YWx1ZXMuCiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAg
ICBUcnVzdGVkSW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsg
fQogICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkK
ICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNp
ZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDA5LDE3ICs0
MDksMTcgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1t
NjQKICAgICB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBU
cnVzdGVkSW1tNjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQp
IHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRy
dXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3Rl
ZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsK
ICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVk
SW1tNjQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3Qg
VHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAg
ICAgfTsKICAgICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVy
IGhhbmRsZXMKQEAgLTEwODYsOSArMTA4Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAg
ICAgfQotICAgIHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBz
dGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50
NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxp
bmQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAg
ICBmcmllbmQgY2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGQ3ZmUzYTgxZTM0MS4uZTY3NjdjNmE5
YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCkBAIC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikg
fHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmxzaGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAg
ICB9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUo
WDg2XzY0KSAmJiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgc3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0j
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQp
IHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJ
bW0zMigpKTsKICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBw
bGF0Zm9ybXMgZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25h
bENvbmRpdGlvbiwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJp
Z2h0IGZpbGUuCisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2
XzY0LmgsIGJlY2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRD
b25zdGFudCwgZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUu
CisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgSW1tNjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQp
KSB7CisgICAgICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsK
KyAgICAgICAgICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGlu
ZENvbnN0YW50KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJs
aW5kaW5nKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBo
YXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAg
ICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1
aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BD
b3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsK
KyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAppbmRleCA0MjUwOTAzYmMzMjIuLjE3OTZiNjUxYmM0MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0
NCw4ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxp
bmtSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVh
c29uYWJsZSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxk
QmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4
MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBA
IC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJh
bmNoKGNvbmQpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRD
YWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5k
ZXggNGNmMjI0MGQ2YzNmLi4wNzY2Mjk4MmQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCAr
MTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFy
Z2V0LCBib29sIHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJh
eVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxp
ZGF0ZUF1dGgpCiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVu
Z3RoR1BSKTsKKyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0
byBzY3JhdGNoID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihs
ZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmgKaW5kZXggY2NlMGQwMWY0MDE3Li5kNzc0Njk5OWJlMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBS
ZWdpc3RlcklEIHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVn
aXN0ZXJzOjplYnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMy
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgp
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRG
b3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZm
ZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAg
IC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZDFhZTNiNTUzNTY1Li5m
Njg2YWQ5ZjIzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKQEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRj
aEZQUigpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1
c3RvbVZhbHVlU2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2Fz
ZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAg
ICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNz
Q2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5
VWludDMyU3RvcmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlw
ZWRBcnJheUxlbmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hp
bmcgdGhlaXIgcmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTE5MSwxMiArMTE5MiwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlH
UFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0
Y2hHUFIpOwotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMy
KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOwor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BS
KTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIFVDUFVS
ZWdpc3Rlciwgc28gZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9y
bS4KKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2Fs
bEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7Cisj
ZWxzZQorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKEND
YWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7
CisjZW5kaWYKIAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0
dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5i
YXNlUmVncygpKTsKQEAgLTEyMTEsOSArMTIxNywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZl
ZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJz
QnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4
dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAg
ICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAg
ICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAg
ICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQu
Y2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQ
Uiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0
ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0
eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewpAQCAtMTYz
MCw5ICsxNjQwLDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAg
ICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9CiAKLSAgICAgICAgaml0LmxvYWQz
MihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgLy8gT3V0T2ZCb3VuZHMgYml0IG9m
IEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3BlcmF0aW9uIGZ1bmN0aW9uLgotICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVy
czo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAgICAg
aml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBDUFUo
UkVHSVNURVI2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBpcyBhIFVDUFVSZWdpc3Rlciwgc28g
ZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAg
c3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFi
b3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7CisjZWxzZQorICAgICAg
ICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7CisjZW5kaWYKIAog
ICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRS
ZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsK
QEAgLTE2NDgsOSArMTY2MywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJk
KAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNl
cnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAog
ICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFj
ZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBqaXQubG9h
ZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9h
ZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uYmVlN2E5ZmNkYzkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVz
IHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0
eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBB
cnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3
aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAg
IH0KLSAgICAKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIC8vIEFjY2Vzc2luZyB0eXBlZCBh
cnJheXMgbGFyZ2VyIHRoYW4gdGhhdCB0ZW5kcyB0byBiZSBtb3JlIGNvbXBsaWNhdGVkIGFzIHdl
IGNhbid0IGZvcmNlIGNvbnZlcnQgZXZlcnl0aGluZyB0byBpbnQzMl90LgorICAgIC8vIFdlIG9u
bHkgc3VwcG9ydCBzdWNoIGxhcmdlIHR5cGVkIGFycmF5cyBvbiA2NC1iaXQgcGxhdGZvcm1zLgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICB2b2lkIHNldE1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsgfQorICAg
IGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29u
c3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorI2Vsc2UKKyAgICBib29sIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFy
cmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5
TW9kZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZt
X21heVN0b3JlVG9Ib2xlOyB9CkBAIC0yNDQsNiArMjU0LDkgQEAgcHJpdmF0ZToKICAgICBTdHJ1
Y3R1cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3Jl
VG9Ib2xlIHsgZmFsc2UgfTsgLy8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBp
bmRpY2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcg
YXJyYXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1
cnJlbnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFu
dHMgb2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5
IHdoYXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9
OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7
IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2Vz
IDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBi
b29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY2LDEzIEBA
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxp
bmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9
IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6
IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgQ1BVKFJFR0lTVEVSNjQp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAg
ICAgICBpZiAobV9tYXlCZUxhcmdlVHlwZWRBcnJheSkKKyAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBl
ZEFycmF5OworI2VuZGlmCiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjkwLDcgKzMxNiwxMSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X291dE9mQm91bmRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVz
IHsgdHJ1ZSB9OworICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOwor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7
CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5UHJvZmlsZSkg
PD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDJiMmY1
ZTAzMDE5Zi4uNWJiZjYzYzcyZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDYzLDcgKzM0
NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5v
ZGUtPmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgaWYgKHZpZXcg
JiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBH
ZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewog
ICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVW
aWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBpZiAodmlldykg
ewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXct
PmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7
CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZp
ZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0
ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3
ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92
YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVD
UFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsK
KyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBH
ZXRQcm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1f
dHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpA
QCAtNDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0
aGUgQ2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2Ug
cHV0IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50NTJB
bnkpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5k
OgogICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNmUy
NzUzMTA0YmQzLi5hM2I5MzQwZjY5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtMzI1LDYg
KzMyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUt
PmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAg
ICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgICAg
ICAgICAvLyBUaGlzIG5vZGUgaXMgb25seSB1c2VkIGZvciBUeXBlZEFycmF5cywgc28gc2hvdWxk
IG5vdCBiZSByZWxldmFudCBmb3IgYXJndW1lbnRzIGVsaW1pbmF0aW9uCisgICAgICAgICAgICAg
ICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCiAgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAg
ICAgICAgICAgICAgICAgICAgQml0VmVjdG9yKiBiaXRWZWN0b3IgPSBub2RlLT5iaXRWZWN0b3Io
KTsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRj
aHBvaW50ID0gbV9ncmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUp
OyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAppbmRleCA2ZTRm
ZTlhZmEzZWIuLjcyNThlMzcxNTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJl
ZmluZSgKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6Rm9yY2VFeGl0LCBhY3Rpb24o
KSk7CiAgICAgfQogICAgIAotICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSkKKyAg
ICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkgJiYgIW1heUJlTGFyZ2VUeXBlZEFycmF5
KCkpCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIGFjdGlvbigpKTsK
ICAgICAKICAgICAvLyBJZiB3ZSBoYWQgZXhpdGVkIGJlY2F1c2Ugb2YgYW4gZXhvdGljIG9iamVj
dCBiZWhhdmlvciwgdGhlbiBkb24ndCB0cnkgdG8gc3BlY2lhbGl6ZS4KQEAgLTI5NCw2ICsyOTQs
OCBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZpbmUoCiAgICAgY2FzZSBBcnJheTo6RmxvYXQ2
NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJpZ0ludDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6
QmlnVWludDY0QXJyYXk6CisgICAgICAgIC8vIEZJWE1FOiBubyBpZGVhIHdoeSB3ZSBvbmx5IHBy
ZXNlcnZlIHRoaXMgb3V0LW9mLWJvdW5kcyBpbmZvcm1hdGlvbiBmb3IgUHV0QnlWYWwgYW5kIG5v
dCBHZXRCeVZhbCBhcyB3ZWxsLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxMjc2CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFs
KSB7CiAgICAgICAgICAgICBpZiAoZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBPdXRPZkJvdW5kcykgfHwgIWlzSW5Cb3VuZHMoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHlwZWRBcnJheVJlc3VsdCh3aXRoU3BlY3VsYXRpb24oQXJyYXk6Ok91dE9mQm91bmRzKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAppbmRleCBhMDI2YWFkMTg5
M2IuLmRmNzVjNzg5MGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcnJheU1vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3Vs
YXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0g
QXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBBcnJheTo6V3JpdGU7Cisg
ICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAg
ICAKICAgICBleHBsaWNpdCBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkFjdGlv
biBhY3Rpb24pCkBAIC0xMzYsNiArMTM3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMu
c3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJz
aW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247Cisg
ICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAg
ICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xh
c3MsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTQ1LDE1ICsxNDcsMTcgQEAgcHVibGljOgog
ICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CiAgICAgICAg
IHUuYXNCeXRlcy5jb252ZXJzaW9uID0gQXJyYXk6OkFzSXM7CiAgICAgICAgIHUuYXNCeXRlcy5h
Y3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9
IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJy
YXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJy
YXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCisgICAgQXJy
YXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6
U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFy
cmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2UpCiAg
ICAgewogICAgICAgICB1LmFzQnl0ZXMudHlwZSA9IHR5cGU7CiAgICAgICAgIHUuYXNCeXRlcy5h
cnJheUNsYXNzID0gYXJyYXlDbGFzczsKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0g
c3BlY3VsYXRpb247CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lvbjsK
ICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1h
eUJlTGFyZ2VUeXBlZEFycmF5ID0gbWF5QmVMYXJnZVR5cGVkQXJyYXk7CiAgICAgfQogICAgIAog
ICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywg
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0x
NjMsNiArMTY3LDcgQEAgcHVibGljOgogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBB
cnJheTo6SW5Cb3VuZHM7CiAgICAgICAgIHUuYXNCeXRlcy5jb252ZXJzaW9uID0gY29udmVyc2lv
bjsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVz
Lm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAogICAgIEFycmF5OjpU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6VHlwZT4odS5hc0J5
dGVzLnR5cGUpOyB9CkBAIC0xNzAsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEFycmF5OjpTcGVj
dWxhdGlvbiBzcGVjdWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpT
cGVjdWxhdGlvbj4odS5hc0J5dGVzLnNwZWN1bGF0aW9uKTsgfQogICAgIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6Q29udmVy
c2lvbj4odS5hc0J5dGVzLmNvbnZlcnNpb24pOyB9CiAgICAgQXJyYXk6OkFjdGlvbiBhY3Rpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6QWN0aW9uPih1LmFzQnl0ZXMuYWN0
aW9uKTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSBjb25zdCB7IHJldHVybiB1
LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KICAgICAKICAgICB1bnNpZ25lZCBhc1dv
cmQoKSBjb25zdCB7IHJldHVybiB1LmFzV29yZDsgfQogICAgIApAQCAtMTc5LDM1ICsxODUsNTAg
QEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgQXJyYXlNb2RlIGZyb21PYnNlcnZl
ZChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2ZpbGUqLCBBcnJheTo6QWN0aW9u
LCBib29sIG1ha2VTYWZlKTsKLSAgICAKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6
VHlwZSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBh
cnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJl
TGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRp
b24oQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZl
cnNpb24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoQXJyYXlDbGFz
cyhBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcykgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoQ29u
dmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNv
bnZlcnNpb24oKSwgYWN0aW9uKCkpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwg
YXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVM
YXJnZVR5cGVkQXJyYXkoKSk7CiAgICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoU3BlY3Vs
YXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQ
cm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdp
dGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBj
b252ZXJzaW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBh
cnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKKyAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3NB
bmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KEFycmF5OjpDbGFzcyBhcnJheUNs
YXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVk
QXJyYXkpIGNvbnN0CiAgICAgewotICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxh
dGlvbjsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1
bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSk7Cisg
ICAgfQogCisgICAgc3RhdGljIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbkZyb21Qcm9m
aWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2Zp
bGUsIGJvb2wgbWFrZVNhZmUpCisgICAgewogICAgICAgICBpZiAobWFrZVNhZmUpCi0gICAgICAg
ICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOworICAgICAgICAgICAgcmV0
dXJuIEFycmF5OjpPdXRPZkJvdW5kczsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZS0+bWF5U3Rv
cmVUb0hvbGUobG9ja2VyKSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6VG9I
b2xlOworICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7Ci0gICAgICAgIAotICAg
ICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRpb24pOworICAgICAgICAgICAg
cmV0dXJuIEFycmF5OjpJbkJvdW5kczsKICAgICB9Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0
aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIs
IEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24oc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIs
IHByb2ZpbGUsIG1ha2VTYWZlKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhQcm9maWxl
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUs
IGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJh
eUNsYXNzOwotCiAgICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKHBy
b2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJv
bU9yaWdpbmFsQXJyYXkoKSkgewogICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2Rl
cyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpOwpAQCAtMjIxLDIzICsyNDIs
MTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJh
eTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNz
KCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNz
KS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsK
LSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwg
c3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7Ci0gICAgfQotICAgIAotICAg
IEFycmF5TW9kZSB3aXRoQ29udmVyc2lvbihBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3Mo
KSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAg
ICBBcnJheU1vZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0
aW9uKCkpOworCisgICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiA9IHNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisKKyAgICAgICAg
Ym9vbCBsYXJnZVR5cGVkQXJyYXkgPSBwcm9maWxlLT5tYXlCZUxhcmdlVHlwZWRBcnJheShsb2Nr
ZXIpOworCisgICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5
QmVMYXJnZVR5cGVkQXJyYXkobXlBcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgbGFyZ2VUeXBlZEFy
cmF5KTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSB1
bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlID0gU3BlY0ludDMyT25seTsKQEAgLTUyNiw3ICs1MzYs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpCiAgICAg
ICAgICAgICAmJiBhcnJheUNsYXNzKCkgPT0gb3RoZXIuYXJyYXlDbGFzcygpCiAgICAgICAgICAg
ICAmJiBzcGVjdWxhdGlvbigpID09IG90aGVyLnNwZWN1bGF0aW9uKCkKLSAgICAgICAgICAgICYm
IGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCk7CisgICAgICAgICAgICAmJiBjb252
ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpCisgICAgICAgICAgICAmJiBtYXlCZUxhcmdl
VHlwZWRBcnJheSgpID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CiAgICAgfQogICAg
IAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUmIG90aGVyKSBjb25zdApAQCAt
NTc5LDcgKzU5MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50OF90IGFycmF5Q2xhc3M7
CiAgICAgICAgICAgICB1aW50OF90IHNwZWN1bGF0aW9uOwogICAgICAgICAgICAgdWludDhfdCBj
b252ZXJzaW9uIDogNDsKLSAgICAgICAgICAgIHVpbnQ4X3QgYWN0aW9uIDogNDsKKyAgICAgICAg
ICAgIHVpbnQ4X3QgYWN0aW9uIDogMTsKKyAgICAgICAgICAgIHVpbnQ4X3QgbWF5QmVMYXJnZVR5
cGVkQXJyYXkgOiAxOwogICAgICAgICB9IGFzQnl0ZXM7CiAgICAgICAgIHVuc2lnbmVkIGFzV29y
ZDsKICAgICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IGM4OGRlNGIyMzljNy4uMDM0YmRkNjYxNTFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgwNyw4ICsz
ODA3LDE3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2Fs
bFRhcmdldCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERPCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9w
ZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeVZhcmlh
bnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpCiB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgc3RhdGljX2Fzc2VydChlbmFibGVJ
bnQ1MigpKTsKKyNlbmRpZgorCiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAg
ICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBib29sIHdp
bGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKFJFR0lTVEVSNjQpCisgICAgICAg
IGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5
cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNs
YXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBAIC0zODIyLDI2ICszODMxLDMwIEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3Vs
dCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9
IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgTm9kZSogbGVuZ3RoTm9k
ZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBl
LCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAgICAgIE5vZGVUeXBlIG9w
ID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7CisgICAgICAgIE5vZGUqIGxlbmd0aE5vZGUgPSBh
ZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIgQXJyYXlNb2RlIHNob3VsZG4ndCBj
YXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJlIG9rIHRvIGV4aXQgd2l0aG91dCBl
ZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgICAgIGFkZFRvR3JhcGgoRXhp
dE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewogICAgICAgICAgICAgc2V0KHJlc3Vs
dCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5
cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAgICAgIC8vIHRoYXQgb3ZlcmZsb3dz
IGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKGxv
Z1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aEJpdExTaGlmdCwg
bGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgYSBCaXRM
U2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkgaGF2ZSBhIGJ5dGVMZW5ndGggdGhh
dCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5cGVTaXplID0ganNDb25zdGFudChq
c051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChB
cml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyAgICAgICAg
Ym9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIUNQVShSRUdJU1RFUjY0KQor
ICAgICAgICBpZiAod2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MikKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2lu
KCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg1MywxMyArMzg2
NiwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFu
ZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5
VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1
bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBl
LCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlwZSBv
cCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPyBHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MiA6IEdldEFycmF5TGVuZ3RoOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIH0KIAogICAgIGNh
c2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVl
ZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA9ICFpc0ludDMyU3BlY3VsYXRpb24ocHJl
ZGljdGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpOworI2lmICFDUFUoUkVHSVNURVI2NCkKKyAgICAgICAg
aWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAg
IFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSkt
PmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBAIC0zODcxLDcgKzM4OTAsOCBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1
bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAh
PSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlU
eXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlw
ZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyID8gR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyIDogR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ7CisgICAgICAg
IHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXgg
YThkZDNmZGU5Nzc5Li45YWQ1YzI3MDIwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0
ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRvckhhc093blByb3BlcnR5OgogICAgICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0
QnlWYWxEaXJlY3Q6CkBAIC0yMzksNiArMjQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIFRvQm9vbGVhbjoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDaGVj
a0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgRG91Ymxl
UmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKQEAgLTEzMzcsNiAr
MTMzOSwxMSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSks
IExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAg
IGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYywgTWlzY0ZpZWxk
cywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKwog
ICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBBcnJheVVzZToKQEAgLTE0NDQsNiArMTQ1MSwx
NCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB9CiAgICAgfQogCisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBBcnJheU1vZGUgbW9kZSA9
IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlLmlzU29tZVR5
cGVkQXJyYXlWaWV3KCkpOworICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYo
SGVhcExvY2F0aW9uKFR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+
Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpOwogICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb24uaAppbmRleCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlu
bGluZSBib29sIHZhbGlkYXRpb25FbmFibGVkKCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBl
bmFibGVJbnQ1MigpCitpbmxpbmUgYm9vbCBjb25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGI4ODI1YWNh
ZTM0ZS4uZmExN2JmMTE0MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMzg3LDYgKzM4Nyw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVu
dEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5
Ny4uNDAyODRjZmEyMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBj
YXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2Fz
ZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVj
a1ZhcmFyZ3M6CkBAIC0xOTcsMTAgKzE5OCwxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVB
dDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAg
Y2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIEdl
dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggOGUxYjkzZWVlNmNhLi43ZDQ5MGEzYjI0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNDMsNiArMTA0Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3Bl
Y3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3Bl
Y2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91
bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFy
Z2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xMDcz
LDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4
aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZl
IG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2RlLgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
RSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEVudW1lcmF0b3JHZXRCeVZhbCkKICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhU
eXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMzLDYg
KzExMzQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5n
VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKKyAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQz
MkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6
VWludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25D
ZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKQEAgLTExODQs
NiArMTE5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJl
clNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5v
ZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBub2Rl
LT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUt
PmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAg
JiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykp
IHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCkBAIC0xNzE3LDEyICsxNzMxLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmlu
Z0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJG
bGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50
NTIoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE0OSw2ICsyMTY3LDIxIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkt
PnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAg
ICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAg
ICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNz
QXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxl
bmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OiB7CiAgICAg
ICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yMTgyLDYgKzIyMTUsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENo
ZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAg
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6
CiAgICAgICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICAgICAgY2FzZSBEb3Vi
bGVBc0ludDMyOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKQEAgLTQwOTYsMTQgKzQxMzAs
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIG5vZGUtPmNoaWxkMigpID0gRWRn
ZShzdG9yYWdlKTsKICAgICB9Ci0gICAgCi0gICAgTm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3Ro
KE5vZGVPcmlnaW4gb3JpZ2luLCBOb2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKLSAg
ICB7Ci0gICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgb3JpZ2lu
LCBjaGlsZCwgbnVsbHB0ciwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKLSAgICAgICAgcmV0dXJuIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhh
cnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGNoaWxkLCBLbm93bkNlbGxVc2UpLCBFZGdlKHN0b3Jh
Z2UpKTsKLSAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRUb0hhc0luZGV4ZWRQcm9wZXJ0eShOb2Rl
KiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R2VuZXJhdGlvbkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlv
bkluZm8uaAppbmRleCA0ZmFmOTQ5YTc4NjAuLjJkODZlYjc1NzM5YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaApAQCAtMzksOCArMzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8g
dHJhY2sgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGxpdmUgdmFsdWVzIGR1cmluZyBjb2RlIGdlbmVy
YXRpb24uCiAvLyBDYW4gcHJvdmlkZSBpbmZvcm1hdGlvbiBhcyB0byB3aGV0aGVyIGEgdmFsdWUg
aXMgaW4gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBpZiBzbyB3aGljaCwKIC8vIHdoZXRoZXIgYSB2
YWx1ZSBoYXMgYmVlbiBzcGlsbGVkIHRvIHRoZSBSZWdpc3RlckZpbGUsIGFuZCBpZiBzbyBtYXkg
YmUgYWJsZSB0byBwcm92aWRlCi0vLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQgaW4gbWVtb3J5IChh
bGwgdmFsdWVzIGFyZSBzcGlsbGVkIGluIGEgYm94ZWQgZm9ybSwgYnV0IHdlIG1heSBiZQotLy8g
YWJsZSB0byB0cmFjayB0aGUgdHlwZSBvZiBib3gpLCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0
YW5kaW5nIHVzZXMgb2YgYSB2YWx1ZSByZW1haW4sCisvLyBkZXRhaWxzIG9mIHRoZSBmb3JtYXQg
aW4gbWVtb3J5LCBhbmQgdHJhY2tzIGhvdyBtYW55IG91dHN0YW5kaW5nIHVzZXMgb2YgYSB2YWx1
ZSByZW1haW4sCiAvLyBzbyB0aGF0IHdlIGtub3cgd2hlbiB0aGUgdmFsdWUgaXMgZGVhZCBhbmQg
dGhlIG1hY2hpbmUgcmVnaXN0ZXJzIGFzc29jaWF0ZWQgd2l0aCBpdAogLy8gbWF5IGJlIHJlbGVh
c2VkLgogY2xhc3MgR2VuZXJhdGlvbkluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdIZWFwTG9jYXRpb24uY3BwCmluZGV4IDJiYjlkNGJlYTgwMC4uMDY2MWU1YjgyNmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCkBAIC0x
ODIsNiArMTgyLDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2Nh
dGlvbktpbmQga2luZCkKICAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldExv
YyIpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50
NTJMb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYyIp
OworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYzoK
KyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MiKTsKKyAgICAgICAg
cmV0dXJuOworCiAgICAgY2FzZSBQcm90b3R5cGVMb2M6CiAgICAgICAgIG91dC5wcmludCgiUHJv
dG90eXBlTG9jIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0hlYXBMb2NhdGlvbi5oCmluZGV4IDI2OTE3MWNiMzQxZC4uNDBmYjcxNjczMjg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKQEAgLTY3LDYgKzY3
LDggQEAgZW51bSBMb2NhdGlvbktpbmQgewogICAgIFNldHRlckxvYywKICAgICBTdHJ1Y3R1cmVM
b2MsCiAgICAgVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MsCisgICAgVHlwZWRBcnJheUJ5dGVPZmZz
ZXRJbnQ1MkxvYywKKyAgICBUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MsCiAgICAgUHJvdG90eXBl
TG9jLAogICAgIFN0YWNrTG9jLAogICAgIFN0YWNrUGF5bG9hZExvYywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHAKaW5kZXggMWJhYTFjOGJjZjUxLi4yYjMzYzZkNGY0NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwCkBAIC0xMzA4LDcgKzEzMDgsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOiB7CisgICAgICAgICAgICAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5k
c0ludDUyOiB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fcmVsYXRpb25zaGlw
cy5maW5kKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChp
dGVyID09IG1fcmVsYXRpb25zaGlwcy5lbmQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTMzNSw3ICsxMzM2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vbk5lZ2F0aXZlICYmIGxlc3NUaGFuTGVuZ3RoKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlTm9kZShibG9jay0+YXQobm9kZUluZGV4
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmFsaWRh
dGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigpKSAmJiBu
b2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBBc3NlcnRJbkJv
dW5kcywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gV2UganVzdCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUg
YSB2YWx1ZS1wcm9kdWNpbmcgbm9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKQEAgLTEzODIsNyArMTM4
Myw4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRlYWNoIHRoaXMgYWJvdXQgRW51bWVyYXRvck5leHRFeHRyYWN0SW5k
ZXguCi0gICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczogeworICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CiAgICAgICAgICAgICBz
ZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25zaGlwOjpzYWZlQ3JlYXRlKG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpLCBSZWxhdGlvbnNoaXA6Okxlc3NUaGFuKSk7CiAg
ICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25zaGlwOjpzYWZlQ3JlYXRlKG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSwgbV96ZXJvLCBSZWxhdGlvbnNoaXA6OkdyZWF0ZXJUaGFuLCAtMSkp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDk5LDYgKzE1MDEsNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0
b3JMZW5ndGg6IHsKICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hpcChSZWxhdGlvbnNoaXAobm9k
ZSwgbV96ZXJvLCBSZWxhdGlvbnNoaXA6OkdyZWF0ZXJUaGFuLCAtMSkpOwogICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4u
MGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUs
NiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3Bl
cnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAg
ICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJu
IDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxE
aXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0
Y2ZkYWM4Li45OTcxMzZjY2E1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTI2MSw4ICsyNjEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8q
IFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBv
bmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBi
aXRzLiAqLyBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIsIE5vZGVSZXN1
bHRJbnQ1MikgXAogICAgIG1hY3JvKEdldFZlY3Rvckxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBc
CiAgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE5vZGVSZXN1bHRJbnQzMikgXAor
ICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiwgTm9kZVJlc3VsdEludDUy
KSBcCiAgICAgbWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNraXBT
Y29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUmVzb2x2ZVNjb3BlLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0yODYsNiArMjg5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENoZWNrQmFkVmFsdWUsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhBc3NlcnRJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMp
IFwKKyAgICBtYWNybyhDaGVja0luQm91bmRzSW50NTIsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhDaGVja0lkZW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oQ2hlY2tUeXBlSW5mb0ZsYWdzLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUYWtlcyBh
biBPcEluZm8gd2l0aCB0aGUgZmxhZ3MgeW91IHdhbnQgdG8gdGVzdCBhcmUgc2V0ICovXAogICAg
IG1hY3JvKENoZWNrSlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUaGlzIGlzIHRoZSBzYW1l
IGFzIGpzQ2FzdCBidXQgYXMgYSBzcGVjdWxhdGlvbiByYXRoZXIgdGhhbiBhc3NlcnRpb24gKi9c
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlNTA3
ZjFlODBhYzAuLmIzZjJiYjdhOTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCkBAIC05NywxMCArOTcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2
b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNWYWx1
ZQogICAgIH0KICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmNh
blNldEluZGV4UXVpY2tseShpbmRleCwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBvYmplY3QtPnNl
dEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgaWYgKG9iamVjdC0+dHJ5
U2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CiAKICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
b2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgc3RyaWN0KTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTc1LDcgKzE3Myw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0QnlW
YWxDZWxsU3RyaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLWNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IHNpemUsIGNoYXIqIHZlY3RvcikKK2NoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDUFVSZWdpc3RlciBzaXplLCBjaGFyKiB2ZWN0b3IpCiB7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0xODMsMTEgKzE4MSwxMyBAQCBjaGFyKiBu
ZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIlJlcXVlc3RlZCBsZW5ndGggaXMg
bmVnYXRpdmUiX3MpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCisg
ICAgVUNQVVJlZ2lzdGVyIHVuc2lnbmVkU2l6ZSA9IHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4o
c2l6ZSk7CisKICAgICBpZiAodmVjdG9yKQotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNo
YXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBzaXplLCB1bnRhZ0FycmF5UHRyKHZlY3Rvciwgc2l6ZSkpKTsKKyAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXplLCB1bnRhZ0FycmF5UHRyKHZlY3Rvciwg
dW5zaWduZWRTaXplKSkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBz
aXplKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9jYXN0PGNoYXIq
PihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdW5zaWduZWRTaXpl
KSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CkBAIC0xOTA4LDcgKzE5MDgsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIEpTQ2VsbCos
IChWTSogdm1Qb2ludGVyLCBTdHJ1YwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTkyNCw3ICsxOTI0LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhB
cnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxs
b3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVn
aXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0xOTQwLDcgKzE5NDAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMy
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTU2LDcgKzE5NTYsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MzJBcnJheT4oZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0x
OTcyLDcgKzE5NzIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1
ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENs
YW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5ODgsNyArMTk4OCw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OENsYW1w
ZWRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpu
dWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
UFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTIwMDQsNyArMjAwNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMjAsNyArMjAyMCw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50MzJB
cnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxs
b3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMy
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQ
VVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMjAzNiw3ICsyMDM2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA1Miw3ICsyMDUyLDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0
NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpu
dWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJ
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0ds
bwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmlnSW50NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKLUpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMzkzZGU4ODUwNzA3Li44Zjk2
ZWMwYjA3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBA
IC0xMTksMjcgKzExOSwyNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0FycmF5LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKgogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdFbXB0eUFycmF5LCBjaGFyKiwgKFZNKiwgU3RydWN0
dXJlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgQnV0dGVy
Zmx5KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplQW5kSGludCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGludDMyX3QsIEJ1dHRlcmZseSopKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1w
ZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVk
SlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMy
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMy
X3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BV
UmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJf
dCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWlu
dDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQ
VVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdCaWdVaW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IsIEpTQ2Vs
bCosIChWTSosIFN0cnVjdHVyZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjBkMDQ0
ZjVmNWMwLi44ZTBjNThiOGEyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODYsNiAr
OTg2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNw
ZWNJbnQ1MkFueSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewog
ICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKQEAgLTEzMjAsNiArMTMy
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAg
ICAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgor
ICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50
MzI6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwOgogICAgICAgICBjYXNlIFZhbHVlUmVwOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKaW5k
ZXggZTNhMjM5YTMzZTMwLi43ZmFhNTI2NThmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcApAQCAtMTAwLDExICsxMDAsMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSAhPSBOb3RUeXBlZEFy
cmF5ICYmIG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKSB7Ci0gICAgICAgICAg
ICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBt
X25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlN
b2RlKCkuYXNXb3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCkgPSBFZGdlKGxlbmd0aCwg
S25vd25JbnQzMlVzZSk7CisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCku
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVu
Z3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBt
X25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFy
cmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBJbnQ1MlJlcFVz
ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
bGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUo
KS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSk7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzcsMTIgKzE0MywyMyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9u
bHksIG9wLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5
TW9kZSgpLmFzV29yZCgpKSwgRWRnZShiYXNlLm5vZGUoKSwgS25vd25DZWxsVXNlKSwgc3RvcmFn
ZSk7Ci0gICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3Vu
ZHMsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBLbm93
bkludDMyVXNlKSk7CisgICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHM7CisgICAgICAgIGlmICgo
b3AgPT0gR2V0QXJyYXlMZW5ndGgpICYmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VU
eXBlZEFycmF5KCkgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YywgT3ZlcmZsb3cpKSkgeworICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55
LCBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9k
ZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBTcGVjSW50NTJBbnksIENoZWNrSW5Cb3VuZHNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBJbnQ1MlJlcFVzZSkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgb3AsIG1f
bm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgp
LmFzV29yZCgpKSwgRWRnZShiYXNlLm5vZGUoKSwgS25vd25DZWxsVXNlKSwgc3RvcmFnZSk7Cisg
ICAgICAgICAgICBjaGVja0luQm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kcywg
bV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBLbm93
bkludDMyVXNlKSk7CisgICAgICAgIH0KKwogCiAgICAgICAgIEFkamFjZW5jeUxpc3QgYWRqYWNl
bmN5TGlzdCA9IG1fZ3JhcGguY29weVZhcmFyZ0NoaWxkcmVuKG1fbm9kZSk7CiAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGVja0luQm91bmRzLCBVbnR5cGVk
VXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IDkyNGZjOGMzMTA4Ni4uMmU3ZjU2YWExMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjg4LDYgKzI4OCw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEFzc2Vy
dEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVj
azoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM3Myw2ICszNzQsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNl
IEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4Nyw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAgIAogICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDQ5NDU0Yzg3ZGRmZS4uNDdlZmI1YTY2N2YwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzIz
OCwyOCArMzIzOCw0MiBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVUb0J5dGUoSklU
Q29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNvdQogCiB9CiAKLUpJVENvbXBp
bGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCitKSVRDb21waWxlcjo6
SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiBu
b2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikK
IHsKICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQogICAgICAgICByZXR1cm4g
SklUQ29tcGlsZXI6Okp1bXAoKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0
LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobV9q
aXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkpOwog
ICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXctPmxlbmd0aCgp
OworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAgICAg
IE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgpOwot
ICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUtPmFz
VUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29uc3Rh
bnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICByZXR1
cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgbV9q
aXQuc2lnbkV4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICByZXR1
cm4gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tNjQobGVuZ3RoKSk7CisjZWxzZQog
ICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGxlbmd0aCkp
OworI2VuZGlmCiAgICAgfQorCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgbV9qaXQuc2lnbkV4
dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgIHJldHVybiBtX2ppdC5icmFu
Y2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMy
KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcg
aW5kZXhHUFIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNr
KE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBp
bmRleEdQUiwgc2NyYXRjaEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBu
dWxscHRyLCBqdW1wKTsKQEAgLTMzODAsMTcgKzMzOTQsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlU
eXBlIHQKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFu
ZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigp
OwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBz
dG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAgIERhdGFGb3JtYXQg
Zm9ybWF0OwogICAgIHN0ZDo6dGllKHJlc3VsdFJlZ3MsIGZvcm1hdCkgPSBwcmVmaXgoRGF0YUZv
cm1hdEludDMyKTsKICAgICBib29sIHNob3VsZEJveCA9IGZvcm1hdCA9PSBEYXRhRm9ybWF0SlM7
CiAKLSAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5
UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3Bl
cnR5UmVnLCBzY3JhdGNoR1BSKTsKICAgICBsb2FkRnJvbUludFR5cGVkQXJyYXkoc3RvcmFnZVJl
ZywgcHJvcGVydHlSZWcsIHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCB0eXBlKTsKICAgICBjb25z
dGV4cHIgYm9vbCBjYW5TcGVjdWxhdGUgPSB0cnVlOwogICAgIHNldEludFR5cGVkQXJyYXlMb2Fk
UmVzdWx0KG5vZGUsIHJlc3VsdFJlZ3MsIHR5cGUsIGNhblNwZWN1bGF0ZSwgc2hvdWxkQm94KTsK
QEAgLTM1NDgsNiArMzU2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgQVNTRVJU
KGlzSW50KHR5cGUpKTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoICh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAg
CiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMik7
CkBAIC0zNTgwLDcgKzM1OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlW
YWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydAogICAgIEFTU0VS
VF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHByb3BlcnR5KTsKICAgICBBU1NFUlQodmFs
dWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVlR1BSICE9IHN0b3JhZ2VSZWcpOwotICAg
IEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJv
dW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5
LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAg
ICBjYXNlIDE6CkBAIC0zNjM4LDEwICszNjU1LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhp
cywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgU3RvcmFnZU9wZXJhbmQgc3Rv
cmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKICAg
ICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICBHUFJSZWcgc3RvcmFn
ZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKICAgICBEYXRhRm9ybWF0IGZvcm1h
dDsKQEAgLTM2NDksNyArMzY2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAKICAgICBG
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQu
ZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBw
cm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkg
ewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9hZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0Zv
dXIpLCByZXN1bHRSZWcpOwpAQCAtMzY4MywxMCArMzcwMiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJl
ZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVl
VXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkg
Z3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlT3AuZnByKCk7CiAg
ICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZwcigpOworICAgIEdQUlJlZyBzY3JhdGNo
R1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5
KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFy
cmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2hHUFIpOwogICAgIAog
ICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDQ6IHsKQEAgLTc5NjAs
NyArNzk4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShH
UFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRhZ0Fy
cmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFnQXJy
YXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7Cisg
ICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VS
ZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRhdGVB
dXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODAzMiw5ICs4MDUzLDYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5v
ZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyB2
ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigp
OwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7Ci0gICAgQVNTRVJUKGJhc2VHUFIg
IT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKIAogICAgIEdQ
UlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAKQEAgLTgwNzYsNiArODA5NCwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSog
bm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKICNlbmRpZgogCisjaWYgQ1BVKFJF
R0lTVEVSNjQpCisgICAgLy8gQUkgcHJvbWlzZXMgdGhhdCB0aGUgcmVzdWx0IG9mIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0IHdpbGwgYmUgSW50MzIsIHNvIHdlIG11c3QgdXBob2xkIHRoYXQgcHJv
bWlzZSBoZXJlLgorICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCks
IG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgdmVjdG9yR1BS
LCBUcnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7Cisj
ZW5kaWYKKwogICAgIHN0cmljdEludDMyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7CiB9CiAKQEAg
LTgzNDIsMTIgKzgzNjUsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5
TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIGJhc2UpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbHNlCiAgICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisjZW5kaWYKICAgICAgICAgc3Ry
aWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfSB9
CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSWRlbnQoTm9kZSogbm9k
ZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmdPclN5bWJvbCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CkBAIC0xMTExMiwxMCArMTExNDEsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIGF1dG8gdHlw
ZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOwogICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIAorCisjaWYgQ1BVKFJF
R0lTVEVSNjQpCisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRo
IGV4cGVjdCBhIENQVVJlZ2lzdGVyLCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKICAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdw
cigpOwotICAgIAorICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBt
X2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0
dXJlLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsK
KyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5
VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBl
ZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUs
IEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAg
R1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CkBAIC0xMTEyOSw4ICsxMTE3MiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIENQVShSRUdJU1RFUjY0
KQorICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoCisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTY0KEpTQXJyYXlCdWZmZXJWaWV3Ojpm
YXN0U2l6ZUxpbWl0KSkpOworICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRo
ZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgc3RhdGlj
X2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxp
bWl0KSk7CisjZWxzZQogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKEpTQXJyYXlC
dWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSkpOworI2VuZGlmCiAgICAgCiAgICAgbV9qaXQubW92
ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKICAgICBtX2ppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIo
bG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSwgc2NyYXRjaEdQUik7CkBAIC0xMTE4Niw5
ICsxMTIzNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhTaXplKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVQdHIoCiAgICAgICAgIHN0b3JhZ2VH
UFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBt
X2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0
ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE2
MCw2ICsxNDIxNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIENQVShSRUdJU1RFUjY0
KQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0
aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFVudHlw
ZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1Zh
bHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCmluZGV4IGI2NTE1ZDhiNzIxOS4uZGViOWE5MzA3YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5ICsxMzAwLDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29u
c3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09i
amVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUqKTsKLSAgICAKKwor
ICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSosIFR5cGVk
QXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUik7CiAgICAgdm9p
ZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAKKyNpZiBDUFUoUkVH
SVNURVI2NCkKKyAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShOb2Rl
Kik7CisjZW5kaWYKKwogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9B
c3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29t
cGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogI2lmIFVT
RShCSUdJTlQzMikKQEAgLTEzNzMsNiArMTM3Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVHZXRHbG9iYWxUaGlzKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KE5vZGUqKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFy
cmF5TGVuZ3RoQXNJbnQ1MihOb2RlKik7CisjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZUNoZWNr
VHlwZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudChOb2RlKik7
CkBAIC0xNDMxLDEwICsxNDM4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVBcml0aE1p
bk1heChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ29uc3RhbnRTdG9yYWdlUG9pbnRlcihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKik7Ci0g
ICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAg
anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJl
ZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1
bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNl
R1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7Ci0gICAgdm9pZCBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKTsK
KyAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJlZyBiYXNlR1BS
LCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAg
dm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRp
ZgogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFy
cmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFG
b3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVy
dHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZs
b2F0VHlwZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxz
dGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZv
cm1hdCk+JiBwcmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIg
KGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMg
eW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cg
Yml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgog
ICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJ
bnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0
cyBhcmUgc2lnbi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4g
dGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24t
ZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4u
MjJmNmY3Mjc0YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8
c3RkOjp0dXBsZTxKCiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5v
ZGUsIHByZWZpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNT
RVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBU
eXBlZEFycmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsK
ICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25J
bnRUeXBlZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxl
R2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQg
YXJyYXlzIGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVs
ZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJl
YWs7CkBAIC0zNjIwLDYgKzM2MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7
CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC00Mzk4LDYgKzQ0MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
IGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11
bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlMTM1ZmQ1MzQ4ZTguLjgwNjRkZTliNDM0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjY5NCw2ICsyNjk0LDg0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9
CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6
ZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIGF1
dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOworICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShn
bG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5
cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOworCisgICAgU3BlY3Vs
YXRlU3RyaWN0SW50NTJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQ
UlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKKworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNp
emVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOwor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIoTm9kZSogbm9kZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5hcnJheU1vZGUoKS5p
c1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBiYXNlKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBy
ZXN1bHRHUFIpOworICAgIHN0YXRpY19hc3NlcnQoTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDwgKDF1
bGwgPDwgNTIpLCAidGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIHNpemUgb2YgYSB0eXBlZCBhcnJh
eSB3b24ndCBmaXQgaW4gYW4gSW50NTIiKTsKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHZlY3Rvcih0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZGF0YSh0aGlzKTsKKworICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgdmVjdG9yR1BSID0gdmVjdG9yLmdwcigpOworICAg
IEdQUlJlZyBkYXRhR1BSID0gZGF0YS5ncHIoKTsKKworICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQ
UiA9IGRhdGFHUFI7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBlbXB0eUJ5dGVPZmZzZXQgPSBt
X2ppdC5icmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZNb2RlKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxUeXBlZEFycmF5KSk7
CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdmVjdG9yR1BSKTsKKworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG51bGxWZWN0b3IgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6
OkVxdWFsLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW1QdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxW
ZWN0b3JQdHIoKSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBkYXRhR1BSKTsKKyAgICBt
X2ppdC5jYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6SlNWYWx1ZSwgZGF0YUdQUik7CisK
KyAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UoYmFzZUdQUiwgdmVjdG9yR1BSKTsKKworICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwgQnV0dGVyZmx5Ojpv
ZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQUik7CisgICAgLy8gRklYTUU6IFRo
aXMgbmVlZHMgY2FnaW5nLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzU1MTUKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGFycmF5QnVmZmVyR1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkpLCBkYXRhR1BSKTsK
KyNpZiBDUFUoQVJNNjRFKQorICAgIG1faml0LnJlbW92ZUFycmF5UHRyVGFnKGRhdGFHUFIpOwor
I2VuZGlmCisKKyAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwgdmVjdG9yR1BSKTsKKworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisKKyNpZiBDUFUoQVJNNjRFKQor
ICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisgICAgZW1wdHlCeXRlT2Zmc2V0
LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZl
Y3RvckdQUik7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyNpZiAhQ1BVKEFSTTY0RSkKKyAg
ICBBU1NFUlQoIUpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpOworICAgIG51bGxW
ZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisKKyAgICBzdHJpY3RJbnQ1MlJlc3VsdCh2ZWN0
b3JHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiB7CiAgICAgTm9kZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAtMzY0NCwxMSArMzcyMiwx
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKICAgICAg
ICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIGluZGV4RWRnZSk7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoOwogCiAgICAgICAgIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOwogICAgICAgICAKLSAgICAgICAg
ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQUik7CisgICAg
ICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIsIHNj
cmF0Y2guZ3ByKCkpOwogICAgICAgICAKICAgICAgICAgR1BSVGVtcG9yYXJ5IGFyZ3NbMl07CiAg
ICAgICAgIApAQCAtNDM3NSw2ICs0NDU0LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAg
ICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAg
ICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5Myw2ICs0NTc2LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgY29tcGls
ZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJv
dG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4MCwxMCArNTY2OCwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgRGF0YVZp
ZXdEYXRhIGRhdGEgPSBub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAg
ICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIp
OwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworICAgICAgICBt
X2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKQEAgLTU3
ODEsMTAgKzU4NjksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxhY2UodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSk7CiAgICAgICAgIEdQUlJlZyBpc0xpdHRsZUVuZGlhbkdQ
UiA9IGlzTGl0dGxlRW5kaWFuT3BlcmFuZCA/IGlzTGl0dGxlRW5kaWFuT3BlcmFuZC0+Z3ByKCkg
OiBJbnZhbGlkR1BSUmVnOwogCi0gICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRl
eEdQUiwgdDIpOworICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgdDIp
OwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2
NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpT
VmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNjAzNiw2ICs2MTI0LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9T
UkVudHJ5TG9jYWw6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6
CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAg
ICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToK
ICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAg
ICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZz
ZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1
dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAg
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRB
cnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAg
ICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5C
b3VuZHM6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAg
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAg
ICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFk
NjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAg
ICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAg
IGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2Ug
Q2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAg
ICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
SW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAg
Y2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDJhZGRmZjc3YjAzNS4uNmNlZTljNWFiOThiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiAr
NjA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFs
dWUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1
LDYgKzEwMjcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAg
ICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxl
bmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJ
bkJvdW5kcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5k
c0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxl
R2V0QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAg
IGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAg
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0
UHJvdG90eXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1f
aGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUg
YmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUg
YmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxv
Y2sgd2FzdGVmdWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sg
bm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRl
OgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVs
Q2FzZSwgbm90TnVsbCk7CiAKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIo
YmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVm
ZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
ZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZl
Y3RvclB0cigpKSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5v
dE51bGwpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24p
OwpAQCAtNDg2Niw3ICs0ODc3LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CiAKLSAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4g
bV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgewor
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0
U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQg
b2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhv
bGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1
ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShyZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgIHNldEludDMyKG1fb3V0
LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAgICAg
ICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldFBy
b3RvdHlwZU9mKCkKQEAgLTUwNTQsOCArNTA3OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlz
U29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAg
ICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAg
ICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5h
Ym92ZShsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIo
bGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC01MDY0LDYgKzUwOTAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0K
IAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJh
eVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZl
KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0
b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSkgewpAQCAtNTEwOCw3ICs1MTQxLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRlcGVu
ZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4g
dGhhdAogICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgogICAgIH0KLSAgICAKKworICAgIHZv
aWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpCisgICAgeworICAgICAgICBzcGVjdWxhdGUo
CisgICAgICAgICAgICBPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLAorICAgICAgICAg
ICAgbV9vdXQuYWJvdmVPckVxdWFsKGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpLCBs
b3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMigpKSkpOworCisgICAgICAgIC8vIEV2ZW4gdGhv
dWdoIHdlIGNsYWltIHRvIGhhdmUgSlNWYWx1ZSByZXN1bHQsIG5vIHVzZXIgb2YgdXMgc2hvdWxk
CisgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0
IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAorICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgorICAg
IH0KKwogICAgIExWYWx1ZSBjb21waWxlR2V0QnlWYWxJbXBsKCkKICAgICB7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7CkBAIC04MTY5LDk1ICs4MjEzLDE4IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlT
dHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgTFZh
bHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1
ZSBzaXplID0gbV9vdXQuc2lnbkV4dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7
CiAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2Ug
PSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmJy
YW5jaCgKLSAgICAgICAgICAgICAgICBtX291dC5hYm92ZShzaXplLCBtX291dC5jb25zdEludDMy
KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCi0gICAgICAgICAgICAgICAgcmFy
ZWx5KHNsb3dDYXNlKSwgdXN1YWxseShzbWFsbEVub3VnaENhc2UpKTsKLQotICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNs
b3dDYXNlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KLSAgICAgICAgICAgICAg
ICBtX291dC5zaGwobV9vdXQuemVyb0V4dFB0cihzaXplKSwgbV9vdXQuY29uc3RJbnQzMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKLSAgICAgICAgICAgIGlmIChlbGVtZW50U2l6
ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7Ci0gICAgICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291
dC5iaXRBbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQu
Y29uc3RJbnRQdHIoNykpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwotICAgICAgICAg
ICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2Up
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzcGxhdFdvcmRzKAotICAgICAgICAgICAgICAg
IHN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAotICAgICAgICAgICAg
ICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50
UHRyKDMpKSksCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAotICAgICAgICAgICAg
ICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMpOwotCi0jaWYgQ1BVKEFSTTY0RSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9F
eHRQdHIoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNh
dGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOwotICAgICAgICAgICAgICAgIGF1
dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3JhZ2UpOwotICAgICAgICAgICAgICAg
IGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6
OlNvbWVMYXRlUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdl
bmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0u
Z3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC50YWdBcnJh
eVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsKLSAgICAgICAgICAg
IH0KLSNlbmRpZgotCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1f
b3V0LmFuY2hvcihzdG9yYWdlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1
ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7Ci0jZGVm
aW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAgICBjYXNlIFR5cGUg
IyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2Jq
ZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2Fz
ZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZPUl9FQUNIX1RZUEVE
X0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCi0j
dW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5cGVEYXRhVmll
dzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0Rh
dGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAgICAgICBt
X291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMy
KEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVuY2UoKTsKLSAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJl
c3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAg
ICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
Ci0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAg
ICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwg
bm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAg
ICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHko
dHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAg
ICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAgICAg
ICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4g
UmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBs
b2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2Nh
dGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNb
Ml0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2l6
ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQg
PSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93U3RyaWN0SW50NTIo
bV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRl
clR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgZW1pdE5ld1R5
cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTgyNzcsNyArODI0
NCwxMDAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShUeXBlZEFycmF5VHlw
ZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAgIHsKKyAgICAgICAg
TEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKKworICAg
ICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShzaXplNjRCaXRzLCBt
X291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCisgICAg
ICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOworCisg
ICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hD
YXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9m
IHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgICAg
IHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFz
dFNpemVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9CisgICAgICAgICAgICBt
X291dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBl
ZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8
IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAorICAgICAgICAgICAg
ICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAorICAgICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZt
KCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsK
KyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xv
d0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBzdG9yYWdlLAorICAg
ICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIo
bV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKKyAgICAgICAgICAg
IG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRp
ZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOwor
ICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Cisg
ICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRCaXRzLCBCMzo6VmFsdWVSZXAo
QjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFt
c1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBqaXQudGFnQXJy
YXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9y
YWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKKyAgICAg
ICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NB
U0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAgICAgICAgICAgZmFz
dFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9B
UlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCisgICAgICAgIGNh
c2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVP
YmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAgICAgICBtX291dC5zdG9yZTY0KHNpemU2
NEJpdHMsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
OworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkp
LCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAg
ICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQg
PSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRp
b24pOworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAg
ICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBS
ZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlv
bk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNb
MF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJl
Y3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1
bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSk7CkBAIC0xNDY1Niw2ICsxNDcxNiw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBh
cmUgMzItYml0cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0
d2VlbiBiYXNlK2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZh
bHVlIGJhc2UsIExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBB
YnN0cmFjdEhlYXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxp
bmdMaW1pdCA9IDEwOwpAQCAtMTU1OTEsOCArMTU2NTMsOCBAQCBwcml2YXRlOgogCiAgICAgICAg
IERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBM
VmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShk
YXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKLSAgICAgICAgTFZh
bHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOworICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1f
b3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEp
CiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291
dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CiAgICAgICAgIHNwZWN1bGF0ZShPdXRP
ZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXhUb0No
ZWNrLCBsZW5ndGgpKTsKQEAgLTE1NzM0LDggKzE1Nzk2LDggQEAgcHJpdmF0ZToKIAogICAgICAg
ICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKLSAgICAgICAg
TFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUo
ZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7Ci0gICAgICAgIExW
YWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKKyAgICAgICAgTFZh
bHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBt
X291dC5zaWduRXh0MzJUbzY0KGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAx
KQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9v
dXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwogICAgICAgICBzcGVjdWxhdGUoT3V0
T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVxdWFsKGluZGV4VG9D
aGVjaywgbGVuZ3RoKSk7CkBAIC0xNzIzNiw3ICsxNzI5OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGF1dG8gZG9VbnRhZ0FycmF5UHRyID0gWyZdKExWYWx1ZSB0YWdnZWRQdHIpIHsKICNpZiBDUFUo
QVJNNjRFKQogICAgICAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSkgewot
ICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9
IG1fb3V0LmxvYWQ2NChiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPdXRwdXQuaAppbmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgog
ICAgIExWYWx1ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJu
IGxvYWRJbnN0cnVjdGlvbjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBv
aW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxv
YWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7
IHJldHVybiBsb2FkMzIoYmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0
aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2Fk
NjQoYmFzZSwgZmllbGQpOyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwog
ICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAppbmRleCBmNzg2Zjc2NTFhNjAuLjVkMmM2
YzQwMjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNF
bWl0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtODMsMjMgKzgzLDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAg
ICBzd2l0Y2ggKGludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmlu
c2ljOiB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFs
dWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAg
ICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKICAgICAgICAgaml0
LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1
Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUJ5
dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwotCisjaWYgQ1BVKFJF
R0lTVEVSNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rh
dGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQ
Uik7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQu
bHNoaWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwor
ICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BS
LCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4g
MSkgewotICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2Ug
VHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQz
Mi4KLSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNp
emUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hp
ZnQgaGVyZSBzaW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZl
IGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNo
aWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAg
ICAgICB9Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2Vu
ZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEzMCw4ICsxMzksMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50
cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1v
dmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAg
ZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAg
ICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0
ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFs
dWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkzNyw4IEBAIHN0YXRpYyB2b2lk
IHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVl
LCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1
aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNr
bHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVp
Y2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAg
ICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAgLTIzNDIsMjEgKzIz
NDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzSW50
MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CisgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgewor
ICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNl
VmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNh
bkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKSk7CiAgICAgICAg
ICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0
T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkg
ewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0g
ICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNr
bHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldElu
ZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwog
Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250
aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgPCBvYmplY3QtPmJ1
dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5k
ZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAgICAgICAgICAgICAgICYmIHN0
YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0
aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3Rv
cmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAogICAgICAgICAgICAgICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKQEAgLTIzNzIs
OCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdl
dChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051bWJlcigp
ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYwMDQ0ZS4uM2FjMmYw
MTBjNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNN
X0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX1JFR0lTVEVSNjQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fUkVHSVNURVI2
NCAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FE
RFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKaW5kZXggNTY4MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsx
MDQ3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJy
YXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAg
ICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3
MCwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3Bl
cnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5p
c1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJz
Y3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5k
ZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVj
dC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3Ry
aWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IGI0MjFhN2ZhNDEwZS4uZmMxNmVlYjRlZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBA
IGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25z
dGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9p
bnRlcgogZW5kCiAKK2lmIFJFR0lTVEVSNjQKKyAgICBjb25zdCBTbWFsbFR5cGVkQXJyYXlNYXhM
ZW5ndGggPSBjb25zdGV4cHIgQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0
aAorZW5kCisKIGNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID0gY29uc3RleHBy
IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsCiAKIGlmIFg4Nl82NCBvciBYODZfNjRfV0lO
IG9yIEFSTTY0IG9yIEFSTTY0RSBvciBSSVNDVjY0CkBAIC0xMzEwLDcgKzEzMTQsOCBAQCBtYWNy
byBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2Ny
YXRjaCkKICAgICBsb2FkYiBKU0NlbGw6Om1faW5kZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5k
ZXhpbmdUeXBlCiBlbmQKIAotbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBm
aW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNsb3dQYXRoKQorIyBOb3Rl
IHRoYXQgaW5kZXggaXMgYWxyZWFkeSBzaWduLWV4dGVuZGVkIHRvIGJlIGEgcmVnaXN0ZXIgd2lk
dGguCittYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5
VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCBzbG93UGF0aCkK
ICAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBoYXZlIGEgdHlwZWQgYXJyYXkuIFRo
aXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZyb250LgogICAgIGxvYWRiIEpTQ2Vs
bDo6bV90eXBlW2Jhc2VdLCB0MgogICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKQEAg
LTEzMjEsMTMgKzEzMjYsMjIgQEAgbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4
LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHMKICAgICBpZiBBUk02
NEUKICAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3
Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3Ro
Ci0gICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgICAgIGxvYWRxIEpT
QXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3RoCisgICAgICAgIGJxYWVxIGlu
ZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgZWxzaWYgUkVHSVNURVI2NAorICAgICAgICAjIGxl
bmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFu
Y2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAg
IGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRo
CiAgICAgZWxzZQogICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxs
eSB1bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBv
dGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIGJpYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6
bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCiAgICAgZW5kCiAKKyAgICBpZiBSRUdJU1RFUjY0Cisg
ICAgICAgIGJxYmVxIGluZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFsbFR5cGVk
QXJyYXkKKyAgICAgICAgc2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6Cisg
ICAgZW5kCisKICAgICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFzZV0sIHQz
CiAgICAgY2FnZWRQcmltaXRpdmUodDMsIGxlbmd0aCwgYmFzZSwgc2NyYXRjaCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQppbmRleCA1MGQ1ZGJkZjYwMmEuLjY3OGVjNjRjNjc0YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KQEAgLTE2NjksNyArMTY2OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3Zh
bCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlz
cGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlw
ZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwg
Lm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaElu
dEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgbWFjcm8gKCkgZW5kLCAub3BHZXRCeVZh
bFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkODRiNmVhZDM3ZmQuLjQ4NTQ3MDFkOGVl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MTMsNiArMTcxMywxNiBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZAogICAgICAgICBmaW5pc2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZW5k
CiAKKyAgICBpZiBSRUdJU1RFUjY0CisgICAgICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgp
CisgICAgICAgICAgICBzdG9yZWIgMSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVuZAorICAgIGVsc2UKKyAg
ICAgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgICAgIGNyYXNoKCkKKyAg
ICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBnZXQobV9i
YXNlLCB0MikKQEAgLTE3MjMsNyArMTczMyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAK
ICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMy
KHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIHN4aTJxIHQxLCB0MQorICAgIHN4
aTJxIHQxLCB0MSAjIFRoaXMgc2lnbi1leHRlbnRpb24gbWFrZXMgdGhlIGJvdW5kcy1jaGVja2lu
ZyBpbiBnZXRCeVZhbFR5cGVkQXJyYXkgd29yayBldmVuIG9uIDRHQiBUeXBlZEFycmF5LgogCiAg
ICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgbnVtYmVy
VGFnKQogICAgIG1vdmUgVGFnTnVtYmVyLCBudW1iZXJUYWcKQEAgLTE3NjMsNyArMTc3Myw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5v
dEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaElu
dEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdl
dEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVH
ZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5
VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCmluZGV4IGM5
YjhmMmE3MTkxZS4uOWNkN2U0MzZmNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8U2hhcmVkVGFzazx2
b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKQog
ICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAotU2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitT
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQq
IGRhdGEsIFVDUFVSZWdpc3RlciBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYm
IGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1Y3Rv
cihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpAQCAtNjgs
NyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5
QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlzKTsKIH0K
IAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1
bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0
cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCBVQ1BVUmVnaXN0ZXIgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAs
IG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lk
IEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0K
IAotdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKFVDUFVSZWdpc3RlciBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGlj
eSBwb2xpY3kpCiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUg
dG90YWwgc2l6ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90
YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3Rh
bFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFY
X0FSUkFZX0JVRkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVt
ZW50czsKKyAgICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJ
bkJ5dGVzLmhhc092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50
cykgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFs
bG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBVQ1BVUmVnaXN0ZXIgYWxsb2NhdGlv
blNpemUgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAg
ICAgICAgIGFsbG9jYXRpb25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBh
bGxvY2F0ZXMgc29tZXRoaW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFu
IHRoYXQgdGhlIGJ1ZmZlciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2Fn
ZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBt
X2RhdGEgPSBEYXRhVHlwZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5
cGUoZGF0YSwgc2l6ZUluQnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAg
IHJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5
QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZQogICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAg
IG1lbXNldChkYXRhLCAwLCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0g
c2l6ZUluQnl0ZXM7CisgICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
OwogICAgIG1fZGVzdHJ1Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3Ry
dWN0b3IoKTsKIH0KQEAgLTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnNoYXJlV2l0aChBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VS
VChvdGhlci5tX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJu
IEFycmF5QnVmZmVyOjpjcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwog
fQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAg
ICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUoc291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAo
IWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlz
IGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93
RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4gdGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBo
YXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25z
dCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIUdp
Z2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2Fj
YWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSkgKyBieXRlTGVu
Z3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJvbUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgs
IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSk7CkBAIC0yMjAsNyAr
MjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QKIC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3
ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJl
IHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBkaWZmZXJlbnRseS4KIC8vIC0gV2ViQXNz
ZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9y
KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZv
aWQqIGRhdGEsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEgJiYgIUdpZ2FjYWdlOjppc0Nh
Z2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAgICBHaWdhY2FnZTo6ZGlzYWJs
ZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcgQEAgUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29udGVudHMpKTsKIH0KIAotUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVu
dEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6ZSk7CiB9CkBAIC0y
MzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90aGVyLmRhdGEoKSwg
b3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMg
Y29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJyYXlC
dWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcgQEAgUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJj
ZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RGTW92ZShj
b250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0
ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250
SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5
IHBvbGljeSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxl
bWVudEJ5dGVTaXplLCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQs
MTcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVy
bmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
SW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3Vy
Y2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8
fCBzb3VyY2UpOwogICAgIGF1dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihX
VEZNb3ZlKGNvbnRlbnRzKSkpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBi
eXRlTGVuZ3RoKTsKKyAgICBpZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNl
KTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwor
ICAgIH0KICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5
KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKFVDUFVSZWdpc3Rl
ciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250
ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxl
bWVudEJ5dGVTaXplLCBwb2xpY3kpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpB
cnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2ln
bmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNp
Z25lZCByaWdodCkKK1VDUFVSZWdpc3RlciBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUg
eCwgVUNQVVJlZ2lzdGVyIGxlZnQsIFVDUFVSZWdpc3RlciByaWdodCkKIHsKICAgICBBU1NFUlQo
bGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAxLDkgKzMwMSw5IEBAIHVu
c2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1
bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6
OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorVUNQVVJlZ2lzdGVyIEFycmF5QnVmZmVy
OjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBjdXJyZW50
TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBjdXJyZW50TGVuZ3RoID0g
Ynl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3VycmVu
dExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50
TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENsYW1w
ZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoVUNQVVJlZ2lzdGVyIGJlZ2luLCBVQ1BVUmVnaXN0ZXIg
ZW5kKSBjb25zdAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBi
ZWdpbiA6IDA7CisgICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBi
ZWdpbiA6IDA7CiAgICAgYXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1
bHQpCiAgICAgICAgIHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNl
YmEuLmIwYWU1NmJlNThmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzMsMTMgKzMzLDIyIEBACiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9T
aGFyZWRUYXNrLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNp
ZiBDUFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFICgxdWxsIDw8
IDMyKQorc3RhdGljX2Fzc2VydChzaXplb2YoVUNQVVJlZ2lzdGVyKSA9PSBzaXplb2YodWludDY0
X3QpKTsKKyNlbHNlCisvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyBhIFVDUFVSZWdpc3RlciB0byBz
dG9yZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhcnJheSBidWZmZXJzLCB3ZSBjYW5ub3Qgc3VwcG9y
dCA0R0Igb24gMzItYml0IHBsYXRmb3Jtcy4KKy8vIE5vdGUgdGhhdCBzdG9yaW5nIHRoZSBzaXpl
IGluIGEgdWludDY0X3Qgd291bGQgYmUgcXVpdGUgbWVzc3kgb24gMzItYml0cyBhcyB0aGUgSklU
IGhhdmUgdG8gYmUgYWJsZSB0byBtYW5pcHVsYXRlIGl0LgorLy8gU28gd2UgYXJlIHN0aWNraW5n
IHdpdGggMkdCLiBJdCBzaG91bGQgaW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRvIHN1cHBvcnQgdXAg
dG8gKDRHQiAtIDFCKSBpZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJf
U0laRSAweDdmZmZmZmZmdQorI2VuZGlmCiAKIGNsYXNzIFZNOwogY2xhc3MgQXJyYXlCdWZmZXI7
CkBAIC01MSw3ICs2MCw3IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uID0gUGFja2VkUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+CiAKIGNsYXNzIFNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVk
QXJyYXlCdWZmZXJDb250ZW50cz4gewogcHVibGljOgotICAgIFNoYXJlZEFycmF5QnVmZmVyQ29u
dGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJik7CisgICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBVQ1BV
UmVnaXN0ZXIsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIH5TaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzKCk7CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwobV9zaXplSW5CeXRlcyk7IH0KQEAgLTYwLDE0ICs2OSwx
NCBAQCBwcml2YXRlOgogICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQ
YWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7Ci0gICAgdW5z
aWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9zaXplSW5CeXRlczsKIH07
CiAKIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFycmF5QnVmZmVyQ29udGVudHMpOwogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFy
cmF5QnVmZmVyQ29udGVudHMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNv
bnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0
cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZm
ZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyQ29udGVudHMmIG9wZXJhdG9yPShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpA
QCAtNzksNyArODgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsg
cmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUluQnl0ZXMoKSk7IH0KLSAgICB1bnNpZ25lZCBzaXpl
SW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KKyAgICBVQ1BVUmVnaXN0
ZXIgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CiAgICAgCiAg
ICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9CiAgICAgCkBAIC05
NCw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICBEb250SW5pdGlhbGl6ZQogICAgIH07CiAK
LSAgICB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICB2b2lkIHRyeUFsbG9jYXRl
KFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0
aWFsaXphdGlvblBvbGljeSk7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9p
ZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsKQEAgLTEwNSwyOCArMTE0LDI4IEBA
IHByaXZhdGU6CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICBQYWNrZWRSZWZQdHI8U2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsK
KyAgICBVQ1BVUmVnaXN0ZXIgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVy
IDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiBwdWJsaWM6Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lz
dGVyIGJ5dGVMZW5ndGgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0
YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQq
IGRhdGEsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwog
CiAgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKIAogICAgIGlubGluZSB2b2lkKiBkYXRhKCk7CiAgICAgaW5s
aW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZUxl
bmd0aCgpIGNvbnN0OworICAgIGlubGluZSBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0
OwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgc2V0U2hhcmluZ01vZGUo
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CkBAIC0xMzcsNyArMTQ2LDcgQEAgcHVibGljOgogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVn
aW4sIGRvdWJsZSBlbmQpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdp
biwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJy
YXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleChVQ1BVUmVnaXN0ZXIgYmVnaW4sIFVDUFVS
ZWdpc3RlciBlbmQpIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlu
bGluZSB2b2lkIHVucGluKCk7CkBAIC0xNjEsMTIgKzE3MCwxMiBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKLSAgICBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRz
JiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9u
UG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJh
eUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCBVQ1BVUmVnaXN0ZXIpOworICAgIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6
YXRpb25Qb2xpY3kpOwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0g
ICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKLSAgICBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQs
IHVuc2lnbmVkIHJpZ2h0KTsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGNsYW1wSW5kZXgoZG91
YmxlIGluZGV4KSBjb25zdDsKKyAgICBzdGF0aWMgaW5saW5lIFVDUFVSZWdpc3RlciBjbGFtcFZh
bHVlKGRvdWJsZSB4LCBVQ1BVUmVnaXN0ZXIgbGVmdCwgVUNQVVJlZ2lzdGVyIHJpZ2h0KTsKIAog
ICAgIHZvaWQgbm90aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTE5Miw3ICsyMDEsNyBAQCBjb25z
dCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMu
ZGF0YSgpOwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitV
Q1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVy
biBtX2NvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CiB9CkBAIC0yMDUsNyArMjE0LDcgQEAgYm9vbCBB
cnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVmZmVyOjpnY1NpemVF
c3RpbWF0ZUluQnl0ZXMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50
IHRvIHNjYWxlIHRoaXMgYnkgdGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29tZXRoaW5nLgotICAg
IHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlTGVu
Z3RoKCkpOworICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0ZUxlbmd0aCgpOwog
fQogCiB2b2lkIEFycmF5QnVmZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNzY4ZmVhOTA5YmFiLi5lYjA1MDll
Y2RjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSwxOCArMjUsMTcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXco
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBV
Q1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiAgICAgICAg
IDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9pc0RldGFjaGFibGUodHJ1
ZSkKICAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkKICAgICAgICAgLCBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgQ3Jhc2hPbk92ZXJm
bG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CisgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXIsIENyYXNo
T25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAgIGxlbmd0aCArPSBieXRlTGVuZ3Ro
OwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obGVuZ3RoIDw9
IG1fYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChtX2J1ZmZlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggN2UzOTYwNzc3
OGE5Li4wMGVkY2QzODQ3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlR5cGVkQXJy
YXlUeXBlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NywxNCArNzgsMTQgQEAgcHVibGlj
OgogCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VBZGRyZXNzKCk7IH0KIAot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9CiAKLSAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CisgICAg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0K
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGV0YWNoYWJsZShib29sKTsKICAgICBi
b29sIGlzRGV0YWNoYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxlOyB9CkBAIC05
MiwxOSArOTMsMTggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkFy
cmF5QnVmZmVyVmlldygpOwogCiAgICAgLy8gSGVscGVyIHRvIHZlcmlmeSBieXRlIG9mZnNldCBp
cyBzaXplIGFsaWduZWQuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVu
dCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0aWMgYm9vbCB2ZXJp
ZnlCeXRlT2Zmc2V0QWxpZ25tZW50KFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0
ZXIgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKHNp
emUgLSAxKSk7CisgICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoZWxlbWVudFNpemUgLSAx
KSk7CiAgICAgfQogCi0gICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJh
bmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCi0gICAgLy8gd2l0aGluIHJhbmdlLgotICAgIHN0YXRp
YyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCBzaXplX3Qgc2l6ZSkKKyAg
ICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlC
dWZmZXIgaXMgd2l0aGluIHJhbmdlLgorICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVu
Z3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBV
Q1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAgICAg
IFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAg
aWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9m
ZnNldCkgLyBzaXplOworICAgICAgICBVQ1BVUmVnaXN0ZXIgcmVtYWluaW5nRWxlbWVudHMgPSAo
Ynl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihlbGVt
ZW50U2l6ZSk7CiAgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0
MyArMTEzLDQ4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFw
KEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQ
VVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIAotICAgIGlu
bGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7
CisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCBVQ1BVUmVnaXN0ZXIg
Ynl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCog
ZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKLSAgICBp
bmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0
ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJ
bXBsKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJl
Z2lzdGVyIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBk
ZXN0aW5hdGlvbiwgVUNQVVJlZ2lzdGVyIGRhdGFCeXRlTGVuZ3RoLCBVQ1BVUmVnaXN0ZXIgYnl0
ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGluZSB2b2lk
IGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1
bnNpZ25lZCBhcnJheVNpemUsCi0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBs
ZW5ndGgpOworICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwoVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQsIFVDUFVSZWdpc3RlciByYW5nZUJ5dGVMZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zm
c2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAg
IC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlp
bmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
dm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZl
ciYgYnVmZmVyLAotICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQsCi0gICAgICAgIHVu
c2lnbmVkICpvZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpudW1FbGVtZW50cykKKyAgICAgICAg
VUNQVVJlZ2lzdGVyIGFycmF5Qnl0ZU9mZnNldCwKKyAgICAgICAgVUNQVVJlZ2lzdGVyICpvZmZz
ZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciAqbnVtRWxlbWVudHMpCiAgICAgewotICAgICAgICB1
bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9m
KFQpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbWF4T2Zmc2V0ID0gKHN0ZDo6bnVtZXJpY19saW1p
dHM8VUNQVVJlZ2lzdGVyPjo6bWF4KCkgLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOwog
ICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewogICAgICAgICAgICAgKm9mZnNldCA9
IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAqbnVtRWxlbWVudHMgPSAwOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICpvZmZzZXQgPSBhcnJheUJ5dGVP
ZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4o
YnVmZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmlu
Z0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsK
KyAgICAgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93PiBhZGp1c3RlZE9m
ZnNldCA9ICpvZmZzZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAg
ICAgICAgYWRqdXN0ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRq
dXN0ZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBi
dWZmZXIuYnl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVu
Z3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNl
dC52YWx1ZSgpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVm
ZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxl
bWVudHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9
CiAKLSAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisgICAgdWludDMyX3QgbV9i
eXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNEZXRhY2hhYmxlIDogMTsKLSAg
ICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgVUNQVVJlZ2lzdGVyIG1fYnl0ZUxlbmd0aDsK
IAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwg
dm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFy
cmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0xNjAsODEgKzE2
NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CiB9Owog
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1
bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlC
dWZmZXJWaWV3KiBhcnJheSwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5
dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5i
eXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5
LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBv
ZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVP
ZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8
dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQs
IGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lk
KiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29s
IEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdp
c3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYg
KGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFC
eXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0
ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBv
ciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwg
ZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9CiAKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRy
ZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVu
Z3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJh
bmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBk
ZXN0aW5hdGlvbiwgVUNQVVJlZ2lzdGVyIGRhdGFCeXRlTGVuZ3RoLCBVQ1BVUmVnaXN0ZXIgYnl0
ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBP
dXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFu
T3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGJhc2UgPSBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShkZXN0
aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQg
Ynl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3
Ojp6ZXJvUmFuZ2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgcmFu
Z2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAg
ICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAg
ICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAg
ICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFs
bGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFz
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1zZXQoYmFz
ZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAg
aW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQs
IHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQg
Kz0gYXJyYXlTaXplOwotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ID0gMDsKLSAg
ICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwg
MCkKLSAgICAgICAgZW5kID0gMDsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkg
PiBhcnJheVNpemUpCi0gICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgc3Rh
cnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0OwotICAgICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhcnQpOwotICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0g
c3RhcnQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNpbmcgSlNDOjpBcnJheUJ1ZmZl
clZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNz
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3Qu
Y3BwCmluZGV4IDY4ODNhMTdjNDcyZC4uZDM2MjQ1MGEyZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAtMTIwLDggKzEyMCw3IEBA
IHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0b21pY0FjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAgICAgICAgIGFjY2Vzc0luZGV4ID0gYWNjZXNzSW5k
ZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImFjY2Vzc0luZGV4Iik7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQodHlw
ZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7
CisKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlwZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7CiAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4
IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nlc3MuIl9zKTsKICAgICAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKaW5kZXggZGNjMmY1
MDY0YWYyLi43YjFlZDdjZjU2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1E
YXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK0RhdGFWaWV3OjpEYXRhVmlldyhSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJl
Z2lzdGVyIGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIp
LCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3
OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZmZXIpLCBi
eXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNy
ZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVuc2lnbmVkIGJ5dGVM
ZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0
aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZm
ZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGFWaWV3LmgKaW5kZXggZGEwNmI0YmIyMTQ0Li5kZTcxNGI2MjUwOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7
CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3Jl
YXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCk7CiAgICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0
IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyog
d3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0
dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgZ2V0KFVDUFVSZWdpc3Rl
ciBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVv
ZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVuc2lnbmVkJiBvZmZz
ZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgcmVh
ZChVQ1BVUmVnaXN0ZXImIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRoaXMtPnRlbXBsYXRlIGdldDxU
PihvZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAgICAgaWYgKCFzdGF0dXMgfHwg
KnN0YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwg
Ym9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgdm9pZCBzZXQo
VUNQVVJlZ2lzdGVyIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0
YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAg
ICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC04Myw3ICs4Myw3
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAg
ICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgKaW5kZXggYmU3ZTZjMDUzNGZhLi5iMjg3OWIzZGYwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDI0
ICszMywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBj
bGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFVDUFVS
ZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBj
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVSZWdpc3RlciBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNy
ZWF0ZShVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5
dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBSZWY8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSo+KGJhc2VBZGRyZXNzKCkpOyB9CiAgICAgCi0gICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wgc2V0KEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJyYXksIFVDUFVSZWdpc3RlciBvZmZzZXQp
CiAgICAgewogICAgICAgICByZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRSYW5nZShj
b25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVk
IG9mZnNldCkKKyAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
IGRhdGEsIFVDUFVSZWdpc3RlciBjb3VudCwgVUNQVVJlZ2lzdGVyIG9mZnNldCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBzZXRSYW5nZUltcGwoCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwKQEAgLTU4LDM5ICs1OCwzOSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAg
ICAKLSAgICBib29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBjb3VudCkKKyAg
ICBib29sIHplcm9SYW5nZShVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgY291bnQp
CiAgICAgewogICAgICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQgKiBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSksIGNvdW50ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsgemVyb1JhbmdlKDAsIGxl
bmd0aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CisgICAgVUNQVVJl
Z2lzdGVyIGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRlTGVuZ3RoKCkgLyBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgaXRlbShVQ1BVUmVnaXN0ZXIgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAg
ICAgICAgcmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KHVu
c2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXQoVUNQVVJlZ2lz
dGVyIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAg
ZGF0YSgpW2luZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7CiAgICAg
fQogCi0gICAgdm9pZCBzZXROYXRpdmUodW5zaWduZWQgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXROYXRpdmUoVUNQVVJlZ2lzdGVyIGluZGV4
LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAg
ICAgICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1ZTsKICAgICB9CiAKLSAgICBib29sIGdldFJhbmdl
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zm
c2V0KQorICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgVUNQ
VVJlZ2lzdGVyIGNvdW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIGdldFJhbmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRh
dGEpLApAQCAtOTgsMTggKzk4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogCi0gICAgYm9vbCBjaGVja0lu
Ym91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25zdAorICAgIGJvb2wg
Y2hlY2tJbmJvdW5kRGF0YShVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgY291bnQp
IGNvbnN0CiAgICAgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsK
LSAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQg
KyBjb3VudCA8PSBsZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAg
ICAgICAmJiBvZmZzZXQgKyBjb3VudCA+PSBvZmZzZXQpOworICAgICAgICByZXR1cm4gaXNTdW1T
bWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBjb3VudCwgdGhpcy0+bGVuZ3RoKCkpOwogICAgIH0K
ICAgICAKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3Rh
cnQpIGNvbnN0OwotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0gICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlw
ZSgpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVl
OwpAQCAtMTE4LDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3Jh
cChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAKIHByaXZhdGU6Ci0g
ICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBHZW5lcmljVHlwZWRBcnJheVZpZXco
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lz
dGVyIGxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCBhZTViZGQ4YzZhMzEuLjU5YzY5ZTMxMjJhOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVy
aWNUeXBlZEFycmF5VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogICAgIDog
QXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoICogc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgobGVuZ3RoIC8gc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8VUNQVVJl
Z2lzdGVyPjo6bWF4KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoVUNQVVJlZ2lz
dGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00Nyw3ICs0OCw3IEBAIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKHVuc2lnCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGFycmF5LCBsZW5ndGgp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01Niw3ICs1Nyw3IEBAIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8g
cmVzdWx0ID0gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKFVDUFVS
ZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1
ZmZlcikKQEAgLTc0LDcgKzc1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7
CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxl
bmd0aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04NSw3ICs4Niw3IEBAIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEwMSw3IEBA
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcgQEAgR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCkKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBsZW5ndGgp
CiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJu
IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Pgot
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGlu
dCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3Vs
YXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAm
bGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIo
KTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFk
YXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVPZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0g
ICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJyYXlCdWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggODllYWViZDNjMmNj
Li4yN2E5Nzc5ZjQ5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8gPSB7CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6
Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqIHZlY3RvcikKICAgICA6IG1f
c3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVjdG9yKHZlY3RvciwgbGVuZ3RoKQogICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6
Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIH0KIAogSlNBcnJheUJ1
ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAg
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBl
bGVtZW50U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1vZGUg
bW9kZSkKICAgICA6IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgp
CkBAIC02Myw3ICs2Myw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0
OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIGlmIChsZW5ndGggPD0gZmFzdFNpemVMaW1pdCkg
ewogICAgICAgICAvLyBBdHRlbXB0IEdDIGFsbG9jYXRpb24uCiAgICAgICAgIHZvaWQqIHRlbXA7
Ci0gICAgICAgIHNpemVfdCBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNpemUpOworICAg
ICAgICBVQ1BVUmVnaXN0ZXIgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKICAg
ICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVO
b25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOwogICAgICAgICBpZiAoIXRlbXApCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MSwx
OCArODEsMTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBEb24ndCBh
bGxvdyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAgIGlmIChsZW5ndGgg
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6ZSkKKyAgICBDaGVj
a2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IHNpemUgPSBsZW5ndGg7CisgICAgc2l6
ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZSA+
IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNpemVf
dCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogc3RhdGljX2Nhc3Q8c2l6ZV90
PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlN
YWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSksIGxlbmd0aCk7CisKKyAgICBtX3ZlY3Rv
ciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBz
aXplLnZhbHVlKCkpLCBsZW5ndGgpOwogICAgIGlmICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkKICAgICAgICAgbWVtc2V0KHZlY3RvcigpLCAw
LCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHN0
YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplKTsKKyAgICB2bS5oZWFwLnJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7CiAgICAgCiAgICAgbV9zdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0gT3ZlcnNpemVUeXBlZEFycmF5OwpAQCAt
MTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpD
b25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29u
dGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBV
Q1BVUmVnaXN0ZXIgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwg
bV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkKQEAgLTEx
NCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0
cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01v
ZGUpCkBAIC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXpl
KEpTVHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJh
eVR5cGVdOwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNv
bnN0CitVQ1BVUmVnaXN0ZXIgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAog
eworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXI+IHJlc3VsdCA9
IGxlbmd0aCgpOworICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVy
biByZXN1bHQudmFsdWUoKTsKKyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cg
aXMgYWxyZWFkeSBjaGVja2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUg
ZXh0cmEgc2FuaXR5IGNoZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4g
bGVuZ3RoKCkgKiBlbGVtZW50U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVy
KiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyAr
Mjc0LDcgQEAgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3Rl
TWVtb3J5KCkKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7
CiAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0g
dGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZh
c3RUeXBlZEFycmF5OiB7CkBAIC0zMTUsOCArMzIyLDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmll
dz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZm
ZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5i
eXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7CisgICAgVUNQVVJl
Z2lzdGVyIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAj
ZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmlu
ZGV4IGRkMDFmN2Y4MmE1My4uNDY3MGI0NmQ4Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBz
dGF0aWMgY29uc3RleHByIFVDUFVSZWdpc3RlciBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1
c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9p
ZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxWZWN0b3JQdHIoKQpAQCAt
MTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVsbC5yYXdCaXRzKCk7
CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVpbnQzMl90IGxlbmd0aCwg
dWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIFVDUFVSZWdpc3RlciBzaXplT2YoVUNQ
VVJlZ2lzdGVyIGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPFVDUFVSZWdpc3Rlcj4gcmVzdWx0ID0gbGVuZ3Ro
OworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCArPSBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpICYg
fihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYs
MjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIEluaXRp
YWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAgICAKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVy
ZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9u
TW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9u
Q29udGV4dChWTSYsIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgsIHVuc2lnbmVkIGVs
ZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAg
ICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4g
SXQncyB1c2VkIGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNv
bnRleHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAg
ICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZv
aWQqIHZlY3Rvcik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOworICAgICAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBs
ZW5ndGgpOwogICAgICAgICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07
CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKKyAgICAgICAgICAgIFVDUFVSZWdpc3RlciBi
eXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CiAgICAgICAgIAog
ICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cnVjdHVyZTsgfQog
ICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Zl
Y3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFycmF5TW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5
KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBAIC0xNjIsNyArMTY0
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogICAgICAg
ICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwg
dGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwotICAgICAgICB1aW50
MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG1fbGVuZ3RoOwogICAgICAgICBU
eXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CiAg
ICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkKiB2ZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkpOyB9CiAgICAgdm9p
ZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5n
ZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7Ci0g
ICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHko
KTsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQoKTsKKyAgICBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIFVDUFVSZWdpc3RlciBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aDsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3Q7
CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHBy
b3RlY3RlZDoKICAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwog
CiAgICAgVmVjdG9yUHRyIG1fdmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIFVD
UFVSZWdpc3RlciBtX2xlbmd0aDsKICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
d0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3SW5saW5lcy5oCmluZGV4IDFkMDcyYjcxYWNiNy4uNjMxODE1NWU2NDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lu
bGluZXMuaApAQCAtOTksNyArOTksNyBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVy
Vmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJp
dHdpc2VfY2FzdDx1aW50OF90Kj4odmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlbHRhKTsKKyAgICBVQ1BVUmVnaXN0ZXIgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihkZWx0YSk7CiAgICAgaWYgKHJlcXVlc3RlciA9
PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihyZXN1bHQp
ID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAgLTExMCwxNCArMTEwLDE0IEBAIGlubGluZSBSZXN1
bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0SW1wbCgpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0
KCkKK2lubGluZSBVQ1BVUmVnaXN0ZXIgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQoKQog
ewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCB1bnNpZ25lZD4oKTsKKyAgICBy
ZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgVUNQVVJlZ2lzdGVyPigpOwogfQogCi1pbmxp
bmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRD
b25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBKU0FycmF5
QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5dGVP
ZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PigpOwor
ICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFs
PFVDUFVSZWdpc3Rlcj4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBK
U0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBiMWVhOWRhMGZlNGMu
LjQ5NjE2ZjVjODM4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvTm9ubW92YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtMjk4LDYgKzI5OSw3IEBAIHB1YmxpYzoKICAgICBpbnQzMl90
IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b1VJbnQzMihK
U0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvSW5kZXgoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OworICAgIFVDUFVSZWdpc3RlciB0b1R5
cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29u
c3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aAppbmRleCAzNGVhMjE0NjBhMGQuLjgwYzIzZjZjNjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxNCArNjksNDcg
QEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmco
ZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkg
eworCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKworICAg
IGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0
b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGluZSBVQ1BVUmVnaXN0
ZXIgSlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4g
YXNJbnQzMigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQp
KTsKKworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFy
Z2UiKSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBBbGwgb2YgdGhpcyBt
b25zdHJvc2l0eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0IG9uIDE8PDMyLgor
ICAgIFVDUFVSZWdpc3RlciBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1dE9mZnNl
dCA9IDA7CisgICAgVUNQVVJlZ2lzdGVyIGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCk7CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4
KSkgeworICAgICAgICBvdXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZz
ZXQgPSBpbnQzMk1heDsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRw
dXRPZmZzZXQgKyBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KHN0YXRpY19jYXN0PHVpbnQzMl90
PihKU0M6OnRvSW50MzIoZCAtIGlucHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uOTg1ZDllMjQ0
OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyLDcgKzQyLDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVj
dGlvbkNvbnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyog
SlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgVUNQVVJlZ2lzdGVy
IGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0
YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNy
ZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyog
SlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lz
dGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
LCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0KEpT
R2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBKU09iamVjdCosIFVDUFVSZWdpc3RlciwgVUNQ
VVJlZ2lzdGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9i
amVjdCosIFVDUFVSZWdpc3RlciwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExB
VEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi41ZWUxZDg2MTllOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYsMTUg
QEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFW
aWV3KiBjcmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LAorICAgICAgICBVQ1BVUmVn
aXN0ZXIgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9u
J3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFj
YXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29s
IHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVn
aXN0ZXIsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAg
ICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBKU1ZhbHVlKTsK
ICAgICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90
b3R5cGUuY3BwCmluZGV4IDk0OTA2MjQ3ZWE2NS4uZDhjOTljM2M2OGE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEzNiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmll
dykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAg
IAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5k
ZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVP
ZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVs
ZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIFVDUFVSZWdp
c3RlciBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBp
ZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsK
ICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50
b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
Z2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIg
aGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRl
TGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3Ro
ID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGgg
fHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFj
Y2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlm
ICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3
Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBz
ZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNp
emUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lzdGVyIGVs
ZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVt
ZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAg
ICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvQm9vbGVh
bihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRh
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVl
biBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgg
PSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSBkYXRh
Vmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9z
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi4wNTY4MzhjOWU0MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3
LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZlRnJvbVZhbHVl
LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZv
KiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVyZSogUyAgICAg
Ly8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20gSlNPYmplY3QK
IC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAgICBVQ1BVUmVn
aXN0ZXIgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMgdGFr
ZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKKy8v
IFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdvcmRz
LiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1YWxs
eSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0YSBm
b3IKQEAgLTEwMywxNSArMTA0LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAK
LSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAg
ICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0ds
b2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsK
ICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGgg
KiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KLSAgICBzaXplX3QgYnl0ZVNpemUo
KSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKSk7IH0KKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CisgICAgVUNQVVJl
Z2lzdGVyIGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2Yo
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSogdHlwZWRWZWN0b3IoKSBjb25zdAogICAgIHsKQEAgLTEyMiw0NiArMTIzLDQ2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKj4odmVjdG9yKCkpOwogICAgIH0KIAotICAgIGJvb2wgaW5Cb3VuZHModW5zaWduZWQg
aSkgY29uc3QKKyAgICBib29sIGluQm91bmRzKFVDUFVSZWdpc3RlciBpKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aDsKICAgICB9CiAKICAgICAvLyBUaGVzZSBtZXRo
b2RzIGFyZSBtZWFudCB0byBtYXRjaCBpbmRleGVkIGFjY2VzcyBtZXRob2RzIHRoYXQgSlNPYmpl
Y3QKICAgICAvLyBzdXBwb3J0cyAtIGhlbmNlIHRoZSBzbGlnaHQgcmVkdW5kYW5jeS4KLSAgICBi
b29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgY2FuR2V0
SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IGluQm91bmRzKGkpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9Ci0g
ICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29u
c3QKKyAgICBib29sIGNhblNldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIgaSwgSlNWYWx1ZSB2
YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGggJiYgdmFsdWUu
aXNOdW1iZXIoKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQogICAg
IAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1
ZSh1bnNpZ25lZCBpKSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhR
dWlja2x5QXNOYXRpdmVWYWx1ZShVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICByZXR1cm4gdHlwZWRWZWN0b3IoKVtpXTsK
ICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29u
c3QKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b0pTVmFsdWUobnVsbHB0ciwgZ2V0SW5kZXhR
dWlja2x5QXNOYXRpdmVWYWx1ZShpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0SW5kZXhR
dWlja2x5VG9OYXRpdmVWYWx1ZSh1bnNpZ25lZCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZh
bHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShVQ1BVUmVnaXN0ZXIg
aSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChp
IDwgbV9sZW5ndGgpOwogICAgICAgICB0eXBlZFZlY3RvcigpW2ldID0gdmFsdWU7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUp
CisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGksIEpTVmFsdWUgdmFsdWUp
CiAgICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKGksIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KHZh
bHVlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIGJvb2wgc2V0SW5k
ZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIGksIEpTVmFsdWUg
anNWYWx1ZSkKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE3Niw5ICsx
NzcsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0
aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8
QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBFbGVtZW50VHlw
ZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVl
PEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7CisgICAgfQogCi0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRD
b2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91
dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1Zh
bHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRo
b3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7CisgICAgfQogCiAgICAgdm9pZCBzb3J0KCkK
ICAgICB7CkBAIC0xOTgsMjEgKzIwNSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseShVQ1BVUmVnaXN0ZXIgb2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldCA8
PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoIDw9IG1fbGVuZ3RoCi0g
ICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVu
Z3RoID49IG9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKG9m
ZnNldCwgbGVuZ3RoLCBtX2xlbmd0aCk7CiAgICAgfQogICAgIAogICAgIC8vIExpa2UgY2FuU2V0
UXVpY2tseSwgZXhjZXB0OiBpZiBpdCByZXR1cm5zIGZhbHNlLCBpdCB3aWxsIHRocm93IHRoZQog
ICAgIC8vIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KLSAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9v
bCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwg
YW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCByZXR1cm5zIGZhbHNlCiAgICAgLy8gdGhlbiBpdCB3
aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4KLSAgICBib29sIHNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOwor
ICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNPYmpl
Y3QqLCBVQ1BVUmVnaXN0ZXIgb2JqZWN0T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBDb3B5
VHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJlZlB0cjx0eXBlbmFt
ZSBBZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKICAgICBSZWZQ
dHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJbXBsKCk7CkBAIC0z
MTgsOCArMzIyLDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1
bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9yLgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhTcGVjaWZpY1R5cGUo
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQgb2JqZWN0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBV
Q1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+
KiwKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCwgQ29weVR5cGUpOwogCiAgICAgLy8gVGhlIEVDTUEgNiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0
aW5nIHBvaW50IFR5cGVkIEFycmF5cyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5n
OgogICAgIC8vCkBAIC0zNDksNyArMzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1cmlmeUFy
cmF5KCkKICAgICB7CiAgICAgICAgIEVsZW1lbnRUeXBlKiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAg
ICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCiAgICAgICAgICAg
ICBhcnJheVtpXSA9IHB1cmlmeU5hTihhcnJheVtpXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCBkMjU4NDA2N2U4M2YuLmVl
ZGE1NWUzY2EyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oCkBAIC0xNDMsNyArMTQzLDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNvbnN0cnVj
dEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50
LCB1bnNpZ25lZCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aE9wdCkKK2lu
bGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5j
b2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgc3RkOjpvcHRp
b25hbDxVQ1BVUmVnaXN0ZXI+IGxlbmd0aE9wdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
MTU3LDcgKzE1Nyw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Cisg
ICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSAwOwogICAgICAgICBpZiAobGVuZ3RoT3B0KQog
ICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAgICAgIGVsc2UgewpA
QCAtMTgyLDcgKzE4Miw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgLy8gLSBBIHBy
aW1pdGl2ZS4gVGhpcyBjcmVhdGVzIGEgbmV3IHR5cGVkIGFycmF5IG9mIHRoYXQgbGVuZ3RoIGFu
ZCB6ZXJvLWluaXRpYWxpemVzIGl0LgogCiAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGZpcnN0VmFsdWUpKSB7Ci0gICAgICAgIHVuc2lnbmVk
IGxlbmd0aDsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aDsKICAgICAgICAgSlNBcnJheUJ1
ZmZlciogY3VzdG9tQnVmZmVyID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoaXNUeXBlZFZpZXco
b2JqZWN0LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSB7CkBAIC0yNTAs
NyArMjUwLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBmaXJzdFZhbHVlLnRvSW5kZXgoZ2xv
YmFsT2JqZWN0LCAibGVuZ3RoIik7CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCA9IGZpcnN0VmFs
dWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbGVuZ3RoKSk7
CiB9CkBAIC0yNzUsOCArMjc1LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAgIH0KIAog
ICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBs
ZW5ndGggPSBzdGQ6Om51bGxvcHQ7CisgICAgVUNQVVJlZ2lzdGVyIG9mZnNldCA9IDA7CisgICAg
c3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGZpcnN0VmFsdWUpICYmIGFyZ0Nv
dW50ID4gMSkgewogICAgICAgICBvZmZzZXQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4NSw3ICsyODUsNyBA
QCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICAvLyBJZiB0aGUgbGVuZ3RoIHZh
bHVlIGlzIHByZXNlbnQgYnV0IHVuZGVmaW5lZCwgdHJlYXQgaXQgYXMgbWlzc2luZy4KICAgICAg
ICAgICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDIpOwogICAgICAgICAgICAgaWYgKCFsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsIFZp
ZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldyA/ICJieXRlTGVu
Z3RoIiA6ICJsZW5ndGgiKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50
b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsIFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3Jh
Z2VUeXBlID09IFR5cGVEYXRhVmlldyA/ICJieXRlTGVuZ3RoIiA6ICJsZW5ndGgiKTsKICAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRl
eCA0NTAyMzg3OTJkMTAuLjA1M2NmYjUxZTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
IgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlzLmgiCisjaW5j
bHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDcsNyArNDgsNyBA
QCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5z
aWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3RvcigKLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVu
Z3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqIHZlY3RvcikKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4
dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyArNzksNyBAQCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTk5LDExICsxMDAsMTEgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXQKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgc2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKICAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVy
aWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoLCBzaXplKSkgewog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwpAQCAt
MTQ1LDcgKzE0Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVS
YW5nZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BV
UmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFw
dG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQgb3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwg
Q29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BVUmVn
aXN0ZXIgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhl
ciwKKyAgICBVQ1BVUmVnaXN0ZXIgb3RoZXJPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENv
cHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3ICsyMTksNyBAQCBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBl
KAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlzdGluZ0J1ZmZlcigp
CiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplICYmIHZlY3Rvcigp
IDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5VHlwZTo6TGVmdFRv
UmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAg
b2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAg
ICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkg
KyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8gTm93IHdl
IGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVyICgyQiku
CiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoVUNQVVJlZ2lzdGVy
IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZl
VmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0
ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5
LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJh
bnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxlbmd0aDsgaS0t
OykgewogICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUg
Y29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQg
aSA9IGxlbmd0aDsgaS0tOykKKyAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07
KQogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5z
ZmVyQnVmZmVyW2ldKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZp
Y1R5cGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBVQ1BV
UmVnaXN0ZXIgb2JqZWN0T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBDb3B5VHlwZSB0eXBl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2Jq
ZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChjaS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09
IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3
ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8g
VGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUg
c2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nh
c3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgICAgICBsZW5ndGggPSBz
dGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgoKSk7CiAgICAgICAgIApAQCAtMzEyLDkgKzMx
MywxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAg
ICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAv
LyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBldmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGlu
ZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFs
bGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvYmplY3RPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkpOwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRp
bWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAg
ICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05f
QVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA0YzBlYmQxZjYxNjUuLmE5NzQ3MzczYzRmZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC02MCw2ICs2MCw3
IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQcm9maWxlOwogY2xhc3MgRXhjZXB0aW9uOwog
Y2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKQEAgLTIxMSwxMCAr
MjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5l
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdl
dFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVy
dHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJbmRleFF1aWNrbHkodm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKQEAgLTI4OSw3
ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJyYXlQcm9maWxlKiA9IG51bGxwdHIpIGNvbnN0
OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CiAg
ICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRJ
bmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKworICAgIC8vIFVzZXMgdGhlIChvcHRpb25h
bCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdo
ZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpIGNvbnN0CiAgICAgewogICAgICAg
ICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAg
ICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVY
SU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFM
TF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxMSwz
NSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxPYmplY3QsIGkp
OwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFy
cmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2ts
eUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKwor
ICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nlc3MKKyAgICAvLyBVc2UgdGhlIChv
cHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkg
Yml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSopOworICAgIGJvb2wgdHJ5U2V0SW5k
ZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFy
cmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nTW9kZSgpKSB7
CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgotICAgICAgICAgICAgcmV0
dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdiwgYXJyYXlQcm9m
aWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRF
WElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZ
UEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVT
OgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzogeworICAg
ICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7CisgICAg
ICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNXaGlsZVBlcmZvcm1p
bmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAg
ICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXMs
IGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0
ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVi
bGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMs
IHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBB
TExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+
PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAgY29u
dmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2
YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBl
cmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUo
KS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5w
dWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0
aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBj
YXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhBcnJh
eVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZv
ckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAg
ICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1
cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpCi0gICAgICAg
ICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXTsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9k
ZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZl
Y3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9y
YWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDb3B5T25Xcml0ZShp
bmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBt
X2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKaW5kZXggNmUxYmIxYjU5ZjFlLi5iM2MyNjZjNjQ0NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC00NjUs
MjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuR2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAogICAgIH0KIH0KIAotaW5saW5lIGJvb2wgSlNP
YmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKSBjb25z
dAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0jZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQ
RShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6XAotICAgICAgICByZXR1cm4g
anNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyktPmNhblNldEluZGV4UXVp
Y2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVE
SU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCi0jdW5kZWYgQ0FTRV9UWVBFRF9B
UlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0K
KyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBpZiAoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5
cGVkQXJyYXlNYXhMZW5ndGggJiYgYXJyYXlQcm9maWxlKQorICAgICAgICBhcnJheVByb2ZpbGUt
PnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhcnJh
eVByb2ZpbGUpOworI2VuZGlmCiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0Ci17CiAgICAgc3dpdGNoICh0eXBl
KCkpIHsKICNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKICAgICBjYXNlIG5h
bWUgIyMgQXJyYXlUeXBlIDoge1wKQEAgLTUxMiw3ICs1MDYsNTAgQEAgaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2
YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KLSAgICAKKworaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYgdm0s
IHVuc2lnbmVkIGksIEpTVmFsdWUgdikKK3sKKyAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0
aGlzLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9yYWdlKCk7CisgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+JiB4ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgSlNWYWx1ZSBvbGQgPSB4LmdldCgp
OworICAgIHguc2V0KHZtLCB0aGlzLCB2KTsKKyAgICBpZiAoIW9sZCkgeworICAgICAgICArK3N0
b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CisgICAgICAgIGlmIChpID49IHN0b3JhZ2UtPmxl
bmd0aCgpKQorICAgICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAxKTsKKyAgICB9Cit9
CisKK2lubGluZSBib29sIEpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5
KHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKCkpIHsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgVVBEQVRF
X0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7XAorICAgICAgICBpZiAoKGkgPiBB
cnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoKSAmJiBhcnJheVByb2ZpbGUp
XAorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpO1wK
KyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbHNlCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxF
KGksIGFycmF5UHJvZmlsZSkgZG8ge1wKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTtc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9U
WVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKKyAgICAgICAgYXV0
byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpO1wKKyAg
ICAgICAgaWYgKCF0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdikpXAorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlO1wKKyAgICAgICAgdHlwZWRBcnJheS0+c2V0SW5kZXhRdWlja2x5
KGksIHYpO1wKKyAgICAgICAgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKTtc
CisgICAgICAgIHJldHVybiB0cnVlO1wKKyAgICB9CisgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlf
VFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKKyN1bmRlZiBD
QVNFX1RZUEVEX0FSUkFZX1RZUEUKKyN1bmRlZiBVUERBVEVfQVJSQVlfUFJPRklMRQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIGlubGluZSB2b2lkIEpT
T2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCBjZTczMGYzYmY5NjUu
LjA5MTllNzIxODZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaApAQCAtODk4LDggKzg5OCw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0
QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAg
aWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2UpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaW5kZXgp
KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4UXVp
Y2tseShpbmRleCkpOworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdl
dEluZGV4UXVpY2tseShpbmRleCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmco
YmFzZSktPmNhbkdldEluZGV4KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QYWdlQ291bnQuaAppbmRleCBlOGRjMWEzMGFlZGQuLmI3ZDhjOWZjZjcyYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaApAQCAtMjcsNiArMjcsOCBAQAog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKwog
I2luY2x1ZGUgPGxpbWl0cy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTk2LDcgKzk4LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICog
S0I7CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8IDMyKSAvIHBhZ2VTaXplKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihNQVhfQVJSQVlfQlVGRkVSX1NJWkUgLyBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFnZVNp
emUpKTsKIAogICAgIHVpbnQzMl90IG1fcGFnZUNvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOThmMDYxMTUzZjdk
Li4zYTE5YzRhM2RiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTAtMDUgIFJvYmluIE1v
cmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVz
ZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBVU0VfTEFSR0VfVFlQRURfQVJSQVlT
IGZsYWcgd2hpY2ggaXMgZXF1aXZhbGVudCB0byBVU0VfSlNWQUxVRTY0LCBpdCBwcm92ZWQgdXNl
ZnVsIHRvIHRlc3QgdGhpbmdzIGFuZCBjYXRjaCBicmVha2FnZSBvbiAzMi1iaXQgcGxhdGZvcm1z
IHdpdGhvdXQgcmVseWluZyBvbiBFV1MuCisgICAgICAgIEFsc28gbWFkZSBzb21lIG9mIENoZWNr
ZWRBcml0aG1ldGljIGNvbnN0ZXhwciwgYW5kIGFkZGVkIGlzU3VtU21hbGxlclRoYW5PckVxdWFs
IHNpbmNlIGl0IGlzIGEgY29tbW9ubHkgdXNlZCB0ZXN0IGluIEFycmF5QnVmZmVyIGFuZCBlYXN5
IHRvIGdldCB3cm9uZyBpbiB0ZXJtcyBvZiBvdmVyZmxvdy4KKworICAgICAgICAqIHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjppc0luQm91bmRzKToKKyAgICAgICAgKFdU
Rjo6Y29udmVydFNhZmVseSk6CisgICAgICAgIChXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFs
KToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKKwogMjAyMS0xMC0xMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByZXBhcmUgdG8g
c3dpdGNoIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFyaWFudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRB
cml0aG1ldGljLmgKaW5kZXggZmYxNTY1ZjExZGVkLi5lZmFiNGFkM2JjOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKKysrIGIvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCwxNCArMTQ0LDE0IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+PjsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIGlzVGFyZ2V0QmlnZ2VyID0gc2l6
ZW9mKFRhcmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJvb2wgdGFyZ2V0U2lnbmVkID0gc3RkOjpu
dW1lcmljX2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQsIGJvb2wgc291cmNlU2lnbmVkID0gc3Rk
OjpudW1lcmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWduZWQ+IHN0cnVjdCBCb3VuZHNDaGVja2Vy
OwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0
YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRu
ZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVj
aXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPFRhcmdldD46Om1heCgpOwogICAgIH0KIH07CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0IHR5cGUgY29u
dmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0IHR5cGUuCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1pbigpIDw9IHZhbHVl
ICYmIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CkBAIC0xNTks
NyArMTU5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0
LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gV2hlbiBjb252ZXJ0aW5nIHZhbHVlIHRvIHVuc2ln
bmVkIFNvdXJjZSwgdmFsdWUgd2lsbCBiZWNvbWUgYSBiaWcgdmFsdWUgaWYgdmFsdWUgaXMgbmVn
YXRpdmUuCiAgICAgICAgIC8vIENhc3RlZCB2YWx1ZSB3aWxsIGJlY29tZSBiaWdnZXIgdGhhbiBU
YXJnZXQ6Om1heCBhcyBTb3VyY2UgaXMgYmlnZ2VyIHRoYW4gVGFyZ2V0LgpAQCAtMTY4LDcgKzE2
OCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIC8vIFRoZSB1bnNpZ25lZCBTb3VyY2UgdHlwZSBoYXMgZ3JlYXRl
ciBwcmVjaXNpb24gdGhhbiB0aGUgdGFyZ2V0IHNvIG1heChUYXJnZXQpIC0+IFNvdXJjZSB3aWxs
IHdpZGVuLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291cmNlPihzdGQ6
Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwg
ZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAgICAgewogICAgICAgICAvLyBT
YW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wg
aW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNp
b24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCBm
YWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAg
Ly8gVGFyZ2V0IGlzIHNpZ25lZCB3aXRoIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uIElmIHN0
cmljdGx5IGdyZWF0ZXIsIGl0IGlzIGFsd2F5cyBzYWZlLgogICAgICAgICBpZiAoc2l6ZW9mKFRh
cmdldCkgPiBzaXplb2YoU291cmNlKSkKQEAgLTIwMiwxOSArMjAyLDE5IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwg
dHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAg
Ly8gVGFyZ2V0IGlzIHVuc2lnbmVkIHdpdGggZ3JlYXRlciBwcmVjaXNpb24uCiAgICAgICAgIHJl
dHVybiB2YWx1ZSA+PSAwOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZh
bHVlKQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMg
aW5saW5lIGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQogewogICAgIHJl
dHVybiBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlPjo6aW5Cb3VuZHModmFsdWUpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxp
bmUgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29u
c3RleHByIGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQog
ewogICAgIGlmICghaXNJbkJvdW5kczxUYXJnZXQ+KGlucHV0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4u
LiBBcmdzPiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJncy4uLiBhcmdzKQogICAgIHJldHVybiBj
aGVja2VkUHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVyZmxvd2VkKCk7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoVCBhLCBUIGIsIFQgYm91
bmQpCit7CisgICAgQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4gc3VtID0gYTsKKyAgICBzdW0g
Kz0gYjsKKyAgICByZXR1cm4gIXN1bS5oYXNPdmVyZmxvd2VkKCkgJiYgc3VtLnZhbHVlKCkgPD0g
Ym91bmQ7Cit9CisKIH0KIAogdXNpbmcgV1RGOjpBc3NlcnROb092ZXJmbG93OwpAQCAtMTAxNywz
ICsxMDI0LDQgQEAgdXNpbmcgV1RGOjpkaWZmZXJlbmNlT3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpp
c0luQm91bmRzOwogdXNpbmcgV1RGOjpwcm9kdWN0T3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpzdW1P
dmVyZmxvd3M7Cit1c2luZyBXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDU3NTBhODMwYTY3NC4uNTU4N2U5MjE2ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMjEtMTAtMDUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21l
IHBhcnRzIG9mIFdlYkNvcmUgdXNlIFR5cGVkQXJyYXlzLCBhbmQgd291bGQgbm90IGJ1aWxkIGFm
dGVyIEkgbWFkZSB0aGUgbGVuZ3RoKCkgZnVuY3Rpb24gb24gdHlwZWQgYXJyYXlzIHJldHVybiBz
aXplX3QgaW5zdGVhZCBvZiB1aW50MzJfdC4KKyAgICAgICAgSSBmaXhlZCBpdCB0cml2aWFsbHkg
YnkgUkVMRUFTRV9BU1NFUlRpbmcgdGhhdCB0aGUgc2l6ZV90IGZpdHMgaW4gYSB1aW50MzJfdCBh
bmQgdGhlbiBjYXN0aW5nIGl0LgorICAgICAgICBObyBuZXcgdGVzdHMgZm9yIFdlYkNvcmUgYXMg
dGhlcmUgaXMgbm8gaW50ZW5kZWQgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
cjo6Y29weUZyb21DaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5
VG9DaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZyZXF1ZW5j
eURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRUaW1l
RG9tYWluRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRl
VGltZURvbWFpbkRhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1p
bmFsKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT0JveC5oOgorCiAyMDIxLTEwLTExICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5pZmllZCBidWlsZCBmaXgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5kZXgg
Y2I3ZTg0ZDQ1MzgzLi4yZGI0OWNhMjRhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTMsMTIgKzE5MywxMiBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+
JiYgZGVzdGluYXRpb24sCiAgICAgCiAgICAgRmxvYXQzMkFycmF5KiBjaGFubmVsRGF0YSA9IG1f
Y2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0gICAgc2l6ZV90IGRhdGFMZW5n
dGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGRhdGFMZW5ndGgg
PSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBk
YXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50
ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BVUmVnaXN0ZXIgY291bnQgPSBk
YXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oZGVzdGluYXRp
b24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0g
Y2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyMSwxMiArMjIxLDEyIEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgc291cmNl
LCB1bnNpZ25lCiAgICAgCiAgICAgRmxvYXQzMkFycmF5KiBjaGFubmVsRGF0YSA9IG1fY2hhbm5l
bHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBj
aGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGRhdGFMZW5ndGggPSBjaGFu
bmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVu
Z3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0
YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BVUmVnaXN0ZXIgY291bnQgPSBkYXRhTGVu
Z3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oc291cmNlLmdldCgpLmxl
bmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IHNvdXJjZS0+ZGF0
YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGlt
ZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVB
bmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5hYzg5Y2FlYmVjZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcApA
QCAtMTk2LDggKzE5Niw4IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZyZXF1ZW5j
eURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAgICBkb0ZGVEFuYWx5c2lzSWZO
ZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGZyb20gbGluZWFyIG1hZ25pdHVkZSB0
byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IG1h
Z25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oc291
cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGlu
YXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5n
dGggPSBzdGQ6Om1pbihtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCksIGRlc3RpbmF0aW9uTGVuZ3Ro
KTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUgcmFuZ2VTY2Fs
ZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAxIC8gKG1fbWF4
RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91YmxlIG1pbkRlY2li
ZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjcsOSBAQCB2b2lkIFJlYWx0aW1lQW5h
bHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0aW5hdGlvbkFy
cmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgdW5zaWduZWQg
ZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4o
ZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0
aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6
ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6
ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGJv
b2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZl
clNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBBU1NFUlQo
aXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Miw5IEBAIHZvaWQgUmVhbHRpbWVBbmFs
eXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVkIGZmdFNpemUg
PSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUs
IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0
aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlz
LT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3Rp
bmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5w
dXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYm
IG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRC
dWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uOWU4NDY3YWQ2MmE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTEyNjMsOCArMTI2MywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdy
aXRlKEltYWdlRGF0YVRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7
CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAg
IHdyaXRlKGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0
YS0+ZGF0YSgpLmRhdGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAg
ICBDaGVja2VkPHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gZGF0YUxlbmd0aCA9IGRhdGEtPmRh
dGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aC5oYXNPdmVyZmxv
d2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOworICAg
ICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAg
ICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzExLDggKzEzMTYsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
d3JpdGUoQXJyYXlCdWZmZXJUYWcpOwotICAgICAgICAgICAgICAgIHdyaXRlKGFycmF5QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgICAgICAgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IGJ5
dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlm
IChieXRlTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBjb2Rl
ID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
d3JpdGUoYnl0ZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvYmot
PmluaGVyaXRzPEpTQXJyYXlCdWZmZXJWaWV3Pih2bSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFkNjg2ZC4uYmFmMWFiYWQ2N2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTY4
LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKFdlYkNvcmU6OkJsb2Im
IGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNpemUoKTsKICAgICBpZiAoIWJ5
dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoMFUs
IDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mgd2VpcmQsIGJ1dCBpcyByZXF1
aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8gc3VjY2VlZC4KKyAgICAgICAg
Ly8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdoZXJlIEFycmF5QnVmZmVyOjpj
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkgY291bGQg
YmUgY2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oMFUpLCAxKSwgMCwgMCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxCbG9iTG9h
ZGVyPihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUuLjFiYTMyMmMxMGJhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYzLDcgKzY0LDEwIEBAIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1cm5WYWx1ZSwgViYgdmlldywgdW5zaWdu
ZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNzKQogICAgIHsKICAgICAgICAgYm9vbCBy
ZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8
VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAg
ICAgICBVQ1BVUmVnaXN0ZXIgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBUIHZhbHVl
ID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0
bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbkJvdW5k
czx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9IGFjdHVhbE9mZnNl
dDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440966</attachid>
            <date>2021-10-12 12:03:39 -0700</date>
            <delta_ts>2021-10-13 12:27:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>252358</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi45ODRkNDczN2E3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMTIgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmlnLXdhc20tbWVtb3J5IHRl
c3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00gYXQgMkdCLgorICAgICAgICBUaGV5IG5v
dyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWlsdXJlIGF0IDRHQisxLgorICAgICAgICBU
aGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZp
b3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUgdGhhdCB3YXMgY2F1c2luZyB0aGUgc3Bl
Y2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3duIChyZXN1bHRpbmcgaW4gdGhlIGdlbmVy
aWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29kZSkuCisgICAgICAgIEZpbmFsbHkgSSBt
YWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRmb3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBw
b3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRzLCBhbmQgSSBtYWRlIHRoZW0gb25seSBy
dW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQg
b2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZp
Y2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxhcmdlIHR5cGVkIGFycmF5cywgYW5kIGVz
cGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9NQVguCisKKyAgICAgICAgKiBzdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzOiBBZGRlZC4KKwogMjAyMS0x
MC0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBi
cmFuY2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5
IHZhbCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pT
VmFsdWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5v
LW1heC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpp
bmRleCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlm
ICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVj
dHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVm
YXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlv
biB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAg
Zm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQg
bWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFz
c2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3co
MHg3MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAg
IHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAg
ICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOwor
ICAgIHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsg
aW5pdGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAw
ICsgMSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cg
ZXhwZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAg
ICAgICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJv
cjogZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Jp
Zy13YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdy
b3cuanMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy13YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9y
eUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9
ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkK
IAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tB
cnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVt
b3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTog
MHg4MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNp
emUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAg
IG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9v
KG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0g
dm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiAr
IHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAg
ICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwg
bWF4aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAt
IDB4MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5
LmJ1ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdt
YXhpbXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwog
ICAgIH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93
IGVycm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4u
ODBmZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnku
anMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBA
QAotLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1
LDIxIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0
cnkgewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3Nl
bWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIp
KTsKKyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0
ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBt
YXhTaXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0
ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5k
OiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7Cisg
ICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikp
OwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50
b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQog
ICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsK
IApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpz
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAg
KzEsNDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9
ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkK
KworZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxl
bmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFy
cmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0
QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBh
cnJheVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdp
Z2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExl
bmd0aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsK
KyAgICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9
IGFjdHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAi
ICsgbCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4g
Y2FzZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7
CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBp
bmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4
KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhw
ZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0
cmluZyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91
ckdpZ3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRo
cmVlR2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3Mp
LCBmb3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJh
eSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9K
U1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAt
MCwwICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJh
eS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZh
bChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5l
KGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7Cisg
ICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBv
bmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1
YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytp
KSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAo
bCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0
aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAi
IGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZh
ciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUp
OworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAg
aWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZh
bHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
fQorICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7
CisgICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdl
dEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAg
dGhyb3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4g
Y2FzZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0
IGZvdXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3Mp
LCB0aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJH
aWdzKSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVk
QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwYWM3NWM5NzQ3OWQuLmZkOTc5MDIxNDIxNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQ2IEBACisyMDIxLTEwLTEyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0
byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgaW5jcmVhc2luZyBNQVhfQVJS
QVlfQlVGRkVSX1NJWkUgdG8gNEdCIHdhcyBlYXN5LCBpdCB3YXMgbm90IHJlbW90ZWx5IHRoZSBv
bmx5IHRoaW5nIHJlcXVpcmVkIHRvIGdldCB0aGlzIHRvIHdvcms6CisgICAgICAgIC0gNEdCIGlz
IG5vdCByZXByZXNlbnRhYmxlIGluIGEgdWludDMyX3QsIHNvIEkgY2hhbmdlZCBhbGwgbGVuZ3Ro
IG9mIEFycmF5QnVmZmVyL1R5cGVkQXJyYXkvZXRjLi4gdG8gYmVpbmcgVUNQVVJlZ2lzdGVyLgor
ICAgICAgICAtIFRoaXMgYWxzbyByZXF1aXJlZCBjaGFuZ2luZyBOZXdUeXBlZEFycmF5IGluIGFs
bCBvZiBMTEludC9CYXNlbGluZS9ERkcvRlRMIHRvIGFjY2VwdCBhIG5vbi1pbnQzMiBzaXplLgor
ICAgICAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMsIEkg
aGFkIHRvIGFkZCBzcGVjdWxhdGlvbiBpbiB0aGUgREZHL0ZUTCwgd2hpY2ggbm93IGhhdmUgdHdv
IHZlcnNpb25zIG9mIE5ld1R5cGVkQXJyYXkgKG9uZSB0aGF0IHRha2VzIGFuIEludDMyIGFuZCBv
bmUgdGhhdCB0YWtlcyBhIFN0cmljdEludDUyKQorICAgICAgICAtIFNpbWlsYXJseSwgR2V0QXJy
YXlMZW5ndGggYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0IG5vdyBjYW4gZWl0aGVyIHJldHVy
biBhbiBJbnQzMiBvciBhIGxhcmdlciBudW1iZXIuCisgICAgICAgICAgICBJIGFsc28gaGFkIHRv
IHNwbGl0IHRoZW0gaW4gdGhlIERGRy9GVEwsIHNlZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIGZvciBleGFtcGxlcworICAgICAg
ICAtIEkgbW9kaWZpZWQgdGhlIHJ1bnRpbWUgZnVuY3Rpb25zIGZvciBHZXRCeVZhbC9QdXRCeVZh
bC9EYXRhVmlld0dldC9EYXRhVmlld1NldC9BdG9taWNzWFhYIHRvIGFjY2VwdCBub24tSW50MzIg
aW5kaWNlcywgc2luY2UgZm9yIHtJbnQ4L1VJbnQ4L1VJbnQ4Q2xhbXBlZH1BcnJheSwgYSBtYXhp
bXVtIHNpemUgb2YgNEdCIGltcGxpZXMgaW5kaWNlcyA+IDJCLgorICAgICAgICAtIEkgYWRkZWQg
YSAibWF5QmVMYXJnZVR5cGVkQXJyYXkiIGJpdCB0byBBcnJheVByb2ZpbGUvVW5saW5rZWRBcnJh
eVByb2ZpbGUvREZHOjpBcnJheU1vZGUgdG8gdHJhY2sgd2hldGhlciBzdWNoIGEgbm9uLUludDMy
IGluZGV4IHdhcyBzZWVuIHRvIGFsbG93IHByb3BlciBzcGVjdWxhdGlvbiBhbmQgc3BlY2lhbGl6
YXRpb24gb2YgZmFzdCBwYXRocyBpbiB0aGUgREZHL0ZUTC4KKyAgICAgICAgICAgIEkgdGhlbiB1
cGRhdGVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzbG93IHBhdGhzIHRvIGNv
cnJlY3RseSB1cGRhdGUgaXQuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSBJIHJhbiBvdXQgb2Yg
dGltZSB0byBhZGQgdGhlc2Ugc3BlY3VsYXRpb25zL3VwZGF0ZSB0aGUgZmFzdCBwYXRocy4KKyAg
ICAgICAgU28gdGhlIGZvbGxvd2luZyB3aWxsIGhhdmUgdG8gd2FpdCBmb3IgYSBmb2xsb3ctdXAg
cGF0Y2g6CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0
aCBvZiBHZXRCeVZhbCBpbiB0aGUgTExJbnQKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5k
aWNlcyBpbiB0aGUgZmFzdCBwYXRocyBnZW5lcmF0ZWQgYnkgQWNjZXNzQ2FzZS9Qb2x5bW9ycGhp
Y0FjY2VzcworICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBh
dGhzIGdlbmVyYXRlZCBieSB0aGUgREZHL0ZUTCBmb3IgZWFjaCBvZiBHZXRCeVZhbC9QdXRCeVZh
bC9EYXRhVmlld0dldC9EYXRhVmlld1NldC9BdG9taWNzWFhYCisKKyAgICAgICAgVGhlIGN1cnJl
bnQgcGF0Y2ggaXMgZnVuY3Rpb25hbCwgaXQgd2lsbCBqdXN0IGhhdmUgZHJlYWRmdWwgcGVyZm9y
bWFuY2UgaWYgdHJ5aW5nIHRvIHVzZSBpbmRpY2VzID4yQiBpbiBhIHtJbnQ4L1VJbnQ4L1VJbnQ4
Q2xhbXBlZH1BcnJheS4KKworICAgICAgICBPdGhlciBtaW5vciBjaGFuZ2VzIGluIHRoaXMgcGF0
Y2g6CisgICAgICAgIC0gRml4ZWQgYW4gdW5kZWZpbmVkIGJlaGF2aW9yIGluIEFycmF5QnVmZmVy
OjpjcmVhdGVJbnRlcm5hbCB3aGVyZSBtZW1jcHkgY291bGQgYmUgY2FsbGVkIG9uIG51bGxwdHIg
KHRoZSBzcGVjIGV4cGxpY2l0bHkgYmFucyB0aGlzIGV2ZW4gd2hlbiBsZW5ndGggaXMgMCkKKyAg
ICAgICAgLSBSZXBsYWNlZCBzb21lIHJlcGV0aXRpdmUgYW5kIGVycm9yLXByb25lIGJvdW5kcyBj
aGVja2luZyBieSBjYWxscyB0byBXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFsLCB3aGljaCBp
cyBjbGVhcmVyLCBzaG9ydGVyLCBhbmQgcmV1c2UgQ2hlY2tlZEFyaXRobWV0aWMgZmFjaWxpdGll
cyB0byBhdm9pZCBvdmVyZmxvdyBpc3N1ZXMuCisgICAgICAgIC0gRml4ZWQgYSB2YXJpZXR5IG9m
IG9ic29sZXRlIGNvbW1lbnRzCisgICAgICAgIC0gQWRkZWQgc3VwcG9ydCBmb3IgYnJhbmNoNjQo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQor
ICAgICAgICAgICAgKHRoZXJlIHdhcyBhbHJlYWR5IHN1cHBvcnQgZm9yIHRoZSBzYW1lIGJ1dCB3
aXRoIFRydXN0ZWRJbW02NCkKKyAgICAgICAgLSBNYWRlIHZhcmlvdXMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlciBmdW5jdGlvbiBjb25zdGV4cHIgYXMgcGFydCBvZiB0aGUgcHJldmlvdXMgcG9pbnQK
KworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcDoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyOjpUcnVzdGVkSW1tUHRyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6YXNJbnRw
dHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
Ojphc1B0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6
SW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyOjph
c1RydXN0ZWRJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzI6OlRydXN0ZWRJbW0zMik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OkltbTMyOjpJbW0zMik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OkltbTMyOjphc1RydXN0ZWRJbW0zMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NDo6VHJ1c3RlZEltbTY0KToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tNjQ6OkltbTY0KToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tNjQ6OmFzVHJ1c3RlZEltbTY0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6Y2FuQmxpbmQpOgorICAgICAg
ICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpicmFuY2g2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c2hvdWxk
QmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpicmFuY2g2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjp1bnRhZ0FycmF5UHRyTGVuZ3Ro
NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxl
bmd0aDMyKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbkJsaW5k
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAqIGJ5dGVj
b2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OnNldE1heUJl
TGFyZ2VUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjptYXlCZUxhcmdl
VHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQXJyYXlQcm9maWxlOjpV
bmxpbmtlZEFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQXJyYXlQcm9maWxl
Ojp1cGRhdGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6cmVmaW5lIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpBcnJheU1vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6bWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFR5cGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1bGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhDb252ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OndpdGhUeXBlQW5kQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVM
YXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6c3Bl
Y3VsYXRpb25Gcm9tUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRo
U3BlY3VsYXRpb25Gcm9tUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlN
b2RlOjp3aXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhBcnJh
eUNsYXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNH
ZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAoSlND
OjpERkc6OmVuYWJsZUludDUyKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmNvbnZlcnRUb0dldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpwcmVwZW5kR2V0QXJyYXlMZW5ndGgpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdHZW5lcmF0aW9uSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2Vy
UmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpT
Qzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZC
b3VuZHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWdlVHlwZWRBcnJh
eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlW
YWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlS
ZWR1bmRhbnRTdHJ1Y3R1cmVDaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hv
aXN0aW5nUGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50QXJyYXlDaGVja3MpOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1
bHQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5l
d1R5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0
TmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5o
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZDY0Tm9uTmVnYXRpdmUpOgorICAgICAg
ICAqIGppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcik6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6Omdl
dEJ5VmFsKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuY3BwOgorICAgICAg
ICAoSlNDOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250
ZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpjcmVhdGVBZG9wdGVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZUZyb21CeXRlcyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjp0cnlDcmVhdGUpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6
OmNsYW1wVmFsdWUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXggY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJDb250ZW50czo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Ynl0ZUxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpn
Y1NpemVFc3RpbWF0ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZp
ZXcpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
Vmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudCk6CisgICAgICAgIChKU0M6OkFycmF5QnVm
ZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OmNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlclZpZXc6OnNldEltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnNldFJh
bmdlSW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvQXRvbWljc09iamVjdC5jcHA6CisgICAgICAgICogcnVudGlt
ZS9EYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkRhdGFWaWV3OjpEYXRhVmlldyk6CisgICAg
ICAgIChKU0M6OkRhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmlldyk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnN1YmFycmF5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZp
ZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQpOgorICAgICAgICAo
SlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmll
dzo6c2l6ZU9mKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3
OjpsZW5ndGggY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9JbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChK
U0M6OkpTRGF0YVZpZXc6OnNldCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnNldEluZGV4
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
RGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXREYXRhKToKKyAgICAgICAg
KEpTQzo6c2V0RGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
V2l0aEZhc3RWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeUdldEluZGV4UXVpY2tseSBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHkpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpT
Qzo6Z2V0QnlWYWxXaXRoSW5kZXgpOgorICAgICAgICAqIHdhc20vV2FzbVBhZ2VDb3VudC5oOgor
CiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQmVnaW4gbWlncmF0aW9uIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFy
aWFudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKaW5kZXggZGNjOWU1OTIzMWNmLi41NWZkNzVmNDk2YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCmluZGV4IGQ3YWEwYjdiYzlhYy4uOTNl
YjNiZmUyMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMjY1LDkgKzI2NSw5IEBAIHB1YmxpYzoK
ICAgICAvLyBpbiBhIGNsYXNzIHJlcXVpcmluZyBleHBsaWNpdCBjb25zdHJ1Y3Rpb24gaW4gb3Jk
ZXIgdG8gZGlmZmVyZW50aWF0ZQogICAgIC8vIGZyb20gcG9pbnRlcnMgdXNlZCBhcyBhYnNvbHV0
ZSBhZGRyZXNzZXMgdG8gbWVtb3J5IG9wZXJhdGlvbnMKICAgICBzdHJ1Y3QgVHJ1c3RlZEltbVB0
ciA6IHB1YmxpYyBUcnVzdGVkSW1tIHsKLSAgICAgICAgVHJ1c3RlZEltbVB0cigpIHsgfQorICAg
ICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cigpIHsgfQogICAgICAgICAKLSAgICAgICAgZXhw
bGljaXQgVHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6
IG1fdmFsdWUodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMjc4LDIxICsyNzgsMjEg
QEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKHN0ZDo6bnVsbHB0cl90KQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1
c3RlZEltbVB0cihzdGQ6Om51bGxwdHJfdCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKICAgICAgICAgICAgIDogbV92
YWx1ZShyZWludGVycHJldF9jYXN0PHZvaWQqPih2YWx1ZSkpCiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIGludHB0cl90IGFzSW50cHRyKCkKKyAgICAgICAgY29uc3RleHByIGludHB0
cl90IGFzSW50cHRyKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KG1fdmFsdWUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCogYXNQ
dHIoKQorICAgICAgICBjb25zdGV4cHIgdm9pZCogYXNQdHIoKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gY29uc3RfY2FzdDx2b2lkKj4obV92YWx1ZSk7CiAgICAgICAgIH0KQEAgLTMw
MiwxMiArMzAyLDEyIEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbW1QdHIgOiBwcml2YXRlIFRy
dXN0ZWRJbW1QdHIKICAgICB7Ci0gICAgICAgIGV4cGxpY2l0IEltbVB0cihjb25zdCB2b2lkKiB2
YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbVB0cihjb25zdCB2b2lkKiB2YWx1
ZSkKICAgICAgICAgICAgIDogVHJ1c3RlZEltbVB0cih2YWx1ZSkKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgVHJ1c3RlZEltbVB0ciBhc1RydXN0ZWRJbW1QdHIoKSB7IHJldHVybiAq
dGhpczsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbVB0ciBhc1RydXN0ZWRJbW1QdHIo
KSB7IHJldHVybiAqdGhpczsgfQogICAgIH07CiAKICAgICAvLyBUcnVzdGVkSW1tMzI6CkBAIC0z
MjUsNyArMzI1LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICNpZiAhQ1BVKFg4Nl82NCkKLSAg
ICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBl
eHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAg
ICAgICAgOiBtX3ZhbHVlKHB0ci5hc0ludHB0cigpKQogICAgICAgICB7CiAgICAgICAgIH0KQEAg
LTMzNiwxNyArMzM2LDE3IEBAIHB1YmxpYzoKIAogCiAgICAgc3RydWN0IEltbTMyIDogcHJpdmF0
ZSBUcnVzdGVkSW1tMzIgewotICAgICAgICBleHBsaWNpdCBJbW0zMihpbnQzMl90IHZhbHVlKQor
ICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoaW50MzJfdCB2YWx1ZSkKICAgICAgICAg
ICAgIDogVHJ1c3RlZEltbTMyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KICNpZiAhQ1BV
KFg4Nl82NCkKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAg
ICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAg
ICAgIDogVHJ1c3RlZEltbTMyKHB0cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5kaWYKLSAg
ICAgICAgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJu
ICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tMzImIGFzVHJ1c3Rl
ZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KIAogICAgIH07CiAgICAgCkBAIC0zNTcs
MTUgKzM1NywxNSBAQCBwdWJsaWM6CiAgICAgLy8gKHdoaWNoIGFyZSBpbXBsZW1lbnRlZCBhcyBh
biBlbnVtKSBmcm9tIGFjY2lkZW50YWxseSBiZWluZyBwYXNzZWQgYXMKICAgICAvLyBpbW1lZGlh
dGUgdmFsdWVzLgogICAgIHN0cnVjdCBUcnVzdGVkSW1tNjQgOiBUcnVzdGVkSW1tIHsKLSAgICAg
ICAgVHJ1c3RlZEltbTY0KCkgeyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoKSB7
IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVl
KQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUp
CiAgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAj
aWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhw
bGljaXQgVHJ1c3RlZEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBj
b25zdGV4cHIgVHJ1c3RlZEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBt
X3ZhbHVlKHB0ci5hc0ludHB0cigpKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTM3NiwxNyAr
Mzc2LDE3IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbW02NCA6IHByaXZhdGUgVHJ1c3RlZElt
bTY0CiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW02NChpbnQ2NF90IHZhbHVlKQorICAgICAg
ICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDog
VHJ1c3RlZEltbTY0KHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KICNpZiBDUFUoWDg2XzY0
KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBJbW02NChU
cnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTY0KFRydXN0
ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQocHRyKQogICAgICAgICB7
CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3Rl
ZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIGNvbnN0
IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQog
ICAgIH07CiAgICAgCiAgICAgLy8gU2VjdGlvbiAyOiBNYWNyb0Fzc2VtYmxlciBjb2RlIGJ1ZmZl
ciBoYW5kbGVzCkBAIC0xMDUzLDkgKzEwNTMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFVOUkVB
Q0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgICAgICByZXR1cm4gZmlyc3RSZWdpc3RlcigpOwog
ICAgIH0KLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
c3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWlu
dDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNhbkJs
aW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2hvdWxk
QmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90KSB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgY2xhc3MgQ2FjaGVkVGVtcFJlZ2lzdGVyIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIERhdGFMYWJlbFB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCAwMWU0OGExMWJiYjAuLjQxMzIzMDJm
OGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaApAQCAtMTM5LDYgKzEzOSw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBNYWNyb0Fzc2Vt
YmxlckJhc2U6OmJyYW5jaE11bDMyOwogI2lmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIp
IHx8IENQVShYODZfNjQpIHx8IENQVShNSVBTKSB8fCBDUFUoUklTQ1Y2NCkKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFB0cjsKKyNlbmRpZgorI2lmIENQVShYODZfNjQpCisg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2g2NDsKICNlbmRpZgogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoU3ViMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJs
ZXJCYXNlOjpsc2hpZnQzMjsKQEAgLTE0NjAsNiArMTQ2Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBhbmQ2NChpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAg
ICAgfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogI2lmICFDUFUoWDg2KSAmJiAhQ1BV
KFg4Nl82NCkgJiYgIUNQVShBUk02NCkKQEAgLTE3MjcsNyArMTczMSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHN0b3JlNjQoaW1tLmFzVHJ1c3RlZEltbTY0KCksIGRlc3QpOwogICAgIH0KIAot
I2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKKyNlbmRpZiAvLyBDUFUoWDg2XzY0
KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQogICAgIAogICAgIHZvaWQgc3RvcmUzMihJ
bW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKICAgICB7CkBAIC0xODIxLDYgKzE4MjUsMjggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVk
SW1tMzIoKSk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAvLyBPdGhlciA2NC1iaXQg
cGxhdGZvcm1zIGRvbid0IG5lZWQgYmxpbmRpbmcsIGFuZCBoYXZlIGJyYW5jaDY0KFJlbGF0aW9u
YWxDb25kaXRpb24sIFJlZ2lzdGVySUQsIEltbTY0KSBkaXJlY3RseSBkZWZpbmVkIGluIHRoZSBy
aWdodCBmaWxlLgorICAgIC8vIFdlIGNhbm5vdCBwdXQgdGhpcyBpbiBNYWNyb0Fzc2VtYmxlclg4
Nl82NC5oLCBiZWNhdXNlIGl0IHVzZXMgc2hvdWxkQmxpbmQoKSwgbG9hZFJvYXRpb25CbGluZGVk
Q29uc3RhbnQsIGV0Yy4uIHdoaWNoIGFyZSBvbmx5IGRlZmluZWQgaGVyZSBhbmQgbm90IHRoZXJl
LgorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0
KSkgeworICAgICAgICAgICAgaWYgKGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7
CisgICAgICAgICAgICAgICAgbG9hZFJvdGF0aW9uQmxpbmRlZENvbnN0YW50KHJvdGF0aW9uQmxp
bmRDb25zdGFudChyaWdodCksIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXJGb3JC
bGluZGluZygpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3Qg
aGF2ZSBhIHNjcmF0Y2ggcmVnaXN0ZXIgYXZhaWxhYmxlIGZvciB1c2UsIHdlJ2xsIGp1c3QKKyAg
ICAgICAgICAgIC8vIHBsYWNlIGEgcmFuZG9tIG51bWJlciBvZiBub3BzLgorICAgICAgICAgICAg
dWludDMyX3Qgbm9wQ291bnQgPSByYW5kb20oKSAmIDM7CisgICAgICAgICAgICB3aGlsZSAobm9w
Q291bnQtLSkKKyAgICAgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7
CisgICAgfQorI2VuZGlmIC8vIENQVShYODZfNjQpCisKICAgICB2b2lkIGNvbXBhcmUzMihSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKaW5kZXggNWY5OGZmOWUzMzdjLi44NTc0MDU1YzliMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0x
NDQsOCArMTQ0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBs
aW5rUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6bHI7CiAKICAgICAvLyBGSVhNRTogR2V0IHJl
YXNvbmFibGUgaW1wbGVtZW50YXRpb25zIGZvciB0aGVzZQotICAgIHN0YXRpYyBib29sIHNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAw
eDAwZmZmZmZmOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2go
dWludDY0X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25z
dGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgb3BlcmF0aW9uczoKIApA
QCAtMzMwNSw2ICszMzA1LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJy
YW5jaChjb25kKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tNjQgcmlnaHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAg
fQorCiAgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgbGVmdCwgQWRkcmVzcyByaWdodCkKICAgICB7CiAgICAgICAgIGxvYWQ2NChyaWdodCwgZ2V0
Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCmlu
ZGV4IDI0NzBjMTE5NjYxYi4uMDc0YTM5OGY4ODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0xMzIsMTAg
KzEzMiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDMyKEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRh
cmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJy
YXlQdHJMZW5ndGg2NChBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFs
aWRhdGVBdXRoKQogICAgIHsKICAgICAgICAgYXV0byBsZW5ndGhHUFIgPSBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIGxvYWQzMihsZW5ndGgsIGxl
bmd0aEdQUik7CisgICAgICAgIGxvYWQ2NChsZW5ndGgsIGxlbmd0aEdQUik7CiAgICAgICAgIGF1
dG8gc2NyYXRjaCA9IHZhbGlkYXRlQXV0aCA/IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpIDogSW52YWxpZEdQUlJlZzsgCiAgICAgICAgIHVudGFnQXJyYXlQdHIo
bGVuZ3RoR1BSLCB0YXJnZXQsIHZhbGlkYXRlQXV0aCwgc2NyYXRjaCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oCmluZGV4IGU2NjEwMGJhMmU0Ny4uM2ZhYmM0ZDg5MTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCkBAIC0xMDgsOSArMTA4LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
UmVnaXN0ZXJJRCBzdGFja1BvaW50ZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZXNwOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBmcmFtZVBvaW50ZXJSZWdpc3RlciA9IFg4NlJl
Z2lzdGVyczo6ZWJwOwogICAgIAotICAgIHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQz
Ml90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9Ci0gICAgc3RhdGljIGJv
b2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgY2FuQmxpbmQo
KSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZm
ZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAg
ICAvLyBJbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uczoKICAgICAvLwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDM5Nzk5MmEzYTc1MC4u
ZmMzZTkwNjY0YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCkBAIC00ODYsNyArNDg2LDYgQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CiAgICAgY2FzZSBD
dXN0b21WYWx1ZVNldHRlcjoKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgotICAgIGNh
c2UgSW50cmluc2ljR2V0dGVyOgogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2FzZSBJbk1pc3M6CiAg
ICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKQEAgLTUyOSw2ICs1MjgsOCBAQCBib29sIEFjY2Vz
c0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJh
eVVpbnQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyU3RvcmU6CiAg
ICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0NjRTdG9yZToKKyAgICAvLyBVc2VkIGJ5IFR5
cGVkQXJyYXlMZW5ndGgvVHlwZWRBcnJheUJ5dGVPZmZzZXQgaW4gdGhlIHByb2Nlc3Mgb2YgYm94
aW5nIHRoZWlyIHJlc3VsdCBhcyBhIGRvdWJsZQorICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTExODQsMTIgKzExODUsMTcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdp
dGhHdWFyZCgKIAogICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBzdGF0ZS51LnByb3BlcnR5
R1BSOwogCi0gICAgICAgIAogICAgICAgICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRB
cnJheVR5cGUodHlwZSkpKSk7CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3Jh
dGNoR1BSKTsKLSAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gz
MihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsK
KyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3NPZkxlbmd0aCA9IENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSk7CisgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQ
Uik7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBVQ1BV
UmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZv
cm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0Nh
bGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOwor
I2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkp
OworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNj
cmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9
IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTExOTcsOSArMTIwMywxMyBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnBy
ZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lm
IENQVShSRUdJU1RFUjY0KQorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRj
aDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwot
CiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewpAQCAtMTU5NSw5ICsxNjA1LDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9
CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
Ly8gT3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3Bl
cmF0aW9uIGZ1bmN0aW9uLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRj
aEdQUikpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0g
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgLy8gVGhlIGxlbmd0aCBp
cyBhIFVDUFVSZWdpc3Rlciwgc28gZWl0aGVyIDMyIG9yIDY0IGJpdHMgZGVwZW5kaW5nIG9uIHRo
ZSBwbGF0Zm9ybS4KKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFu
Y2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwgYWRkcmVzc09mTGVu
Z3RoKSk7CisjZWxzZQorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJy
YW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgYWRkcmVzc09m
TGVuZ3RoKSk7CisjZW5kaWYKIAogICAgICAgICBhdXRvIGFsbG9jYXRvciA9IHN0YXRlLm1ha2VE
ZWZhdWx0U2NyYXRjaEFsbG9jYXRvcihzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwpAQCAtMTYwNSw5ICsxNjIw
LDEzIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPSBhbGxv
Y2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoCiAgICAgICAgICAgICBqaXQs
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2Up
OwogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVu
Z3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVu
Z3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkp
LCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBm
YWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3Jh
dGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICBpZiAoaXND
bGFtcGVkKHR5cGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmgKaW5kZXggNjkxNjc5NDg0M2IwLi5iZWU3YTlmY2RjOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRmaWVsZCB3aGVy
ZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRoYXQgd2UgaGF2
ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNlIHRoZSBsb3dl
ciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRz
IDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUg
Yml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9kZXM7CiAKIC8v
IFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAoMCAtIDE2LCAy
MSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUsMTcgQEAgcHVibGljOgogICAgICAgICAsIG1fZGlk
UGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAorCisjaWYg
Q1BVKFJFR0lTVEVSNjQpCisgICAgLy8gQWNjZXNzaW5nIHR5cGVkIGFycmF5cyBsYXJnZXIgdGhh
biB0aGF0IHRlbmRzIHRvIGJlIG1vcmUgY29tcGxpY2F0ZWQgYXMgd2UgY2FuJ3QgZm9yY2UgY29u
dmVydCBldmVyeXRoaW5nIHRvIGludDMyX3QuCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IHN1Y2gg
bGFyZ2UgdHlwZWQgYXJyYXlzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7
IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVz
c09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7
IH0KQEAgLTI0NCw2ICsyNTQsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9
OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNw
ZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFz
IGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFz
aWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3Jh
Z2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBp
bXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgYm9vbCBtX21heUJlTGFyZ2VUeXBlZEFycmF5IHsgZmFsc2UgfTsKKyNlbmRp
ZgogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgOiAxOwogICAgIGJvb2wg
bV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3Jt
Rmlyc3RSdW5QcnVuaW5nIDogMTsKQEAgLTI1Myw3ICsyNjYsMTMgQEAgc3RhdGljX2Fzc2VydChz
aXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CiAKIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxl
IHsKIHB1YmxpYzoKLSAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSgpID0gZGVmYXVsdDsKKyAgICBl
eHBsaWNpdCBVbmxpbmtlZEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXModHJ1ZSkKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgLCBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorI2VuZGlmCisgICAgeworICAgIH0KIAogICAgIHZv
aWQgdXBkYXRlKEFycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlKQogICAgIHsKQEAgLTI4MCw2ICsy
OTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1fdXNlc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fdXNl
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJyYXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzOworCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGlmIChtX21heUJl
TGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5
cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX21heUJlTGFyZ2VU
eXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXk7CisjZW5kaWYK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE2LDExIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9
OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgeyB0cnVlIH07CisgICAg
Ym9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CisjaWYgQ1BVKFJFR0lTVEVS
NjQpCisgICAgYm9vbCBtX21heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKKyNlbmRpZgogfTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKFVubGlua2VkQXJyYXlQcm9maWxlKSA8PSA4KTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMmIyZjVlMDMwMTlmLi41YmJmNjNj
NzJkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTM0NjMsNyArMzQ2Myw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDogewogICAgICAgICBKU0Fy
cmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAg
ICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2RlKCkp
OwotICAgICAgICBpZiAodmlldykgeworICAgICAgICBpZiAodmlldyAmJiBpc0luQm91bmRzPGlu
dDMyX3Q+KHZpZXctPmxlbmd0aCgpKSkgewogICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNOdW1iZXIodmlldy0+bGVuZ3RoKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0zNDcxLDYgKzM0NzEsMTcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mjogewor
ICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVW
aWV3KAorICAgICAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSwgbm9kZS0+
YXJyYXlNb2RlKCkpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNOdW1iZXIodmlldy0+bGVuZ3RoKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50NTJB
bnkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDog
ewogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMzc5Niw4ICszODA3LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OiB7CiAgICAgICAgIEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSk7CiAgICAgICAgIGlmICh2aWV3KSB7Ci0gICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNldENvbmN1
cnJlbnRseSgpOwotICAgICAgICAgICAgaWYgKGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBieXRlT2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNldENv
bmN1cnJlbnRseSgpOworICAgICAgICAgICAgaWYgKGJ5dGVPZmZzZXQgJiYgaXNJbkJvdW5kczxp
bnQzMl90PihieXRlT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkBAIC0zODA2LDYgKzM4MTcsMTkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdl
dEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKKyAgICAgICAg
aWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBieXRl
T2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpOworICAgICAgICAgICAgaWYg
KGJ5dGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJl
cigqYnl0ZU9mZnNldCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50NTJB
bnkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7
CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIGlmICgodmFsdWUubV90eXBlICYmICEodmFsdWUubV90eXBlICYgflNwZWNPYmpl
Y3QpKSAmJiB2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CkBAIC00MTA5LDYgKzQxMzMs
MTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6IHsKKyAgICAgICAgLy8gU2VlIHRoZSBDaGVja0luQm91bmRz
IGNhc2UsIGl0IGRvZXMgbm90IHJlYWxseSBtYXR0ZXIgd2hhdCB3ZSBwdXQgaGVyZS4KKyAgICAg
ICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBTZXRQ
cml2YXRlQnJhbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA2ZTI3NTMxMDRiZDMuLmEzYjkz
NDBmNjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0zMjUsNiArMzI1LDExIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQxKCksIG5vZGUp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgIGNhc2UgR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbm9k
ZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBzaG91bGQgbm90IGJlIHJlbGV2YW50
IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZXNjYXBlKG5v
ZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDogewogICAgICAgICAgICAgICAgICAg
ICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZlY3RvcigpOwogICAgICAgICAgICAg
ICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQgPSBtX2dyYXBo
LmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSk7IApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4IDZlNGZlOWFmYTNlYi4uNzI1OGUz
NzE1ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCkBA
IC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFjdGlvbigpKTsKICAgICB9CiAgICAg
Ci0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpKQorICAgIGlmICghaXNJbnQzMlNw
ZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSkKICAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9uKCkpOwogICAgIAogICAgIC8vIElm
IHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMgb2JqZWN0IGJlaGF2aW9yLCB0aGVu
IGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYgKzI5NCw4IEBAIEFycmF5TW9kZSBB
cnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CiAgICAgY2Fz
ZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdVaW50NjRBcnJheToK
KyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9ubHkgcHJlc2VydmUgdGhpcyBvdXQt
b2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBhbmQgbm90IEdldEJ5VmFsIGFzIHdl
bGwuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWwpIHsKICAgICAgICAgICAg
IGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE91dE9mQm91bmRz
KSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlZEFycmF5UmVz
dWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3VuZHMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGEwMjZhYWQxODkzYi4uZGY3NWM3ODkwZDY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKQEAgLTEyNyw2ICsx
MjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJ
bkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAg
ICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0ZTsKKyAgICAgICAgdS5hc0J5dGVz
Lm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGV4cGxpY2l0
IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTEz
Niw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFy
cmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJ
czsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVz
Lm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAogICAgIEFycmF5TW9k
ZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OkFjdGlv
biBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRl
cy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZl
cnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlvbjsK
KyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAgfQog
ICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlD
bGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBj
b252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKKyAgICBBcnJheU1vZGUoQXJyYXk6OlR5
cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVj
dWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbiwgQXJyYXk6OkFjdGlvbiBhY3Rp
b24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIHUu
YXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAgdS5hc0J5dGVzLmFycmF5Q2xhc3MgPSBhcnJh
eUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbjsKICAg
ICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJzaW9uOwogICAgICAgICB1LmFzQnl0
ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJy
YXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFy
cmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE2Myw2ICsxNjcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsK
ICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJzaW9uOwogICAgICAgICB1LmFz
Qnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVk
QXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXk6OlR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpUeXBlPih1LmFzQnl0ZXMudHlwZSk7IH0KQEAg
LTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlNwZWN1bGF0aW9uPih1LmFz
Qnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbigp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpDb252ZXJzaW9uPih1LmFzQnl0ZXMu
Y29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0aW9uIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUuYXNCeXRlcy5hY3Rpb24pOyB9CisgICAgYm9v
bCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0IHsgcmV0dXJuIHUuYXNCeXRlcy5tYXlCZUxh
cmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVuc2lnbmVkIGFzV29yZCgpIGNvbnN0IHsgcmV0
dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzksMzUgKzE4NSw1MCBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9ic2VydmVkKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpBY3Rpb24sIGJvb2wgbWFrZVNhZmUp
OwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXko
KSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24o
KSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1
bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsK
ICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzKEFycmF5OjpDbGFzcyBh
cnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpD
b252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rp
b24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNw
ZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgp
KTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxl
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUs
IGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGVBbmRDb252ZXJz
aW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkp
OworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5k
TWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpTcGVj
dWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNwZWN1bGF0aW9uOworICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGNvbnZlcnNp
b24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KTsKKyAgICB9CiAKKyAgICBzdGF0
aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2Fm
ZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2FmZSkKLSAgICAgICAgICAgIG15U3BlY3VsYXRp
b24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6Ok91dE9m
Qm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIp
KQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpUb0hvbGU7CisgICAgICAgICAg
ICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbXlTcGVj
dWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRo
U3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6Oklu
Qm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9t
UHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBw
cm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpdGhT
cGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBteUFycmF5Q2xhc3M7Ci0KICAgICAg
ICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdp
bmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZpdHNGcm9tT3JpZ2luYWxBcnJheSgp
KSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzID0gcHJvZmlsZS0+b2Jz
ZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0yMjEsMjMgKzI0MiwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6OkFycmF5OwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5Q2xhc3MoKTsKLSAgICAgICAgCi0g
ICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5Q2xhc3MpLndpdGhTcGVjdWxhdGlv
bkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwotICAgIH0KLSAgICAKLSAg
ICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBj
b252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhD
b252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigp
LCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7CisKKyAgICAg
ICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uID0gc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKworICAgICAgICBib29sIGxhcmdlVHlwZWRB
cnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBlZEFycmF5KGxvY2tlcik7CisKKyAgICAgICAg
cmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJh
eShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBsYXJnZVR5cGVkQXJyYXkpOwogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIHVudXNlZEluZGV4U3BlY3Vs
YXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTI2LDcgKzUzNiw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkKICAgICAgICAgICAgICYmIGFycmF5
Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkKICAgICAgICAgICAgICYmIHNwZWN1bGF0aW9u
KCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAgICAgICAgICAgJiYgY29udmVyc2lvbigpID09
IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAgICAgICYmIGNvbnZlcnNpb24oKSA9PSBvdGhl
ci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYmIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgPT0g
b3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIpIGNvbnN0CkBAIC01NzksNyArNTkwLDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlDbGFzczsKICAgICAgICAgICAgIHVp
bnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAgICB1aW50OF90IGNvbnZlcnNpb24gOiA0Owot
ICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0OworICAgICAgICAgICAgdWludDhfdCBhY3Rp
b24gOiAxOworICAgICAgICAgICAgdWludDhfdCBtYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CiAg
ICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5zaWduZWQgYXNXb3JkOwogICAgIH0gdTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
Yzg4ZGU0YjIzOWM3Li4wMzRiZGQ2NjE1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zODA3LDggKzM4MDcsMTcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBPcGVyYW5k
IHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5VmFyaWFudCYgdmFyaWFudCwgTm9k
ZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICBzdGF0aWNfYXNzZXJ0KGVuYWJsZUludDUyKCkpOworI2VuZGlm
CisKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJy
YXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFy
cmF5TGVuZ3RoQXNJbnQ1MiA9ICFpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
T3ZlcmZsb3cpOworI2lmICFDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlw
ZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVk
QXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4MjIsMjYgKzM4MzEsMzAgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMp
OwogICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChH
ZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5h
c1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRB
cnJheUxlbmd0aDsKKyAgICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgob3AsIE9w
SW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9k
ZSk7CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQg
aGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAg
ICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2Fu
IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2
ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAg
IE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAg
ICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlm
dE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1
c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQz
Mi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9n
U2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhO
b2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNh
c2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGlmICh3aWxs
TmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCiAgICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlU
eXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygp
LT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBAIC0zODUzLDEzICszODY2LDE5IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpH
ZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChH
ZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5h
c1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRU
eXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0
QXJyYXlMZW5ndGg7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhB
cnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwog
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0
ZU9mZnNldEludHJpbnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBP
dmVyZmxvdyk7CisjaWYgIUNQVShSRUdJU1RFUjY0KQorICAgICAgICBpZiAod2lsbE5lZWRHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUg
dHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5
cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NzEsNyArMzg5MCw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5
cGUgcHJlZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmlj
KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFk
KS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPyBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTIgOiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRk
VG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBhOGRkM2ZkZTk3NzkuLjlh
ZDVjMjcwMjBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2Fz
ZSBFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk6CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6
CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKQEAg
LTIzOSw2ICsyNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgVG9Cb29s
ZWFuOgogICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAg
Y2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBW
YWx1ZVJlcDoKICAgICBjYXNlIEludDUyUmVwOgpAQCAtMTMzNyw2ICsxMzM5LDExIEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5
dGVPZmZzZXRMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkp
OwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjoKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEo
KSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBHZXRQcm90
b3R5cGVPZjogewogICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewog
ICAgICAgICBjYXNlIEFycmF5VXNlOgpAQCAtMTQ0NCw2ICsxNDUxLDE0IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBj
b25zdCBXcml0ZUZ1CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2Rl
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7
CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlw
ZWRBcnJheUxlbmd0aEludDUyTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlO
b2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOiB7CiAgICAgICAgIEFycmF5TW9kZSBtb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7CiAg
ICAgICAgIHN3aXRjaCAobW9kZS50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCmluZGV4IGM2NmZiMjIzOWY4Zi4uYWZkYzEwYThhMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIGJvb2wgdmFsaWRh
dGlvbkVuYWJsZWQoKQogI2VuZGlmCiB9CiAKLWlubGluZSBib29sIGVuYWJsZUludDUyKCkKK2lu
bGluZSBib29sIGNvbnN0ZXhwciBlbmFibGVJbnQ1MigpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggYjg4MjVhY2FlMzRlLi5mYTE3YmYxMTQx
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCkBAIC0zODcsNiArMzg3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgICAg
ICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDcwYTQ4NTQ3YTk3Li40MDI4NGNmYTIyZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE4NSw2ICsxODUs
NyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOb3Rp
ZnlXcml0ZToKICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5k
czoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFn
ZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTE5
NywxMCArMTk4LDEyIEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEdldEdldHRlcjoKICAgICBjYXNlIEdldFNldHRlcjoKICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoOgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBH
ZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgIGNhc2UgU3Ry
aW5nQ29kZVBvaW50QXQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA4ZTFiOTNlZWU2
Y2EuLjdkNDkwYTNiMjQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTA0Myw2ICsxMDQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikKICAgICAg
ICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNTcGVjaWZpYygpCiAgICAgICAg
ICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKQorICAgICAgICAg
ICAgICAgICAgICAmJiAhbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKQog
ICAgICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMsIE92ZXJmbG93KSkgewogCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG5ld0lu
ZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTEwNzMsNyArMTA3NCw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhpdDogewogICAgICAgICAg
ICAgICAgIC8vIERvbid0IGZvcmNlIE9TUiBiZWNhdXNlIHdlIGhhdmUgb25seSBzZWVuIE93blN0
cnVjdHVyZU1vZGUuCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFdFIHNob3VsZCBoYXZlIGEg
YmV0dGVyIHdheSB0byBkbyB0aGlzLi4uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4uCiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gRW51bWVyYXRvckdldEJ5VmFsKQogICAgICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRBcnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkud2l0aFR5cGUoQXJyYXk6OkdlbmVy
aWMpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzMsNiArMTEzNCwxOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJpbmdVc2U+KG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6
SW50MTZBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyQXJyYXk6CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpVaW50OEFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWlu
dDhDbGFtcGVkQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MTZBcnJheToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJh
eTo6RmxvYXQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5Ogor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwpAQCAtMTE4NCw2ICsxMTk3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oaW5k
ZXhTcGVjdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCku
aXNTcGVjaWZpYygpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlz
SW5Cb3VuZHMoKQorICAgICAgICAgICAgICAgICAgICAmJiAhbm9kZS0+YXJyYXlNb2RlKCkubWF5
QmVMYXJnZVR5cGVkQXJyYXkoKQogICAgICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNF
eGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgewogCiAgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAg
LTE3MTcsMTIgKzE3MzEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IE5ld1R5cGVkQXJyYXk6IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUobm9kZSk7
Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlSW50MzIoKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2Vu
ZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0yMTQ5LDYgKzIxNjcsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MjogeworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUtPmFycmF5TW9k
ZSgpLnJlZmluZShtX2dyYXBoLCBub2RlLCBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpLCBB
cnJheU1vZGU6OnVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUpOworICAgICAgICAgICAgQVNTRVJU
KGFycmF5TW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgICAgIG5vZGUtPnNl
dEFycmF5TW9kZShhcnJheU1vZGUpOworICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihu
b2RlLT5jaGlsZDEoKSwgRWRnZSgpLCBub2RlLT5jaGlsZDIoKSwgbGVuZ3RoTmVlZHNTdG9yYWdl
KTsKKworICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8
S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIx
ODIsNiArMjIxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JF
bnRlcjoKICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0lu
Qm91bmRzOgorICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBD
b25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAg
ICAgIGNhc2UgVmFsdWVUb0ludDMyOgpAQCAtNDA5NiwxNCArNDEzMCw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAKICAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAg
IH0KLSAgICAKLSAgICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmln
aW4sIE5vZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9k
ZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRy
LCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwotICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRB
cnJheUxlbmd0aCwgb3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAog
ICAgIHZvaWQgY29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRm
YWY5NDlhNzg2MC4uMmQ4NmViNzU3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHZW5lcmF0aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVu
dCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBw
cm92aWRlIGluZm9ybWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJl
Z2lzdGVycywgYW5kIGlmIHNvIHdoaWNoLAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNw
aWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3Zp
ZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNw
aWxsZWQgaW4gYSBib3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRo
ZSB0eXBlIG9mIGJveCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBh
IHZhbHVlIHJlbWFpbiwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0
cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNv
IHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdp
c3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5l
cmF0aW9uSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hl
YXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlv
bi5jcHAKaW5kZXggMmJiOWQ0YmVhODAwLi4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQog
ICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJl
dHVybjsKIAorICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAg
b3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVy
bjsKKworICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJp
bnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBj
YXNlIFByb3RvdHlwZUxvYzoKICAgICAgICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdI
ZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmgKaW5kZXggMjY5MTcxY2IzNDFkLi40MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0
aW9uS2luZCB7CiAgICAgU2V0dGVyTG9jLAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFy
cmF5Qnl0ZU9mZnNldExvYywKKyAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAg
IFR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tM
b2MsCiAgICAgU3RhY2tQYXlsb2FkTG9jLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRl
eCAxYmFhMWM4YmNmNTEuLjJiMzNjNmQ0ZjQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5j
cHAKQEAgLTEzMDgsNyArMTMwOCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6IHsKKyAgICAgICAgICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CisgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6IHsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9yZWxhdGlvbnNoaXBzLmZpbmQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbV9yZWxhdGlv
bnNoaXBzLmVuZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzM1LDcg
KzEzMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBpZiAobm9uTmVnYXRpdmUgJiYgbGVzc1RoYW5MZW5ndGgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZWN1dGVOb2RlKGJsb2NrLT5hdChub2RlSW5kZXgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2YWxpZGF0ZUJvdW5kc0NoZWNrRWxp
bWluYXRpb24oKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpICYmIG5vZGUtPm9wKCkgPT0gQ2hl
Y2tJbkJvdW5kcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKG5vZGVJbmRleCwgU3BlY05vbmUsIEFzc2VydEluQm91bmRzLCBub2RlLT5vcmln
aW4sIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBXZSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBhIHZhbHVlLXByb2R1Y2lu
ZyBub2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHlP
bihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwpAQCAtMTM4Miw3ICsxMzgzLDggQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAvLyBGSVhNRTog
VGVhY2ggdGhpcyBhYm91dCBFbnVtZXJhdG9yTmV4dEV4dHJhY3RJbmRleC4KLSAgICAgICAgY2Fz
ZSBDaGVja0luQm91bmRzOiB7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICAgICAg
Y2FzZSBDaGVja0luQm91bmRzSW50NTI6IHsKICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hpcChS
ZWxhdGlvbnNoaXA6OnNhZmVDcmVhdGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGls
ZDIoKS5ub2RlKCksIFJlbGF0aW9uc2hpcDo6TGVzc1RoYW4pKTsKICAgICAgICAgICAgIHNldFJl
bGF0aW9uc2hpcChSZWxhdGlvbnNoaXA6OnNhZmVDcmVhdGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBtX3plcm8sIFJlbGF0aW9uc2hpcDo6R3JlYXRlclRoYW4sIC0xKSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE0OTksNiArMTUwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAg
ICAgICAgICAgc2V0UmVsYXRpb25zaGlwKFJlbGF0aW9uc2hpcChub2RlLCBtX3plcm8sIFJlbGF0
aW9uc2hpcDo6R3JlYXRlclRoYW4sIC0xKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTljLi4wYmE3YjlmZjNlYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk2NSw2ICsxOTY1LDcgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAgICAgIGNh
c2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAgICAgICAgIGNhc2UgQXJyYXlJ
bmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgogCiAgICAgICAgIGNhc2UgQXJy
YXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1cm4gMjsKIAogICAgICAgICBj
YXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAg
ICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5YTkwYTRjZmRhYzguLjk5NzEzNmNj
YTU3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjYxLDgg
KzI2MSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTXVs
dGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE11bHRpRGVsZXRl
QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhH
ZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgLyogVGhpcyBpcyBvbmx5IHJl
bGV2YW50IGZvciBUeXBlZEFycmF5cywgYXMgdGhleSBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IGNh
biBoYXZlIGEgbGVuZ3RoIHRoYXQgZG9lcyBub3QgZml0IGluIDMyIGJpdHMuICovIFwKKyAgICBt
YWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEludDUyKSBcCiAgICAg
bWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50NTIpIFwKICAgICBtYWNybyhH
ZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKQEAgLTI4Niw2ICsyODksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJ
bkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKENo
ZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja1R5
cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRoIHRo
ZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tKU0Nh
c3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1dCBh
cyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1MDdmMWU4MGFjMC4uYjNmMmJi
N2E5MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAgIGlm
IChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5
KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZt
LCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHko
dm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAg
ICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9i
amVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUsNyAr
MTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Vmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6ZSwg
Y2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVy
IHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBVQ1BVUmVnaXN0ZXIg
dW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihzaXplKTsKKwogICAgIGlm
ICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6
Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFn
QXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNo
YXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmll
d0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3Jl
YXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBs
YXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIs
IFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NDAsNyAr
MTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzIsNyArMTk3Miw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAw
NCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQx
NkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIwLDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDM2
LDcgKzIwMzYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTIsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjhmOTZlYzBiMDdlZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3
IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVy
Zmx5KikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIs
IGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQ
VVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIs
IGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQz
Ml90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQ
VVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJy
YXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0
dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQwNDRmNWY1YzAuLjhlMGM1OGI4
YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2ICs5ODYsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29k
ZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7CiAgICAgICAgICAgICBzZXRQ
cmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsxMzI2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEFzc2Vy
dEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgICAgIGNhc2UgQ2hl
Y2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2Fz
ZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAppbmRleCBlM2EyMzlhMzNlMzAu
LjdmYWE1MjY1OGYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwxNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobV9ub2RlLT5h
cnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVkQXJyYXkgJiYgbV9ub2RlLT5h
cnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBsZW5n
dGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX25v
ZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG1fbm9kZS0+b3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSks
IGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsK
KyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRB
cnJheSgpIHx8IG1fZ3JhcGguaGFzRXhpdFNpdGUobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92
ZXJmbG93KSkgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNw
ZWNJbnQ1MkFueSwgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIsIG1fbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3Jk
KCkpLCBiYXNlLCBzdG9yYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEludDUyUmVwVXNlKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFz
ZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKQEAgLTEzNywxMiArMTQzLDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCi0gICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgb3AsIG1fbm9kZS0+
b3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkp
LCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKLSAgICAgICAgTm9k
ZSogY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAg
ICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kcywgbV9ub2RlLT5vcmln
aW4sCi0gICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyAg
ICAgICAgTm9kZSogY2hlY2tJbkJvdW5kczsKKyAgICAgICAgaWYgKChvcCA9PSBHZXRBcnJheUxl
bmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBt
X2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpKSB7
CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9u
b2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVz
ZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQ1MkFueSwg
Q2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRl
eCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisg
ICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdl
KGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNr
SW5Cb3VuZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwK
KyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyAg
ICAgICAgfQorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGphY2VuY3lMaXN0ID0gbV9ncmFw
aC5jb3B5VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlwZWRVc2UpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2
Li4yZTdmNTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAg
ICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAg
Y2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNh
c2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hl
Y2tWYXJhcmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAg
ICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAg
Y2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29s
IGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAg
ICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNw
ZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVj
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggNDc5NjM4NDQ5NDRhLi44YTk1ZjIyNGFlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4ICszMjM4LDQyIEBA
IHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBH
UFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3Vs
YXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZl
SklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNl
R1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewogICAgIGlmIChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVt
cCgpOwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRG
b2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxk
KG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsK
LSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIFVDUFVS
ZWdpc3RlciBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2Rl
ID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRl
eE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0
aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9k
ZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6
SnVtcCgpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIs
IE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBt
X2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9
CisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRl
eEdQUiwgc2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSkpOworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2VuZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRz
Q2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7Ci0gICAg
SklUQ29tcGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9k
ZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1w
Rm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNo
R1BSKTsKICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwpA
QCAtMzM4MCwxMCArMzM5NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywg
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHBy
b3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9y
YWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wOwogICAgIEZQUlJlZyByZXN1bHRG
UFIgPSBJbnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJy
YXlUeXBlIHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4KERhdGFG
b3JtYXRJbnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZvcm1hdEpT
OwogCi0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0b3JhZ2VS
ZWcsIHByb3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAgICAgY29u
c3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFycmF5TG9h
ZFJlc3VsdChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3VsZEJveCwg
cmVzdWx0RlBSKTsKQEAgLTM1NTUsNiArMzU3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0
CiAgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9y
YWdlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoICh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2Uu
Z3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgMik7CkBAIC0zNTg3LDcgKzM2MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVy
dAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHByb3BlcnR5KTsKICAg
ICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVlR1BSICE9IHN0b3Jh
Z2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5cGVk
QXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgSklUQ29tcGlsZXI6
Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJh
c2UsIHByb3BlcnR5LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUo
dHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1LDEwICszNjYyLDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5
cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQg
cHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgU3RvcmFn
ZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBiYXNlUmVnID0gYmFz
ZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICBH
UFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIg
PSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKICAgICBEYXRh
Rm9ybWF0IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlU
eXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQUlJlZyByZXN1bHRS
ZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2Rl
LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9hZEZsb2F0KE1hY3Jv
QXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzY5MCwxMCArMzcwOSwxMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVn
IGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9w
KHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBH
UFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVl
T3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJh
c2UsIHByb3BlcnR5KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1
bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2hH
UFIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDQ6
IHsKQEAgLTc5NjcsNyArNzk4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFy
cmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAg
YXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1f
aml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlk
YXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFS
QU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODAz
OSw5ICs4MDYwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BSUmVnIGRhdGFHUFIg
PSBkYXRhLmdwcigpOwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7Ci0gICAgQVNT
RVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQUiAhPSBkYXRhR1BS
KTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAKQEAgLTgwODMsNiAr
ODEwMSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKICNlbmRpZgog
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgLy8gQUkgcHJvbWlzZXMgdGhhdCB0aGUgcmVzdWx0
IG9mIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0IHdpbGwgYmUgSW50MzIsIHNvIHdlIG11c3QgdXBo
b2xkIHRoYXQgcHJvbWlzZSBoZXJlLgorICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZSwgdmVjdG9yR1BSLCBUcnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkpKSk7CisjZW5kaWYKKwogICAgIHN0cmljdEludDMyUmVzdWx0KHZlY3RvckdQUiwgbm9k
ZSk7CiB9CiAKQEAgLTgzNDksMTIgKzgzNzIsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIGJhc2UpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisjaWYgQ1BVKFJF
R0lTVEVSNjQpCisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7
CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVTb3VyY2UoKSwgbnVs
bHB0ciwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW02NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbHNl
CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisjZW5kaWYK
ICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfSB9CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSWRl
bnQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmdPclN5bWJv
bCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMTExOSwxMCArMTExNDgsMjQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQog
ICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOwogICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRB
cnJheVR5cGUpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIAor
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0
aGUgc2xvdyBwYXRoIGV4cGVjdCBhIENQVVJlZ2lzdGVyLCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBw
bGF0Zm9ybXMKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSUmVnIHNpemVH
UFIgPSBzaXplLmdwcigpOwotICAgIAorICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsK
KyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5
VHlwZSwgc3RydWN0dXJlLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgU3BlY3VsYXRlSW50MzJP
cGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzaXplR1BSID0g
c2l6ZS5ncHIoKTsKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2Rl
LCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2Rl
KiBub2RlLCBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEzNiw4ICsxMTE3OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIENQ
VShSRUdJU1RFUjY0KQorICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwgVHJ1c3RlZEltbTY0KEpTQXJyYXlC
dWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSkpOworICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRo
ZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIu
CisgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3
OjpmYXN0U2l6ZUxpbWl0KSk7CisjZWxzZQogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc2l6ZUdQUiwgVHJ1c3RlZElt
bTMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSkpOworI2VuZGlmCiAgICAgCiAg
ICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKICAgICBtX2ppdC5sc2hpZnQzMihU
cnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSwgc2NyYXRjaEdQUik7
CkBAIC0xMTE5Myw5ICsxMTI0MywxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVQdHIoCiAgICAg
ICAgIHN0b3JhZ2VHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpKTsKKyNpZiBDUFUoUkVHSVNU
RVI2NCkKKyAgICBtX2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSk7CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIs
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAg
ICAgICAgIFRydXN0ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgp
KSk7CkBAIC0xNDE2Nyw2ICsxNDIyMywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNv
bXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIENQ
VShSRUdJU1RFUjY0KQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDA3YjU2M2IzNDgzYS4uMzM5ZjVkMTQ3Yjg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5
ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUq
KTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQ
Uik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAK
KyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aElu
dDUyU2l6ZShOb2RlKik7CisjZW5kaWYKKwogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShO
b2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29t
cGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOwogI2lmIFVTRShCSUdJTlQzMikKQEAgLTEzNzMsNiArMTM3Nyw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxUaGlzKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdl
dEFycmF5TGVuZ3RoKE5vZGUqKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICB2b2lkIGNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKik7CisjZW5kaWYKIAogICAgIHZvaWQg
Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJ
ZGVudChOb2RlKik7CkBAIC0xNDMxLDEwICsxNDM4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bXBpbGVBcml0aE1pbk1heChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ29uc3RhbnRTdG9yYWdl
UG9pbnRlcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZShOb2RlKik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRPZkJv
dW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgSklUQ29t
cGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBp
bGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9kZSos
IEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7Ci0gICAgdm9p
ZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
IGluZGV4R1BSKTsKKyAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAgICB2
b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7CisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKE5v
ZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5v
ZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1
ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7
CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNvbnN0IFNj
b3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0
IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5v
bmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8p
LgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVk
IGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBA
QCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlv
dSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMs
IGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3UgYSBzdHJpY3Qg
SW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJp
dHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5k
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDZh
MGYyNTIwZWEzNy4uMjJmNmY3Mjc0YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxMzQsNiArMjEzNCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVk
QXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsK
KyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkp
OwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRB
cnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgY29tcGls
ZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYg
KzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAg
Y2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgLy8gV2UgZG8gbm90IHN1
cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKwog
ICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFBy
b3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC00Mzk4LDYgKzQ0MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgQXNzZXJ0
SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5k
c0ludDUyOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoK
ICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAzYjM5M2Y1Mjc1ZjcuLjYwYmVjZTI5
ZjA3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxK
CiAgICAgfSB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5
V2l0aEludDUyU2l6ZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOwor
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHko
dHlwZWRBcnJheVR5cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOwor
CisgICAgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKKworICAgIGVtaXROZXdUeXBl
ZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUs
IHNpemVHUFIpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5h
cnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMsIFJldXNlLCBiYXNlKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Cisg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBtX2ppdC5sb2FkNjQoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgIHN0YXRpY19hc3NlcnQoTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFIDwgKDF1bGwgPDwgNTIpLCAidGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIHNpemUgb2Yg
YSB0eXBlZCBhcnJheSB3b24ndCBmaXQgaW4gYW4gSW50NTIiKTsKKyAgICBzdHJpY3RJbnQ1MlJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9y
YXJ5IHZlY3Rvcih0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZGF0YSh0aGlzKTsKKworICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgdmVjdG9yR1BSID0gdmVjdG9y
LmdwcigpOworICAgIEdQUlJlZyBkYXRhR1BSID0gZGF0YS5ncHIoKTsKKworICAgIEdQUlJlZyBh
cnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBlbXB0eUJ5
dGVPZmZzZXQgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxU
eXBlZEFycmF5KSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdmVjdG9yR1BS
KTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIG51bGxWZWN0b3IgPSBtX2ppdC5icmFuY2hQdHIo
SklUQ29tcGlsZXI6OkVxdWFsLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW1QdHIoSlNBcnJheUJ1ZmZl
clZpZXc6Om51bGxWZWN0b3JQdHIoKSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBkYXRh
R1BSKTsKKyAgICBtX2ppdC5jYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6SlNWYWx1ZSwg
ZGF0YUdQUik7CisKKyAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UoYmFzZUdQUiwgdmVjdG9yR1BS
KTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQUik7CisgICAg
Ly8gRklYTUU6IFRoaXMgbmVlZHMgY2FnaW5nLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGFycmF5QnVmZmVyR1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkp
LCBkYXRhR1BSKTsKKyNpZiBDUFUoQVJNNjRFKQorICAgIG1faml0LnJlbW92ZUFycmF5UHRyVGFn
KGRhdGFHUFIpOworI2VuZGlmCisKKyAgICBtX2ppdC5zdWJQdHIoZGF0YUdQUiwgdmVjdG9yR1BS
KTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisKKyNpZiBD
UFUoQVJNNjRFKQorICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisgICAgZW1w
dHlCeXRlT2Zmc2V0LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIo
bnVsbHB0ciksIHZlY3RvckdQUik7CisKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyNpZiAhQ1BV
KEFSTTY0RSkKKyAgICBBU1NFUlQoIUpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkp
OworICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOworI2VuZGlmCisKKyAgICBzdHJpY3RJbnQ1
MlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAtMzY0
NCwxMSArMzcyMiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VF
ZGdlKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIGlu
ZGV4RWRnZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoOwogCiAgICAgICAgIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOwogICAgICAg
ICAKLSAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBpbmRl
eEdQUik7CisgICAgICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwg
aW5kZXhHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICAKICAgICAgICAgR1BSVGVtcG9yYXJ5
IGFyZ3NbMl07CiAgICAgICAgIApAQCAtNDM4MSw2ICs0NDYwLDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTI6CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsK
KyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGls
ZURlbGV0ZUJ5SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTgyLDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAg
ICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBj
b21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4NiwxMCAr
NTY3NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAg
ICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKKyAgICAgICAgbV9qaXQu
c2lnbkV4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNp
emUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNp
emUgLSAxKSwgdDIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEp
OworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQx
KSk7CiAKQEAgLTU3ODcsMTAgKzU4NzUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxhY2Uo
dGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CiAgICAgICAgIEdQUlJlZyBpc0xp
dHRsZUVuZGlhbkdQUiA9IGlzTGl0dGxlRW5kaWFuT3BlcmFuZCA/IGlzTGl0dGxlRW5kaWFuT3Bl
cmFuZC0+Z3ByKCkgOiBJbnZhbGlkR1BSUmVnOwogCi0gICAgICAgIG1faml0Lnplcm9FeHRlbmQz
MlRvV29yZChpbmRleEdQUiwgdDIpOworICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihp
bmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAg
ICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0Lmxv
YWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0
T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2
NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNjA0Miw2ICs2
MTMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBj
YXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2Fz
ZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQ
dXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlw
ZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uZTEwZDYyZTQyN2Qw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNr
SG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxp
YXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2Ug
Q2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgICAg
ICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9t
OgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11
bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoK
ICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAg
ICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYgKzY0MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICAgICAgICAgIGNh
c2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgor
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlv
bjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90
aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0xOTksNiArMjAwLDcgQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2dp
Y2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdl
UG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzkx
LDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2Rl
KQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJ
bnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0
QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNhOGY1Y2ZjNzk1ZS4uOGI1NGViNjVm
MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVja0luQm91
bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEFic3Ry
YWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSk7CiAgICAgICAgICAg
ICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAg
ICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGls
ZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDYgKzEwMzks
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgICAgICBj
b21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1
MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAg
ICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsx
MTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoK
ICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgor
ICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgICAg
ICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDgyOCw5
ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmlzTnVsbChtX291dC5sb2Fk
UHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkpOwogICAgIH0KIAot
ICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICBMVmFsdWUgZW1p
dEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpCiAgICAgewotICAg
ICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7ICAgIAorICAg
ICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAKICAgICAg
ICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
TEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00ODQ2LDcgKzQ4NTcs
NyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1f
b3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwot
ICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0
cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksIAorICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVy
Vmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9u
KSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsLCBj
b250aW51YXRpb24pOwpAQCAtNDg2Niw3ICs0ODc3LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkpOworICAg
ICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3Rl
ZnVsT3V0KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICAvLyBBSSBwcm9taXNlcyB0aGF0
IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28g
d2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgICAgIHNwZWN1bGF0ZShPdmVy
Zmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShyZXN1bHQsIG1fb3V0LmNvbnN0
SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgIHNl
dEludDMyKG1fb3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKworICAgIHZvaWQgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgeworICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3Vs
dCgpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwogICAgIH0KIAogICAgIHZvaWQg
Y29tcGlsZUdldFByb3RvdHlwZU9mKCkKQEAgLTUwNTQsOCArNTA3OSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFy
cmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJ
bnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsK
KyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUo
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxs
cHRyLCBtX291dC5hYm92ZShsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQu
Y2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYgKzUwOTAsMTMgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
KCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNT
b21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2
NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNv
bXBpbGVHZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSkgewpAQCAtNTEwOCw3ICs1MTQxLDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQg
dG8gbWFpbnRhaW4gdGhhdAogICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpCisgICAgeworICAgICAg
ICBzcGVjdWxhdGUoCisgICAgICAgICAgICBPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRy
LAorICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKGxvd1N0cmljdEludDUyKG1fbm9kZS0+
Y2hpbGQxKCkpLCBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMigpKSkpOworCisgICAgICAg
IC8vIEV2ZW4gdGhvdWdoIHdlIGNsYWltIHRvIGhhdmUgSlNWYWx1ZSByZXN1bHQsIG5vIHVzZXIg
b2YgdXMgc2hvdWxkCisgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRo
aXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAorICAgICAgICAvLyB3ZSBkb21pbmF0
ZSB0aGVtLgorICAgIH0KKwogICAgIExWYWx1ZSBjb21waWxlR2V0QnlWYWxJbXBsKCkKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CkBAIC04MTY5LDk1ICs4MjEzLDE4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQuc2lnbkV4dDMyVG82NChsb3dJbnQzMihtX25vZGUt
PmNoaWxkMSgpKSk7CiAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBt
X291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9j
ayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7Ci0KLSAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBtX291dC5hYm92ZShzaXplLCBtX291
dC5jb25zdEludDMyKEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCi0gICAgICAg
ICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShzbWFsbEVub3VnaENhc2UpKTsKLQot
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVu
b3VnaENhc2UsIHNsb3dDYXNlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KLSAg
ICAgICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4dFB0cihzaXplKSwgbV9vdXQuY29u
c3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKLSAgICAgICAgICAgIGlm
IChlbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7Ci0gICAgICAgICAgICAgICAgYnl0
ZVNpemUgPSBtX291dC5iaXRBbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRl
U2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5j
b25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUo
dm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2Up
OwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRv
ciwgc2xvd0Nhc2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzcGxhdFdvcmRzKAotICAg
ICAgICAgICAgICAgIHN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAot
ICAgICAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1f
b3V0LmNvbnN0SW50UHRyKDMpKSksCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAot
ICAgICAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMpOwotCi0jaWYgQ1BV
KEFSTTY0RSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9
IG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOwotICAgICAg
ICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3JhZ2UpOwotICAg
ICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChC
Mzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50
aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsK
LSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZl
U3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGZh
c3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlU
eXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAg
ICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9
IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJa
ZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZP
Ul9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9U
WVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNl
IFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0
ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFn
ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0g
ICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291
dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9y
RmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5
cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGlu
dWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9p
bnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgIGNhc2UgSW50NTJS
ZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1Bh
dGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxv
Y2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRB
cnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUu
Z2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93
U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAg
ICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTgyNzcsNyArODI0NCwxMDAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShU
eXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAg
IHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJa
ZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShz
aXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxp
bWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdo
Q2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
c21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdo
IHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1i
ZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVm
ZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Cisg
ICAgICAgICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVt
ZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVk
QXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAor
ICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykp
LAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJf
dD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0
b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUs
IHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFs
bG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBz
dG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwK
KyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRB
cnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50
ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIo
c3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRCaXRzLCBC
Mzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAg
ICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAg
ICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAg
ICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0
LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVs
bHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAg
ICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5
PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFf
VklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNF
CisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVl
ID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRW
YWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAgICAgICBtX291dC5z
dG9yZTY0KHNpemU2NEJpdHMsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19sZW5ndGgpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFz
dFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bW9kZSk7CisKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNl
LCBjb250aW51YXRpb24pOworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhp
KHBvaW50ZXJUeXBlKCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xv
d1BhdGgoCisgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9j
YXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUp
LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0
aW9uc1sxXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRp
cmVjdEdQUigpKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9y
YWdlVmFsdWUpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5j
aG9yKHNsb3dSZXN1bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAg
ICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jl
c3VsdCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0xNDY1Niw2ICsxNDcxNiw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVn
aW4gYW5kIGVuZCBhcmUgMzItYml0cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1i
aXRzIHdvcmQgYmV0d2VlbiBiYXNlK2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNw
bGF0V29yZHMoTFZhbHVlIGJhc2UsIExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZh
bHVlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50
NjRfdCB1bnJvbGxpbmdMaW1pdCA9IDEwOwpAQCAtMTU1OTEsOCArMTU2NTMsOCBAQCBwcml2YXRl
OgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsK
IAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJO
b25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsK
LSAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwor
ICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcs
IG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgTFZhbHVlIGluZGV4
VG9DaGVjayA9IG1fb3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5i
eXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhU
b0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CiAgICAgICAgIHNw
ZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1
YWwoaW5kZXhUb0NoZWNrLCBsZW5ndGgpKTsKQEAgLTE1NzM0LDggKzE1Nzk2LDggQEAgcHJpdmF0
ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7
CiAKLSAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZDMy
Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7
Ci0gICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsK
KyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIExWYWx1ZSBpbmRl
eFRvQ2hlY2sgPSBtX291dC5zaWduRXh0MzJUbzY0KGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEu
Ynl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4
VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwogICAgICAgICBz
cGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVx
dWFsKGluZGV4VG9DaGVjaywgbGVuZ3RoKSk7CkBAIC0xNzIzNiw3ICsxNzI5OCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0gWyZdKExWYWx1ZSB0YWdnZWRQdHIp
IHsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlBy
aW1pdGl2ZSkgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDMyKGJh
c2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBM
VmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQ2NChiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X2xlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRy
LCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEz
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcg
QEAgcHVibGljOgogICAgIExWYWx1ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rp
b24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdh
dGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAg
ICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhl
YXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIoYmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxv
YWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7
IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQpOyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVl
LCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAppbmRleCAyNTIwZjhj
YzQ0NTYuLjg3MjMwMjJlOWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lu
dHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODMsMjMgKzgzLDMyIEBAIHZvaWQgSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5
TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2
YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOwor
I2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5i
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsK
ICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAg
ICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2Ug
VHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUg
dHlwZSA9IHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwot
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAg
ICAgICAgICBqaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwg
dmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0
ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRT
aXplKHR5cGUpID4gMSkgewotICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhl
cmUgc2luY2Ugd2UgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJm
bG93cyBhbiBpbnQzMi4KLSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIo
bG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4g
dXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSBvbiAzMi1iaXQgcGxhdGZvcm1zIFR5cGVkQXJyYXlz
IGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAg
ICAgICBqaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFs
dWVHUFIpOwogICAgICAgICB9Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1
ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEzMCw4ICsxMzksMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAg
ICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAg
ICAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIENQVShSRUdJU1RF
UjY0KQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3Jh
dGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJbnQzMih2
YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkzNyw4IEBA
IHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAg
ICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPnRy
eVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9m
aWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAg
LTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMy
SW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5n
KGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
KSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmpl
Y3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBB
cnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkg
PCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAgICAgICAg
ICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCkt
PnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlz
IHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAogICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlw
dC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYw
MDQ0ZS4uM2FjMmYwMTBjNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5l
IE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX1JFR0lTVEVSNjQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fUkVHSVNURVI2NCAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9G
RkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTY4MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApA
QCAtMTA0Nyw4ICsxMDQ3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZh
bChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUKICAgICAgICAgICAg
IGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNr
bHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkp
OworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1
aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAt
MTE3MCwxNCArMTE3MCwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUu
bV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQz
Ml90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAg
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAg
ICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAgICAg
ICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBp
LCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwg
dmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IGI0MjFhN2ZhNDEwZS4uZmMxNmVlYjRlZGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcs
NiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVjdHVyZUVudHJvcHlCaXRz
U2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9y
U3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIFJFR0lTVEVSNjQKKyAgICBjb25zdCBTbWFsbFR5
cGVkQXJyYXlNYXhMZW5ndGggPSBjb25zdGV4cHIgQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRB
cnJheU1heExlbmd0aAorZW5kCisKIGNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
ID0gY29uc3RleHByIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsCiAKIGlmIFg4Nl82NCBv
ciBYODZfNjRfV0lOIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBSSVNDVjY0CkBAIC0xMzEwLDcgKzEz
MTQsOCBAQCBtYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBt
ZXRhZGF0YSwgc2NyYXRjaCkKICAgICBsb2FkYiBKU0NlbGw6Om1faW5kZXhpbmdUeXBlQW5kTWlz
Y1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIAotbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJh
c2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNsb3dQ
YXRoKQorIyBOb3RlIHRoYXQgaW5kZXggaXMgYWxyZWFkeSBzaWduLWV4dGVuZGVkIHRvIGJlIGEg
cmVnaXN0ZXIgd2lkdGguCittYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZp
bmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5
LCBzbG93UGF0aCkKICAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBoYXZlIGEgdHlw
ZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZyb250LgogICAg
IGxvYWRiIEpTQ2VsbDo6bV90eXBlW2Jhc2VdLCB0MgogICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5
VHlwZSwgdDIKQEAgLTEzMjEsMTMgKzEzMjYsMjIgQEAgbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5
KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHMK
ICAgICBpZiBBUk02NEUKICAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKICAgICAgICAgY29uc3Qg
c2NyYXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFti
YXNlXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAg
ICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3RoCisgICAg
ICAgIGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgZWxzaWYgUkVHSVNURVI2NAor
ICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQg
b24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9y
bXMuCisgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFz
ZV0sIHNsb3dQYXRoCiAgICAgZWxzZQogICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUg
aW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBu
b3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIGJpYWVxIGluZGV4LCBKU0FycmF5
QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCiAgICAgZW5kCiAKKyAgICBpZiBS
RUdJU1RFUjY0CisgICAgICAgIGJxYmVxIGluZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgs
IC5zbWFsbFR5cGVkQXJyYXkKKyAgICAgICAgc2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5
cGVkQXJyYXk6CisgICAgZW5kCisKICAgICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0
b3JbYmFzZV0sIHQzCiAgICAgY2FnZWRQcmltaXRpdmUodDMsIGxlbmd0aCwgYmFzZSwgc2NyYXRj
aCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA1MGQ1ZGJkZjYwMmEuLjY3OGVjNjRjNjc0YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTE2NjksNyArMTY2OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAg
IGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3Vi
bGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwg
dDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgbWFjcm8gKCkgZW5k
LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkODRiNmVhZDM3ZmQu
LjQ4NTQ3MDFkOGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MTMsNiArMTcxMywxNiBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmaW5pc2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRj
aDIpCiAgICAgZW5kCiAKKyAgICBpZiBSRUdJU1RFUjY0CisgICAgICAgIG1hY3JvIHNldExhcmdl
VHlwZWRBcnJheSgpCisgICAgICAgICAgICBzdG9yZWIgMSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVuZAor
ICAgIGVsc2UKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgICAg
IGNyYXNoKCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAK
ICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3MjMsNyArMTczMyw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIHN4aTJxIHQx
LCB0MQorICAgIHN4aTJxIHQxLCB0MSAjIFRoaXMgc2lnbi1leHRlbnRpb24gbWFrZXMgdGhlIGJv
dW5kcy1jaGVja2luZyBpbiBnZXRCeVZhbFR5cGVkQXJyYXkgd29yayBldmVuIG9uIDRHQiBUeXBl
ZEFycmF5LgogCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBd
LCB0MywgbnVtYmVyVGFnKQogICAgIG1vdmUgVGFnTnVtYmVyLCBudW1iZXJUYWcKQEAgLTE3NjMs
NyArMTc3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAu
b3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwg
dDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cp
CiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9n
ZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCmluZGV4IGM5YjhmMmE3MTkxZS4uOWNkN2U0MzZmNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8
U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAot
U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRl
c3RydWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAs
IG1fZGVzdHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhz
aXplKQpAQCAtNjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNv
bnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRv
KCp0aGlzKTsKIH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJiBkZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250
ZW50cyh2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5C
eXRlcykKICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEw
OSwyMSBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5
dGVzID0gMDsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlv
blBvbGljeSBwb2xpY3kpCit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKFVD
UFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFs
aXphdGlvblBvbGljeSBwb2xpY3kpCiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVy
ZmxvdyBvZiB0aGUgdG90YWwgc2l6ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAg
dW5zaWduZWQgdG90YWxTaXplID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAg
ICAgIGlmICh0b3RhbFNpemUgLyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90
YWxTaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0
ZXMgPSBudW1FbGVtZW50czsKKyAgICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7Cisg
ICAgaWYgKHNpemVJbkJ5dGVzLmhhc092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgp
ID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihudW1FbGVtZW50cykgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0g
ICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBVQ1BVUmVnaXN0
ZXIgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2Nh
dGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRpb25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxv
YyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRoaW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2Ug
bnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZlciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRh
dGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25T
aXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9k
YXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRh
KSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBA
QCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQogICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxp
emUpCiAgICAgICAgIG1lbXNldChkYXRhLCAwLCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3Np
emVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7CisgICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVz
LnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlf
QlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVH
aWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAgLTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVm
ZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBS
RUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0la
RSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRz
LCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBA
IFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIp
CiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRl
TGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29u
c3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5dGVM
ZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUoc291cmNlLCBieXRlTGVuZ3Ro
KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBAQCBSZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogLy8g
Q3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4gdGhhdCBjYXNlLCB0aGUgbWVt
b3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9tIHRoZSBjYWdlLgotUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
QWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6OmNvbnRhaW5zKGRh
dGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJvbUJ5dGVzKGRhdGEs
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSk7
CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
QWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QKIC8vICAgbG9uZ2Vy
IGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5cGVkIGFycmF5IHR5
cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBkaWZmZXJlbnRseS4K
IC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20gdGhlIGNhZ2UuCi1S
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCog
ZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24m
JiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5
dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEgJiYgIUdp
Z2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAgICBHaWdh
Y2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcgQEAgUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRh
dGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29udGVudHMp
KTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVt
ZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6
ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90
aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVm
ZmVyQ29udGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0
aCwgMSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsy
NDYsMTcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0
IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJu
YWwoV1RGTW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywg
ZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJl
Z2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0
dXJuIHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxp
emF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAt
MjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9p
ZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25z
dCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCgh
Ynl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBB
cnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEo
KSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBpZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBB
U1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5
dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Q
b2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAgQXJy
YXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIEFy
cmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiB7
CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25l
ZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK1VDUFVSZWdpc3RlciBBcnJheUJ1ZmZlcjo6Y2xhbXBW
YWx1ZShkb3VibGUgeCwgVUNQVVJlZ2lzdGVyIGxlZnQsIFVDUFVSZWdpc3RlciByaWdodCkKIHsK
ICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAxLDkg
KzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNp
Z25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorVUNQVVJlZ2lzdGVy
IEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBjdXJy
ZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGlu
ZGV4ID0gY3VycmVudExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4
LCAwLCBjdXJyZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNs
aWNlV2l0aENsYW1wZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0K
IAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4
KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoVUNQVVJlZ2lzdGVyIGJlZ2luLCBV
Q1BVUmVnaXN0ZXIgZW5kKSBjb25zdAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBl
bmQgPyBlbmQgLSBiZWdpbiA6IDA7CisgICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBiZWdpbiA8PSBl
bmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAgYXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwog
ICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01v
ZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRl
eCA2OGZmOTBlMTNlYmEuLmIwYWU1NmJlNThmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTMgKzMzLDIyIEBACiAjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9T
SVpFICgxdWxsIDw8IDMyKQorc3RhdGljX2Fzc2VydChzaXplb2YoVUNQVVJlZ2lzdGVyKSA9PSBz
aXplb2YodWludDY0X3QpKTsKKyNlbHNlCisvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyBhIFVDUFVS
ZWdpc3RlciB0byBzdG9yZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhcnJheSBidWZmZXJzLCB3ZSBj
YW5ub3Qgc3VwcG9ydCA0R0Igb24gMzItYml0IHBsYXRmb3Jtcy4KKy8vIE5vdGUgdGhhdCBzdG9y
aW5nIHRoZSBzaXplIGluIGEgdWludDY0X3Qgd291bGQgYmUgcXVpdGUgbWVzc3kgb24gMzItYml0
cyBhcyB0aGUgSklUIGhhdmUgdG8gYmUgYWJsZSB0byBtYW5pcHVsYXRlIGl0LgorLy8gU28gd2Ug
YXJlIHN0aWNraW5nIHdpdGggMkdCLiBJdCBzaG91bGQgaW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRv
IHN1cHBvcnQgdXAgdG8gKDRHQiAtIDFCKSBpZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9B
UlJBWV9CVUZGRVJfU0laRSAweDdmZmZmZmZmdQorI2VuZGlmCiAKIGNsYXNzIFZNOwogY2xhc3Mg
QXJyYXlCdWZmZXI7CkBAIC01MSw3ICs2MCw3IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uID0gUGFja2VkUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+CiAK
IGNsYXNzIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gewogcHVibGljOgotICAgIFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCBVQ1BVUmVnaXN0ZXIsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwog
ICAgIH5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKCk7CiAgICAgCiAgICAgdm9pZCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwobV9zaXplSW5CeXRlcyk7IH0KQEAg
LTYwLDE0ICs2OSwxNCBAQCBwcml2YXRlOgogICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1f
ZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0
b3I7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9zaXpl
SW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMpOwogcHVibGljOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJh
eUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBzaXplSW5CeXRlcywgQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMmIG9wZXJhdG9yPShBcnJheUJ1ZmZlckNv
bnRlbnRzJiYpOwpAQCAtNzksNyArODgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUluQnl0ZXMoKSk7IH0KLSAgICB1
bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KKyAg
ICBVQ1BVUmVnaXN0ZXIgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVz
OyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9
CiAgICAgCkBAIC05NCw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICBEb250SW5pdGlhbGl6
ZQogICAgIH07CiAKLSAgICB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICB2b2lk
IHRyeUFsbG9jYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVk
KCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsKQEAgLTEwNSwy
OCArMTE0LDI4IEBAIHByaXZhdGU6CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICBQYWNrZWRSZWZQ
dHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7Ci0gICAgdW5zaWduZWQgbV9z
aXplSW5CeXRlczsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNz
IEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7
CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShVQ1BV
UmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVy
Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJj
ZSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29u
c3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRh
dGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVk
KGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qg
dm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgVUNQVVJlZ2lzdGVyIGJ5
dGVMZW5ndGgpOwogCiAgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVm
ZmVyLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIAogICAgIGlubGluZSB2b2lkKiBkYXRh
KCk7CiAgICAgaW5saW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBpbmxpbmUgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIGlubGluZSBVQ1BVUmVnaXN0ZXIgYnl0ZUxl
bmd0aCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgc2V0
U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CkBAIC0xMzcsNyArMTQ2LDcgQEAg
cHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGlj
ZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleCh1
bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleChVQ1BVUmVnaXN0ZXIg
YmVnaW4sIFVDUFVSZWdpc3RlciBlbmQpIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2b2lkIHBp
bigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7CkBAIC0xNjEsMTIgKzE3MCwxMiBAQCBwdWJs
aWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9p
ZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5KTsKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1
ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5
KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJ
bnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCBVQ1BVUmVnaXN0ZXIp
OworICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29u
dGVudHMmJik7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBj
b25zdDsKLSAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVu
c2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGNs
YW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKKyAgICBzdGF0aWMgaW5saW5lIFVDUFVSZWdp
c3RlciBjbGFtcFZhbHVlKGRvdWJsZSB4LCBVQ1BVUmVnaXN0ZXIgbGVmdCwgVUNQVVJlZ2lzdGVy
IHJpZ2h0KTsKIAogICAgIHZvaWQgbm90aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTE5Miw3ICsy
MDEsNyBAQCBjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY29udGVudHMuZGF0YSgpOwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0
aCgpIGNvbnN0CitVQ1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2NvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CiB9CkBAIC0yMDUsNyArMjE0
LDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVm
ZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBw
cm9iYWJseSB3YW50IHRvIHNjYWxlIHRoaXMgYnkgdGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29t
ZXRoaW5nLgotICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6
ZV90PihieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0
ZUxlbmd0aCgpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNzY4ZmVhOTA5
YmFiLi5lYjA1MDllY2RjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxOCArMjUsMTcgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQXJyYXlCdWZmZXJWaWV3OjpBcnJh
eUJ1ZmZlclZpZXcoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5n
dGgpCiAgICAgICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9pc0Rl
dGFjaGFibGUodHJ1ZSkKICAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkKICAgICAg
ICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwg
Q3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CisgICAgQ2hlY2tlZDxVQ1BVUmVn
aXN0ZXIsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAgIGxlbmd0aCAr
PSBieXRlTGVuZ3RoOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04obGVuZ3RoIDw9IG1fYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChtX2J1ZmZlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKaW5k
ZXggN2UzOTYwNzc3OGE5Li4wMGVkY2QzODQ3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxp
bWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NywxNCArNzgs
MTQgQEAgcHVibGljOgogCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VBZGRy
ZXNzKCk7IH0KIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAg
ICB9CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVu
Z3RoOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5
dGVMZW5ndGg7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGV0YWNoYWJsZShi
b29sKTsKICAgICBib29sIGlzRGV0YWNoYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXRhY2hh
YmxlOyB9CkBAIC05MiwxOSArOTMsMTggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOwogCiAgICAgLy8gSGVscGVyIHRvIHZlcmlmeSBi
eXRlIG9mZnNldCBpcyBzaXplIGFsaWduZWQuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9m
ZnNldEFsaWdubWVudCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0
aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0
LCBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gIShieXRl
T2Zmc2V0ICYgKHNpemUgLSAxKSk7CisgICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoZWxl
bWVudFNpemUgLSAxKSk7CiAgICAgfQogCi0gICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEg
Z2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCi0gICAgLy8gd2l0aGluIHJhbmdl
LgotICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVy
JiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCBzaXpl
X3Qgc2l6ZSkKKyAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ug
b2YgYW4gQXJyYXlCdWZmZXIgaXMgd2l0aGluIHJhbmdlLgorICAgIHN0YXRpYyBib29sIHZlcmlm
eVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIFVDUFVSZWdpc3RlciBi
eXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRTaXpl
KQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3Ro
KCk7CisgICAgICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgo
KTsKICAgICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVu
Z3RoIC0gYnl0ZU9mZnNldCkgLyBzaXplOworICAgICAgICBVQ1BVUmVnaXN0ZXIgcmVtYWluaW5n
RWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc3RhdGljX2Nhc3Q8VUNQVVJl
Z2lzdGVyPihlbGVtZW50U2l6ZSk7CiAgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHJlbWFpbmlu
Z0VsZW1lbnRzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTExMyw0MyArMTEzLDQ4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTQXJyYXlCdWZm
ZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAgICAg
CiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0
aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3Ro
KTsKIAotICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCBV
Q1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwo
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zm
c2V0KTsKLSAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJv
b2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxl
bmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIGdldFJhbmdl
SW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgVUNQVVJlZ2lzdGVyIGRhdGFCeXRlTGVuZ3RoLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGlj
IGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0
LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsCi0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQs
IHVuc2lnbmVkKiBsZW5ndGgpOworICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwoVUNQVVJl
Z2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciByYW5nZUJ5dGVMZW5ndGgpOwogCiAgICAg
Ly8gSW5wdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkn
cyB2aWV3OwogICAgIC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20g
dGhlIHVuZGVybHlpbmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgICBzdGF0aWMgdm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAogICAgICAgICBjb25z
dCBBcnJheUJ1ZmZlciYgYnVmZmVyLAotICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQs
Ci0gICAgICAgIHVuc2lnbmVkICpvZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpudW1FbGVtZW50
cykKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGFycmF5Qnl0ZU9mZnNldCwKKyAgICAgICAgVUNQVVJl
Z2lzdGVyICpvZmZzZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciAqbnVtRWxlbWVudHMpCiAgICAg
ewotICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZz
ZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbWF4T2Zmc2V0ID0gKHN0ZDo6
bnVtZXJpY19saW1pdHM8VUNQVVJlZ2lzdGVyPjo6bWF4KCkgLSBhcnJheUJ5dGVPZmZzZXQpIC8g
c2l6ZW9mKFQpOwogICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewogICAgICAgICAg
ICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAqbnVtRWxlbWVu
dHMgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICpvZmZzZXQg
PSBhcnJheUJ5dGVPZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAgICAqb2Zmc2V0
ID0gc3RkOjptaW4oYnVmZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2ln
bmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAv
IHNpemVvZihUKTsKKyAgICAgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93
PiBhZGp1c3RlZE9mZnNldCA9ICpvZmZzZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNp
emVvZihUKTsKKyAgICAgICAgYWRqdXN0ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAg
ICAgICBpZiAoYWRqdXN0ZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0
LnZhbHVlKCkgPiBidWZmZXIuYnl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1
ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBh
ZGp1c3RlZE9mZnNldC52YWx1ZSgpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgcmVtYWluaW5nRWxl
bWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAg
ICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1l
bnRzKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBDUFUo
UkVHSVNURVI2NCkKKyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisgICAg
dWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNEZXRhY2hh
YmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgVUNQVVJlZ2lzdGVyIG1f
Ynl0ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJl
c3Mgb2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBA
IC0xNjAsODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZp
ZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNl
dEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpCiB7
Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNl
dCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9m
ZnNldCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91
dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5P
ckVxdWFsKGJ5dGVPZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSAr
IGJ5dGVPZmZzZXQsIGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1w
bChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQp
CiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9m
ZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZz
ZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJh
bmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
Ynl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEs
IGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZl
clZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdl
SW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgVUNQVVJlZ2lzdGVyIGRhdGFCeXRlTGVuZ3RoLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgo
KQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkK
LSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewot
ICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0
aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3Qq
IGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAg
bWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUlt
cGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BV
UmVnaXN0ZXIgcmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVu
Z3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZz
ZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlm
ICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBi
eXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAg
dWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAg
ICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRM
ZW5ndGgoCi0gICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2ln
bmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAg
ICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0
YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsKLSAg
ICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKLSAgICBp
ZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0OwotICAgICpvZmZzZXQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZW5kIC0gc3RhcnQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNpbmcgSlND
OjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0
b21pY3NPYmplY3QuY3BwCmluZGV4IDY4ODNhMTdjNDcyZC4uZDM2MjQ1MGEyZjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAtMTIw
LDggKzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0b21pY0FjY2VzcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAgICAgICAgIGFjY2Vzc0luZGV4
ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImFjY2Vzc0luZGV4Iik7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIH0KLSAgICAKLSAg
ICBBU1NFUlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihJTlRfTUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlwZWRBcnJheVZpZXctPmxl
bmd0aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nlc3MuIl9zKTsKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAK
aW5kZXggZGNjMmY1MDY0YWYyLi43YjFlZDdjZjU2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK0RhdGFWaWV3OjpE
YXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9m
ZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RG
TW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0YVZp
ZXc+IERhdGFWaWV3OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVy
IGJ5dGVMZW5ndGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92
ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4g
RGF0YVZpZXc6OmNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0
ZXIgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBjcmVhdGUo
V1RGTW92ZShidWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXggZGEwNmI0YmIyMTQ0Li5kZTcxNGI2MjUwOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5
QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxE
YXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERh
dGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9m
ZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3Jl
YXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0
VHlwZSgpIGNvbnN0IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5
QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7
CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGdldCh1bnNpZ25lZCBvZmZz
ZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgZ2V0
KFVDUFVSZWdpc3RlciBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9m
ZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVu
c2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRy
KQorICAgIFQgcmVhZChVQ1BVUmVnaXN0ZXImIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJv
b2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRoaXMtPnRl
bXBsYXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAgICAgaWYg
KCFzdGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNl
dCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisg
ICAgdm9pZCBzZXQoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRp
YW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7
CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZpZXco
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKTsKKyAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3Rl
ciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYmU3ZTZjMDUzNGZhLi5iMjg3OWIzZGYwNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMzLDI0ICszMywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJy
YXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5
Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
Y3JlYXRlKFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVD
UFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQ
VVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogICAgIAotICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSo+KGJhc2VBZGRyZXNzKCkpOyB9CiAgICAgCi0gICAgYm9vbCBzZXQoR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KQorICAg
IGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJyYXksIFVDUFVSZWdp
c3RlciBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0
ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9v
bCBzZXRSYW5nZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291
bnQsIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUqIGRhdGEsIFVDUFVSZWdpc3RlciBjb3VudCwgVUNQVVJlZ2lzdGVyIG9mZnNl
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBzZXRSYW5nZUltcGwoCiAgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwKQEAgLTU4LDM5ICs1OCwzOSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwogICAgIH0KICAgICAKLSAgICBib29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVf
dCBjb3VudCkKKyAgICBib29sIHplcm9SYW5nZShVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVn
aXN0ZXIgY291bnQpCiAgICAgewogICAgICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQg
KiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksIGNvdW50ICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsgemVy
b1JhbmdlKDAsIGxlbmd0aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNE
ZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRlTGVu
Z3RoKCkgLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgaXRlbShVQ1BVUmVnaXN0ZXIgaW5kZXgpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxl
bmd0aCgpKTsKICAgICAgICAgcmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAotICAg
IHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBz
ZXQoVUNQVVJlZ2lzdGVyIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgp
KTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2
YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXROYXRpdmUodW5zaWduZWQgaW5kZXgsIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXROYXRpdmUoVUNQVVJl
Z2lzdGVyIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5s
ZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1ZTsKICAgICB9CiAKLSAgICBi
b29sIGdldFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwg
dW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogZGF0YSwgVUNQVVJlZ2lzdGVyIGNvdW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGdldFJhbmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGRhdGEpLApAQCAtOTgsMTggKzk4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogCi0gICAg
Ym9vbCBjaGVja0luYm91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25z
dAorICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YShVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVn
aXN0ZXIgY291bnQpIGNvbnN0CiAgICAgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlz
LT5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbGVuZ3RoCi0gICAgICAgICAg
ICAmJiBvZmZzZXQgKyBjb3VudCA8PSBsZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJm
bG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA+PSBvZmZzZXQpOworICAgICAgICBy
ZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBjb3VudCwgdGhpcy0+bGVuZ3Ro
KCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJh
cnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0gICAgCiAgICAgVHlwZWRBcnJh
eVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRv
cjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVm
ZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAK
IHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBHZW5lcmljVHlw
ZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNl
dCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaAppbmRleCBhZTViZGQ4YzZhMzEuLjU5YzY5ZTMxMjJhOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgo
bGVuZ3RoIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8VUNQVVJlZ2lzdGVyPjo6bWF4KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgotUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShs
ZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00Nyw3ICs0OCw3IEBAIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKHVuc2lnCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGFy
cmF5LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01Niw3ICs1Nyw3
IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNl
dCwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBA
QCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5
Q3JlYXRlKFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsK
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0LDcgKzc1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRl
KAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5n
dGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0g
dHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04NSw3ICs4Niw3IEBAIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5n
dGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAw
LDcgKzEwMSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChV
Q1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0
aWFsaXplZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC0xMDksNyAr
MTEwLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdp
c3RlciBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAg
ICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2IEBAIEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgp
CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQg
c3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShp
bnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7
Ci0gICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIHRoaXMtPmxlbmd0aCgp
LCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlT
aGFyZWRCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBjbGFtcE9mZnNldEFuZE51
bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVPZmZzZXQoKSwgJm9mZnNldCwg
Jmxlbmd0aCk7Ci0gICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsK
LX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJyYXlCdWZmZXJWaWV3KiBHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXgg
ODllYWViZDNjMmNjLi4yN2E5Nzc5ZjQ5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8gPSB7CiB9OwogCiBKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqIHZlY3Rv
cikKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVjdG9yKHZlY3Rvciwg
bGVuZ3RoKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQsNyBAQCBKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIH0K
IAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNv
bnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3Ro
LCB1aW50MzJfdCBlbGVtZW50U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFs
aXphdGlvbk1vZGUgbW9kZSkKICAgICA6IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCkBAIC02Myw3ICs2Myw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1
Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIGlmIChsZW5ndGggPD0gZmFz
dFNpemVMaW1pdCkgewogICAgICAgICAvLyBBdHRlbXB0IEdDIGFsbG9jYXRpb24uCiAgICAgICAg
IHZvaWQqIHRlbXA7Ci0gICAgICAgIHNpemVfdCBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVu
dFNpemUpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1l
bnRTaXplKTsKICAgICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OlJldHVybk51bGwpOwogICAgICAgICBpZiAoIXRlbXApCiAgICAgICAgICAgICByZXR1
cm47CkBAIC04MSwxOCArODEsMTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBEb24ndCBhbGxvdyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAg
IGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6
ZSkKKyAgICBDaGVja2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IHNpemUgPSBsZW5n
dGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZS5oYXNPdmVyZmxvd2Vk
KCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogc3RhdGlj
X2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdp
Z2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSksIGxlbmd0aCk7CisK
KyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwogICAgIGlmICghbV92ZWN0b3IpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkKICAgICAgICAgbWVtc2V0
KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5
QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplKTsKKyAg
ICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7CiAgICAg
CiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0gT3ZlcnNpemVUeXBl
ZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFVDUFVSZWdpc3RlciBi
eXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRB
cnJheSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9u
Q29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0
cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIFVDUFVSZWdpc3Rl
ciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1f
c3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9k
ZShEYXRhVmlld01vZGUpCkBAIC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90
IGVsZW1lbnRTaXplKEpTVHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlw
ZSAtIEludDhBcnJheVR5cGVdOwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0
ZUxlbmd0aCgpIGNvbnN0CitVQ1BVUmVnaXN0ZXIgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5n
dGgoKSBjb25zdAogeworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0
ZXI+IHJlc3VsdCA9IGxlbmd0aCgpOworICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkp
OworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKKyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ug
b2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVja2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBv
bmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNoZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4K
ICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVtZW50U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAK
IEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgp
CkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93
RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0
cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBi
eXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAgICAgc3dpdGNoIChtX21vZGUpIHsK
ICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0zMTUsOCArMzIyLDggQEAgUmVmUHRyPEFy
cmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAg
ICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVu
Z3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7
CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAgIHN3aXRjaCAo
dHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlwZSAjIyBBcnJh
eVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uNDY3MGI0NmQ4Yjc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEwOCw3
ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0g
MTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIFVDUFVSZWdpc3RlciBmYXN0U2l6ZUxpbWl0ID0g
MTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxWZWN0
b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVs
bC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVpbnQz
Ml90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIFVDUFVSZWdpc3Rl
ciBzaXplT2YoVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAg
ewotICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRT
aXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPFVDUFVSZWdpc3Rlcj4gcmVz
dWx0ID0gbGVuZ3RoOworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJl
c3VsdCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC52YWx1ZSgpICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNp
dHkpCkBAIC0xMzYsMjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAg
ICBlbnVtIEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9Owog
ICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChW
TSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIElu
aXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Q29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgs
IHVuc2lnbmVkIGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAg
ICAgICAgIAogICAgICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5
cGVkIGFycmF5cy4gSXQncyB1c2VkIGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENv
bnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0
b3IpOworICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIFVDUFVSZWdpc3Rl
ciBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVD
UFVSZWdpc3RlciBsZW5ndGgpOwogICAgICAgICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7
IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBT
dHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKKyAgICAgICAgICAgIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBEYXRhVmlld1RhZyk7
CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0
cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAgIHVpbnQz
Ml90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIFVDUFVSZWdp
c3RlciBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFy
cmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZs
eSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBA
IC0xNjIsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwot
ICAgICAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG1fbGVuZ3Ro
OwogICAgICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9i
dXR0ZXJmbHk7CiAgICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB2b2lk
KiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkp
OyB9CiAgICAgdm9pZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3ZlY3Rvci5nZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRl
T2Zmc2V0KCk7Ci0gICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRD
b25jdXJyZW50bHkoKTsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQoKTsKKyAg
ICBpbmxpbmUgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGJ5dGVPZmZzZXRDb25jdXJyZW50
bHkoKTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIFVDUFVSZWdpc3RlciBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlTGVu
Z3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcg
KzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1
dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1fdmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVu
Z3RoOworICAgIFVDUFVSZWdpc3RlciBtX2xlbmd0aDsKICAgICBUeXBlZEFycmF5TW9kZSBtX21v
ZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4IDFkMDcyYjcxYWNiNy4uNjMxODE1NWU2NDBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTksNyArOTksNyBAQCBpbmxpbmUgUmVzdWx0VHlwZSBK
U0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHB0cmRpZmZfdCBkZWx0YSA9
CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRp
b24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpOwogCi0gICAgdW5z
aWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlbHRhKTsKKyAgICBVQ1BVUmVn
aXN0ZXIgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihkZWx0YSk7CiAgICAgaWYg
KHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8cHRyZGlm
Zl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAgLTExMCwxNCArMTEwLDE0IEBA
IGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0SW1wbCgpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3
OjpieXRlT2Zmc2V0KCkKK2lubGluZSBVQ1BVUmVnaXN0ZXIgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5
dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCB1bnNpZ25l
ZD4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgVUNQVVJlZ2lzdGVyPigp
OwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lz
dGVyPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAg
cmV0dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+PigpOworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBz
dGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBi
MWVhOWRhMGZlNGMuLjQ5NjE2ZjVjODM4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPHd0Zi9NZWRpYVRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Ry
aVN0YXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjk4LDYgKzI5OSw3IEBAIHB1YmxpYzoK
ICAgICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJf
dCB0b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvSW5kZXgo
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OworICAgIFVDUFVS
ZWdpc3RlciB0b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVy
cm9yTmFtZSkgY29uc3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAppbmRleCAzNGVhMjE0NjBhMGQuLjgwYzIzZjZjNjk2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02
OSwxNCArNjksNDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkgeworCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50
MzIoKTsKKworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVy
cm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGlu
ZSBVQ1BVUmVnaXN0ZXIgSlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUi
KSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAg
ICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlND
Ojp0b0ludDMyKGQpKTsKKworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJS
QVlfQlVGRkVSX1NJWkUpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFt
ZSwgIiB0b28gbGFyZ2UiKSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBB
bGwgb2YgdGhpcyBtb25zdHJvc2l0eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0
IG9uIDE8PDMyLgorICAgIFVDUFVSZWdpc3RlciBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJs
ZSBpbnB1dE9mZnNldCA9IDA7CisgICAgVUNQVVJlZ2lzdGVyIGludDMyTWF4ID0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KGludDMyTWF4KSkgeworICAgICAgICBvdXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAg
ICAgaW5wdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBvdXRwdXRPZmZzZXQgKyBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KHN0YXRpY19j
YXN0PHVpbnQzMl90PihKU0M6OnRvSW50MzIoZCAtIGlucHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNi
OS4uOTg1ZDllMjQ0OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYg
dm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAog
SlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmll
dzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZp
ZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIpCiB7CiAgICAgVU5SRUFDSEFCTEVf
Rk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZpZXcqIEpT
RGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQor
SlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgVUNQVVJlZ2lzdGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRh
Vmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBKU09iamVjdCosIFVDUFVS
ZWdpc3RlciwgVUNQVVJlZ2lzdGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRl
eChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi41ZWUxZDg2MTll
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LAorICAg
ICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0aG9k
cywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2UgdG8K
ICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2UgZG8gZWxzZXdo
ZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNEYXRh
VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVu
c2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmpl
Y3QqLCBVQ1BVUmVnaXN0ZXIsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKTsKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVy
LCBKU1ZhbHVlKTsKICAgICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1
ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDk0OTA2MjQ3ZWE2NS4uZDhjOTljM2M2OGE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJv
dG90eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEzNiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAg
aWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZp
ZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9i
amVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAg
IHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwor
ICAgIFVDUFVSZWdpc3RlciBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcg
QXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3Rl
ciBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+
IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQg
b2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBi
ZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAg
ICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRl
eChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWdu
ZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgVUNQ
VVJlZ2lzdGVyIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwog
ICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0g
MykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1
ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVM
ZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxl
bmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3Vu
ZHMgYWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi4wNTY4Mzhj
OWU0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJy
YXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0
aXZlRnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29u
c3QgQ2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVj
dHVyZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZy
b20gSlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8v
ICAgICBVQ1BVUmVnaXN0ZXIgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVz
ZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklY
TUU6IE1ha2UKKy8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVy
LXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8v
IEIgaXMgdXN1YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVy
ZmxvdyIgZGF0YSBmb3IKQEAgLTEwMywxNSArMTA0LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSk7CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBz
dGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BV
UmVnaXN0ZXIgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4m
JiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1
Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlw
ZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KLSAgICBzaXpl
X3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7IH0KKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9
CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVu
Z3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3Qg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRWZWN0b3IoKSBjb25zdAogICAgIHsKQEAgLTEy
Miw0NiArMTIzLDQ2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKj4odmVjdG9yKCkpOwogICAgIH0KIAotICAgIGJvb2wgaW5Cb3Vu
ZHModW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGluQm91bmRzKFVDUFVSZWdpc3RlciBpKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aDsKICAgICB9CiAKICAgICAv
LyBUaGVzZSBtZXRob2RzIGFyZSBtZWFudCB0byBtYXRjaCBpbmRleGVkIGFjY2VzcyBtZXRob2Rz
IHRoYXQgSlNPYmplY3QKICAgICAvLyBzdXBwb3J0cyAtIGhlbmNlIHRoZSBzbGlnaHQgcmVkdW5k
YW5jeS4KLSAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAg
IGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIGluQm91bmRzKGkpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2ts
eTsKICAgICB9Ci0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSkgY29uc3QKKyAgICBib29sIGNhblNldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIg
aSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5n
dGggJiYgdmFsdWUuaXNOdW1iZXIoKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7
CiAgICAgfQogICAgIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5
QXNOYXRpdmVWYWx1ZSh1bnNpZ25lZCBpKSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAg
ICB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICByZXR1cm4gdHlwZWRW
ZWN0b3IoKVtpXTsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkodW5z
aWduZWQgaSkgY29uc3QKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIg
aSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b0pTVmFsdWUobnVsbHB0
ciwgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpKSk7CiAgICAgfQogICAgIAotICAgIHZv
aWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSh1bnNpZ25lZCBpLCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShV
Q1BVUmVnaXN0ZXIgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICB0eXBlZFZlY3RvcigpW2ldID0gdmFs
dWU7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpT
VmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGksIEpT
VmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwog
ICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKGksIHRvTmF0aXZlRnJvbVZhbHVl
PEFkYXB0b3I+KHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1ZhbHVlKQorICAg
IGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVy
IGksIEpTVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTE3Niw5ICsxNzcsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRp
dmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsgfQorICAgIHN0YXRp
YyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0
aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7CisgICAgfQogCi0g
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21W
YWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJv
bVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOyB9CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRD
b2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVG
cm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7CisgICAgfQogCiAgICAg
dm9pZCBzb3J0KCkKICAgICB7CkBAIC0xOTgsMjEgKzIwNSwxOCBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseSh1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseShVQ1BV
UmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoIDw9
IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYg
b2Zmc2V0ICsgbGVuZ3RoID49IG9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRo
YW5PckVxdWFsKG9mZnNldCwgbGVuZ3RoLCBtX2xlbmd0aCk7CiAgICAgfQogICAgIAogICAgIC8v
IExpa2UgY2FuU2V0UXVpY2tseSwgZXhjZXB0OiBpZiBpdCByZXR1cm5zIGZhbHNlLCBpdCB3aWxs
IHRocm93IHRoZQogICAgIC8vIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KLSAgICBib29sIHZhbGlk
YXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVy
IG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
c3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCByZXR1cm5zIGZhbHNlCiAgICAg
Ly8gdGhlbiBpdCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4KLSAgICBib29sIHNldChK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBvYmpl
Y3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpVbm9i
c2VydmFibGUpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9m
ZnNldCwgSlNPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2JqZWN0T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoLCBDb3B5VHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwo
KTsKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJ
bXBsKCk7CkBAIC0zMTgsOCArMzIyLDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9y
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhT
cGVjaWZpY1R5cGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQg
b2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxP
dGhlckFkYXB0b3I+KiwKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCwgQ29weVR5cGUpOwogCiAgICAgLy8gVGhlIEVDTUEgNiBzcGVjIHN0YXRl
cyB0aGF0IGZsb2F0aW5nIHBvaW50IFR5cGVkIEFycmF5cyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93
aW5nIG9yZGVyaW5nOgogICAgIC8vCkBAIC0zNDksNyArMzUzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHB1cmlmeUFycmF5KCkKICAgICB7CiAgICAgICAgIEVsZW1lbnRUeXBlKiBhcnJheSA9IHR5
cGVkVmVjdG9yKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsg
aSsrKQorICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKysp
CiAgICAgICAgICAgICBhcnJheVtpXSA9IHB1cmlmeU5hTihhcnJheVtpXSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCBkMjU4
NDA2N2U4M2YuLmVlZGE1NWUzY2EyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xNDMsNyArMTQzLDcgQEAgaW5saW5lIEpTQXJyYXlCdWZm
ZXIqIGNvbnN0cnVjdEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBm
aXJzdEFyZ3VtZW50LCB1bnNpZ25lZCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxl
bmd0aE9wdCkKK2lubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgVUNQVVJlZ2lzdGVyIG9mZnNl
dCwgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGxlbmd0aE9wdCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IDA7CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSAwOwogICAgICAgICBpZiAo
bGVuZ3RoT3B0KQogICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAg
ICAgIGVsc2UgewpAQCAtMTgyLDcgKzE4Miw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAg
ICAgLy8gLSBBIHByaW1pdGl2ZS4gVGhpcyBjcmVhdGVzIGEgbmV3IHR5cGVkIGFycmF5IG9mIHRo
YXQgbGVuZ3RoIGFuZCB6ZXJvLWluaXRpYWxpemVzIGl0LgogCiAgICAgaWYgKEpTT2JqZWN0KiBv
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGZpcnN0VmFsdWUpKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aDsKICAgICAg
ICAgSlNBcnJheUJ1ZmZlciogY3VzdG9tQnVmZmVyID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAo
aXNUeXBlZFZpZXcob2JqZWN0LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUp
KSB7CkBAIC0yNTAsNyArMjUwLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBmaXJzdFZhbHVl
LnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0
aCA9IGZpcnN0VmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgbGVuZ3RoKSk7CiB9CkBAIC0yNzUsOCArMjc1LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0
KgogICAgIH0KIAogICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CisgICAgVUNQVVJlZ2lzdGVyIG9mZnNl
dCA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGxlbmd0aCA9IHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGZpcnN0VmFs
dWUpICYmIGFyZ0NvdW50ID4gMSkgewogICAgICAgICBvZmZzZXQgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4
NSw3ICsyODUsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICAvLyBJZiB0
aGUgbGVuZ3RoIHZhbHVlIGlzIHByZXNlbnQgYnV0IHVuZGVmaW5lZCwgdHJlYXQgaXQgYXMgbWlz
c2luZy4KICAgICAgICAgICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDIpOwogICAgICAgICAgICAgaWYgKCFsZW5ndGhWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9JbmRleChnbG9i
YWxPYmplY3QsIFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmll
dyA/ICJieXRlTGVuZ3RoIiA6ICJsZW5ndGgiKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBs
ZW5ndGhWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsIFZpZXdDbGFzczo6VHlw
ZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldyA/ICJieXRlTGVuZ3RoIiA6ICJsZW5n
dGgiKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAppbmRleCA0NTAyMzg3OTJkMTAuLjA1M2NmYjUxZTJjOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUgIlR5cGVkQXJy
YXlzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDcsNyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3RvcigK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
dW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQq
IHZlY3RvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3Ry
dWN0aW9uQ29udGV4dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgs
NyArNzksNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgotSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTk5LDExICsxMDAsMTEgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXQK
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgc2l6ZSA9IHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKICAgICBpZiAoIUFycmF5QnVm
ZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
LCBzaXplKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVm
ZmVyIikpOwpAQCAtMTQ1LDcgKzE0Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQgb3RoZXJPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFk
YXB0b3I+KiBvdGhlciwKKyAgICBVQ1BVUmVnaXN0ZXIgb3RoZXJPZmZzZXQsIFVDUFVSZWdpc3Rl
ciBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3
ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRo
U3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlz
dGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXpl
ICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5
VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAg
ICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88
QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05h
dGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAg
ICAgLy8gTm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRv
IGNvdmVyICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAo
VUNQVVJlZ2lzdGVyIGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFw
dG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90
aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAg
LTIzOCwxMSArMjM5LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRl
cm1lZGlhdGUgdHJhbnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9
IGxlbmd0aDsgaS0tOykgewogICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRv
cjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldElu
ZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZv
ciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0g
bGVuZ3RoOyBpLS07KQogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNl
dCArIGksIHRyYW5zZmVyQnVmZmVyW2ldKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1
MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNl
dFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25l
ZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBKU09iamVjdCog
b2JqZWN0LCBVQ1BVUmVnaXN0ZXIgb2JqZWN0T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBD
b3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBjb25zdCBDbGFzc0lu
Zm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChjaS0+dHlwZWRBcnJheVN0
b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAgICAvLyBUaGUgc3VwZXIg
ZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4K
KyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtbW92ZSBzaW5j
ZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
b3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgICAg
ICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgoKSk7CiAgICAgICAgIApA
QCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBldmVyIGNhbGwgb2JqZWN0LT5nZXQo
KSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCks
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkpOwogICAgICAgICAvLyBX
ZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3csIHdlIGRvbid0LgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIGkgKyBvYmplY3RPZmZz
ZXQpOworICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9vbCBzdWNjZXNz
ID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAgICAgICAgICAg
ICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vzcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA0YzBlYmQxZjYxNjUuLmE5
NzQ3MzczYzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBA
IC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1
ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQcm9maWxlOwogY2xhc3Mg
RXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsK
QEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwdXRC
eUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAgICAgICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5TZXRJbmRleFF1
aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldEluZGV4UXVpY2ts
eSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJbmRleFF1aWNr
bHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlz
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB9
CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBjYW5HZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKLSAgICBKU1ZhbHVlIGdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OworICAgIEpTVmFsdWUg
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJyYXlQcm9maWxlKiA9IG51
bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVk
IGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCi0gICAgSlNW
YWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKworICAgIC8vIFVzZXMg
dGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVk
QXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1
bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpIGNvbnN0CiAg
ICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZs
eSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNhbkdldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBicmVh
azsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldChnbG9i
YWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0gICAgYm9vbCBj
YW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNl
dEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVuc2lnbmVkLCBK
U1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nlc3MKKyAgICAv
LyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSopOworICAgIGJv
b2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4
aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgotICAg
ICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdmFsdWUp
OworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwg
diwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZ
UEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFMTF9XUklUQUJM
RV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxF
X0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lO
REVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19U
WVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNJbnQz
MigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNX
aGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7
CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91
cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAgICAgICAgICBp
ZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRl
cmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhlYXAud3JpdGVC
YXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAg
ICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7CisgICAgICAg
ICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4
KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRp
Z3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAgaWYgKGkgPj0g
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNl
dFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBB
cnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNldElu
ZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAg
ICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0
aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3Zl
Y3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0NvcHlPbldyaXRl
KGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+YXJyYXlT
dG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5t
X3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5
Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXND
b3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZN
JiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNmUxYmIxYjU5ZjFlLi5iM2MyNjZjNjQ0
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuR2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAogICAgIH0KIH0KIAotaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQ
cm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0jZGVmaW5lIENBU0VfVFlQ
RURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6XAotICAg
ICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyktPmNh
blNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZ
X1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCi0jdW5kZWYg
Q0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLX0KKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBpZiAoaSA+IEFycmF5UHJvZmls
ZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggJiYgYXJyYXlQcm9maWxlKQorICAgICAgICBh
cnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShhcnJheVByb2ZpbGUpOworI2VuZGlmCiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0
OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0Ci17CiAgICAg
c3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwK
ICAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKQEAgLTUxMiw3ICs1MDYsNTAgQEAgaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KLSAgICAKKworaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5n
VHlwZShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKK3sKKyAgICBBcnJheVN0b3JhZ2Uq
IHN0b3JhZ2UgPSB0aGlzLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9yYWdlKCk7CisgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+JiB4ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgSlNWYWx1ZSBv
bGQgPSB4LmdldCgpOworICAgIHguc2V0KHZtLCB0aGlzLCB2KTsKKyAgICBpZiAoIW9sZCkgewor
ICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CisgICAgICAgIGlmIChpID49
IHN0b3JhZ2UtPmxlbmd0aCgpKQorICAgICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAx
KTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIEpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUpCit7CisgICAgc3dpdGNoICh0eXBlKCkpIHsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyNk
ZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7XAorICAgICAg
ICBpZiAoKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoKSAmJiBh
cnJheVByb2ZpbGUpXAorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlw
ZWRBcnJheSgpO1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbHNlCisjZGVmaW5lIFVQREFURV9B
UlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8ge1wKKyAgICBVTlVTRURfUEFSQU0oYXJy
YXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9U
WVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wK
KyAgICAgICAgYXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKUyAjIyBuYW1lICMjIEFycmF5ICo+
KHRoaXMpO1wKKyAgICAgICAgaWYgKCF0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwg
dikpXAorICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1wKKyAgICAgICAgdHlwZWRBcnJheS0+c2V0
SW5kZXhRdWlja2x5KGksIHYpO1wKKyAgICAgICAgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJy
YXlQcm9maWxlKTtcCisgICAgICAgIHJldHVybiB0cnVlO1wKKyAgICB9CisgICAgRk9SX0VBQ0hf
VFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQ
RSkKKyN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKKyN1bmRlZiBVUERBVEVfQVJSQVlfUFJP
RklMRQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIGlu
bGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAjaWYgQVNTRVJUX0VO
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCBj
ZTczMGYzYmY5NjUuLjA5MTllNzIxODZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuaApAQCAtODk4LDggKzg5OCw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDCiB7CiAgICAgaWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KGJhc2UpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1
aWNrbHkoaW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3Qt
PmdldEluZGV4UXVpY2tseShpbmRleCkpOworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBv
YmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpbmRleCkpCisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZSkg
JiYgYXNTdHJpbmcoYmFzZSktPmNhbkdldEluZGV4KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAppbmRleCBlOGRjMWEzMGFlZGQuLmI3ZDhjOWZjZjcy
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaApAQCAtMjcs
NiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQXJyYXlC
dWZmZXIuaCIKKwogI2luY2x1ZGUgPGxpbWl0cy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTk2
LDcgKzk4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYWdl
U2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxdWxsIDw8IDMyKSAvIHBhZ2VT
aXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJWkUgLyBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ocGFnZVNpemUpKTsKIAogICAgIHVpbnQzMl90IG1fcGFnZUNvdW50OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
ZTViN2NkNDY2MTg3Li45OWYwN2ZmNzQ0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTAt
MTIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxv
dyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWRlIHNvbWUgb2YgQ2hl
Y2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVh
c3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAgICogd3RmL0No
ZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAo
V1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwpOgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG5vbi1IQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05f
U1RSSUNUUlVTVEVWQUxVQVRFKSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRl
eCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBS
ZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBz
aXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRh
cmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdl
dCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQg
dHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3Qg
dHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0
Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3
YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2Us
IGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
ICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewog
ICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1
ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAg
Ly8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNv
dXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxU
YXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFu
IHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAg
IHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRl
ciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Up
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAg
ICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2ln
bmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwg
aXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihT
b3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5z
aWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7
CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRT
YWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252
ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0lu
Qm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiAr
OTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJv
ZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+
KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVj
a2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVy
biAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQog
CiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2lu
ZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2lu
ZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5n
IFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM2ZDE1ZWRkMTNj
Li5hNjk1N2VjNjc2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0xMC0xMiAg
Um9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdB
U00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgcGFydHMgb2YgV2ViQ29y
ZSB1c2UgVHlwZWRBcnJheXMsIGFuZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBtYWRlIHRoZSBs
ZW5ndGgoKSBmdW5jdGlvbiBvbiB0eXBlZCBhcnJheXMgcmV0dXJuIHNpemVfdCBpbnN0ZWFkIG9m
IHVpbnQzMl90LgorICAgICAgICBJIGZpeGVkIGl0IHRyaXZpYWxseSBieSBSRUxFQVNFX0FTU0VS
VGluZyB0aGF0IHRoZSBzaXplX3QgZml0cyBpbiBhIHVpbnQzMl90IGFuZCB0aGVuIGNhc3Rpbmcg
aXQuCisgICAgICAgIE5vIG5ldyB0ZXN0cyBmb3IgV2ViQ29yZSBhcyB0aGVyZSBpcyBubyBpbnRl
bmRlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5u
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5uZWwpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5EYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9tYWluRGF0YSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAq
IGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94Lmg6CisKIDIwMjEtMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgSGF2ZSB0aGUgU2Nyb2xsaW5nVHJlZSB0cmFjayBub2RlcyB3aXRoIGFu
aW1hdGVkIHNjcm9sbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5jcHAKaW5kZXggY2I3ZTg0ZDQ1MzgzLi4yZGI0OWNhMjRhMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTMsMTIg
KzE5MywxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVs
KFJlZjxGbG9hdDMyQXJyYXk+JiYgZGVzdGluYXRpb24sCiAgICAgCiAgICAgRmxvYXQzMkFycmF5
KiBjaGFubmVsRGF0YSA9IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0g
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJl
Z2lzdGVyIGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYg
KGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAot
ICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BV
UmVnaXN0ZXIgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0g
c3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBj
b25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyMSwxMiArMjIxLDEy
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKFJlZjxGbG9h
dDMyQXJyYXk+JiYgc291cmNlLCB1bnNpZ25lCiAgICAgCiAgICAgRmxvYXQzMkFycmF5KiBjaGFu
bmVsRGF0YSA9IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0gICAgc2l6
ZV90IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVy
IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZl
ck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVu
c2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BVUmVnaXN0
ZXIgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjpt
aW4oc291cmNlLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQq
IHNyYyA9IHNvdXJjZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5hYzg5Y2Fl
YmVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyLmNwcApAQCAtMTk2LDggKzE5Niw4IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNl
cjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAg
ICBkb0ZGVEFuYWx5c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGZyb20g
bGluZWFyIG1hZ25pdHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVuc2lnbmVk
IHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXplX3QgbGVu
Z3RoID0gc3RkOjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsK
KyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgp
OworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCks
IGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25z
dCBkb3VibGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVs
cyA/IDEgOiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29u
c3QgZG91YmxlIG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjcsOSBA
QCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFy
cmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3Qg
bGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7Cisg
ICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsK
KyAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3Ro
ID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGgg
PiAwKSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNp
emUoKSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXpl
OwogICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Miw5IEBA
IHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkm
IGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IHVuc2lnbmVkIGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9
IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVf
dCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6
ZV90IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6
bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewog
ICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0g
SW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAg
ICAgQVNTRVJUKGlzSW5wdXRCdWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4u
OWU4NDY3YWQ2MmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEyNjMsOCArMTI2MywxMyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIHdyaXRlKEltYWdlRGF0YVRhZyk7CiAgICAgICAgICAgICAgICAgd3Jp
dGUoZGF0YS0+d2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkp
OwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7Ci0gICAgICAg
ICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRhdGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgp
KTsKKyAgICAgICAgICAgICAgICBDaGVja2VkPHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gZGF0
YUxlbmd0aCA9IGRhdGEtPmRhdGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0
YUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRhKCks
IGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9yU3BhY2UoKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzExLDgg
KzEzMTYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgd3JpdGUoQXJyYXlCdWZmZXJUYWcpOwotICAgICAgICAgICAgICAg
IHdyaXRlKGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQ2hlY2tlZDx1aW50MzJfdCwg
UmVjb3JkT3ZlcmZsb3c+IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICAgICAgICAgIGlmIChieXRlTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVy
cm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3Jp
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRl
TGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzPEpTQXJyYXlCdWZmZXJWaWV3Pih2bSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFk
Njg2ZC4uYmFmMWFiYWQ2N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05l
dHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1Nl
bmRRdWV1ZS5jcHAKQEAgLTY4LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1
ZXVlKFdlYkNvcmU6OkJsb2ImIGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNp
emUoKTsKICAgICBpZiAoIWJ5dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5
QnVmZmVyOjpjcmVhdGUoMFUsIDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mg
d2VpcmQsIGJ1dCBpcyByZXF1aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8g
c3VjY2VlZC4KKyAgICAgICAgLy8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdo
ZXJlIEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCkgY291bGQgYmUgY2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlND
OjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oMFUpLCAxKSwg
MCwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFr
ZVVuaXF1ZVJlZjxCbG9iTG9hZGVyPihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUu
LjFiYTMyMmMxMGJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Cb3guaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYzLDcgKzY0LDEw
IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1cm5WYWx1
ZSwgViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNzKQogICAg
IHsKICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFsdWUgPSB2
aWV3LnRlbXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlhbiwg
JnJlYWRTdGF0dXMpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0
OworICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwg
ZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9m
ZnNldCA9IGFjdHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCg==
</data>
<flag name="review"
          id="465110"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="465072"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441120</attachid>
            <date>2021-10-13 12:27:27 -0700</date>
            <delta_ts>2021-10-13 16:03:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>261345</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi45ODRkNDczN2E3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMTIgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYmlnLXdhc20tbWVtb3J5IHRl
c3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00gYXQgMkdCLgorICAgICAgICBUaGV5IG5v
dyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWlsdXJlIGF0IDRHQisxLgorICAgICAgICBU
aGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZp
b3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUgdGhhdCB3YXMgY2F1c2luZyB0aGUgc3Bl
Y2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3duIChyZXN1bHRpbmcgaW4gdGhlIGdlbmVy
aWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29kZSkuCisgICAgICAgIEZpbmFsbHkgSSBt
YWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRmb3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBw
b3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRzLCBhbmQgSSBtYWRlIHRoZW0gb25seSBy
dW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQg
b2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZp
Y2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxhcmdlIHR5cGVkIGFycmF5cywgYW5kIGVz
cGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9NQVguCisKKyAgICAgICAgKiBzdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzOiBBZGRlZC4KKwogMjAyMS0x
MC0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBi
cmFuY2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5
IHZhbCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pT
VmFsdWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5v
LW1heC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpp
bmRleCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlm
ICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVj
dHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVm
YXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlv
biB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAg
Zm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQg
bWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFz
c2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3co
MHg3MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAg
IHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAg
ICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOwor
ICAgIHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsg
aW5pdGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAw
ICsgMSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cg
ZXhwZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAg
ICAgICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJv
cjogZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Jp
Zy13YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdy
b3cuanMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy13YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9y
eUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9
ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkK
IAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tB
cnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVt
b3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTog
MHg4MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNp
emUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAg
IG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9v
KG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0g
dm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiAr
IHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAg
ICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwg
bWF4aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAt
IDB4MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5
LmJ1ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICBpZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdt
YXhpbXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwog
ICAgIH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93
IGVycm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4u
ODBmZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnku
anMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBA
QAotLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1
LDIxIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0
cnkgewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3Nl
bWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIp
KTsKKyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0
ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBt
YXhTaXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0
ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5k
OiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7Cisg
ICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikp
OwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50
b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQog
ICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsK
IApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpz
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAg
KzEsNDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9
ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkK
KworZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxl
bmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFy
cmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0
QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBh
cnJheVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdp
Z2EgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExl
bmd0aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsK
KyAgICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9
IGFjdHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAi
ICsgbCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4g
Y2FzZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7
CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBp
bmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4
KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhw
ZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0
cmluZyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91
ckdpZ3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRo
cmVlR2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3Mp
LCBmb3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJh
eSh0aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9K
U1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAt
MCwwICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJh
eS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZh
bChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5l
KGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7Cisg
ICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBv
bmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1
YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytp
KSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAo
bCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0
aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAi
IGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZh
ciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUp
OworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAg
aWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZh
bHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
fQorICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7
CisgICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdl
dEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAg
dGhyb3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4g
Y2FzZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0
IGZvdXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3Mp
LCB0aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJH
aWdzKSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVk
QXJyYXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9y
ZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5q
cwppbmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVG
RkVSX1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1
ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYs
MTMgQEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAg
ICAgdmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRN
ZW1vcnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1v
ZHVsZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9
CiAKLWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAo
ZXhjZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBh
cnNlIGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBp
bnZhbGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIo
KSknKSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93
YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwpp
bmRleCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVk
LW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZh
ciBleGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRp
YWw6IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7
CiB9IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAh
PSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAo
ZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBh
Z2UgY291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2Fz
OiAiICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50
eHQKaW5kZXggNDk4YmRhY2ZkZGM1Li41YjhmMzY2NTljYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FH
RTogRmFpbGVkIHRvIGNvbnN0cnVjdCBpbnRlcm5hbCBBdWRpb0J1ZmZlciB3aXRoIDEgY2hhbm5l
bChzKSwgYSBzYW1wbGUgcmF0ZSBvZiA0NDAwMCBhbmQgYSBsZW5ndGggb2YgNTM2ODcwOTEyLgog
VGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaC4KIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4cGVjdGVkLnR4dApp
bmRleCA5NTZhNTc3OTc5NDkuLmQwNzM2MDAxNDMwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVm
ZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6
IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0aCAxIGNoYW5uZWwo
cyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUzNjg3MDkxMi4KIE1h
a2Ugc3VyZSB0aGF0IHRoZSBsZW5ndGggcmV0dXJuZWQgYnkgT2ZmbGluZUF1ZGlvQ29udGV4dCBl
dmVuIGlmIHdlIGZhaWxlZCB0byBjb25zdHJ1Y3QgdGhlIHJlbmRlcmluZyBidWZmZXIuCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDBhYzc1
Yzk3NDc5ZC4uZmQ5NzkwMjE0MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNDYgQEAKKzIwMjEtMTAtMTIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNv
bT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8v
ODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ks
IGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMg
dG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJf
dCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMu
LiB0byBiZWluZyBVQ1BVUmVnaXN0ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNo
YW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8g
YWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBw
ZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBE
RkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25l
IHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisg
ICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4K
KyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2Vl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSSBtb2RpZmllZCB0aGUgcnVudGltZSBmdW5j
dGlvbnMgZm9yIEdldEJ5VmFsL1B1dEJ5VmFsL0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21p
Y3NYWFggdG8gYWNjZXB0IG5vbi1JbnQzMiBpbmRpY2VzLCBzaW5jZSBmb3Ige0ludDgvVUludDgv
VUludDhDbGFtcGVkfUFycmF5LCBhIG1heGltdW0gc2l6ZSBvZiA0R0IgaW1wbGllcyBpbmRpY2Vz
ID4gMkIuCisgICAgICAgIC0gSSBhZGRlZCBhICJtYXlCZUxhcmdlVHlwZWRBcnJheSIgYml0IHRv
IEFycmF5UHJvZmlsZS9VbmxpbmtlZEFycmF5UHJvZmlsZS9ERkc6OkFycmF5TW9kZSB0byB0cmFj
ayB3aGV0aGVyIHN1Y2ggYSBub24tSW50MzIgaW5kZXggd2FzIHNlZW4gdG8gYWxsb3cgcHJvcGVy
IHNwZWN1bGF0aW9uIGFuZCBzcGVjaWFsaXphdGlvbiBvZiBmYXN0IHBhdGhzIGluIHRoZSBERkcv
RlRMLgorICAgICAgICAgICAgSSB0aGVuIHVwZGF0ZWQgdGhlIHJ1bnRpbWUgZnVuY3Rpb25zIHVz
ZWQgYnkgdGhlIHNsb3cgcGF0aHMgdG8gY29ycmVjdGx5IHVwZGF0ZSBpdC4KKworICAgICAgICBV
bmZvcnR1bmF0ZWx5IEkgcmFuIG91dCBvZiB0aW1lIHRvIGFkZCB0aGVzZSBzcGVjdWxhdGlvbnMv
dXBkYXRlIHRoZSBmYXN0IHBhdGhzLgorICAgICAgICBTbyB0aGUgZm9sbG93aW5nIHdpbGwgaGF2
ZSB0byB3YWl0IGZvciBhIGZvbGxvdy11cCBwYXRjaDoKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFy
Z2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRoIG9mIEdldEJ5VmFsIGluIHRoZSBMTEludAorICAg
ICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGhzIGdlbmVyYXRl
ZCBieSBBY2Nlc3NDYXNlL1BvbHltb3JwaGljQWNjZXNzCisgICAgICAgIC0gQWNjZXB0aW5nIGxh
cmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IHRoZSBERkcvRlRMIGZv
ciBlYWNoIG9mIEdldEJ5VmFsL1B1dEJ5VmFsL0RhdGFWaWV3R2V0L0RhdGFWaWV3U2V0L0F0b21p
Y3NYWFgKKworICAgICAgICBUaGUgY3VycmVudCBwYXRjaCBpcyBmdW5jdGlvbmFsLCBpdCB3aWxs
IGp1c3QgaGF2ZSBkcmVhZGZ1bCBwZXJmb3JtYW5jZSBpZiB0cnlpbmcgdG8gdXNlIGluZGljZXMg
PjJCIGluIGEge0ludDgvVUludDgvVUludDhDbGFtcGVkfUFycmF5LgorCisgICAgICAgIE90aGVy
IG1pbm9yIGNoYW5nZXMgaW4gdGhpcyBwYXRjaDoKKyAgICAgICAgLSBGaXhlZCBhbiB1bmRlZmlu
ZWQgYmVoYXZpb3IgaW4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsIHdoZXJlIG1lbWNweSBj
b3VsZCBiZSBjYWxsZWQgb24gbnVsbHB0ciAodGhlIHNwZWMgZXhwbGljaXRseSBiYW5zIHRoaXMg
ZXZlbiB3aGVuIGxlbmd0aCBpcyAwKQorICAgICAgICAtIFJlcGxhY2VkIHNvbWUgcmVwZXRpdGl2
ZSBhbmQgZXJyb3ItcHJvbmUgYm91bmRzIGNoZWNraW5nIGJ5IGNhbGxzIHRvIFdURjo6aXNTdW1T
bWFsbGVyVGhhbk9yRXF1YWwsIHdoaWNoIGlzIGNsZWFyZXIsIHNob3J0ZXIsIGFuZCByZXVzZSBD
aGVja2VkQXJpdGhtZXRpYyBmYWNpbGl0aWVzIHRvIGF2b2lkIG92ZXJmbG93IGlzc3Vlcy4KKyAg
ICAgICAgLSBGaXhlZCBhIHZhcmlldHkgb2Ygb2Jzb2xldGUgY29tbWVudHMKKyAgICAgICAgLSBB
ZGRlZCBzdXBwb3J0IGZvciBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgSW1tNjQgcmlnaHQpCisgICAgICAgICAgICAodGhlcmUgd2FzIGFscmVhZHkg
c3VwcG9ydCBmb3IgdGhlIHNhbWUgYnV0IHdpdGggVHJ1c3RlZEltbTY0KQorICAgICAgICAtIE1h
ZGUgdmFyaW91cyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIGZ1bmN0aW9uIGNvbnN0ZXhwciBhcyBw
YXJ0IG9mIHRoZSBwcmV2aW91cyBwb2ludAorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHI6OlRydXN0ZWRJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyOjphc0ludHB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyOjpJbW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6OmFzVHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6
OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMjo6VHJ1c3RlZEltbTMyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tMzI6OkltbTMyKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tMzI6OmFzVHJ1c3RlZEltbTMyIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0
OjpUcnVzdGVkSW1tNjQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJ
bW02NDo6SW1tNjQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW02
NDo6YXNUcnVzdGVkSW1tNjQgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaDY0KToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0OjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NEU6OnVudGFnQXJyYXlQdHJMZW5ndGg2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjRFOjp1bnRhZ0FycmF5UHRyTGVuZ3RoMzIpOiBEZWxldGVkLgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6Y2FuQmxpbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGJ5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdp
dGhHdWFyZCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChK
U0M6OkFycmF5UHJvZmlsZTo6c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpBcnJheVByb2ZpbGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRBcnJheVByb2ZpbGU6OlVubGlua2VkQXJyYXlQcm9maWxlKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRBcnJheVByb2ZpbGU6OnVwZGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAg
KiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RG
R0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpyZWZpbmUgY29u
c3QpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpB
cnJheU1vZGU6OkFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjptYXlC
ZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3
aXRoVHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3Vs
YXRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aENvbnZlcnNp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFR5cGVBbmRDb252
ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhBcnJheUNs
YXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAg
IChKU0M6OkRGRzo6QXJyYXlNb2RlOjpzcGVjdWxhdGlvbkZyb21Qcm9maWxlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhQcm9maWxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgICogZGZnL0RGR0Nsb2Ji
ZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcv
REZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZW5hYmxlSW50NTIpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvR2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnByZXBlbmRHZXRB
cnJheUxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6
CisgICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1N0b3Jh
Z2VDaGlsZCBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3RvcmFnZUNoaWxkSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FycmF5TW9kZSk6CisgICAgICAgICog
ZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElP
Tik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5S
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdU
eXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAg
ICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRB
cnJheUNoZWNrcyk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEFzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
R2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToK
KyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojps
b2FkNjROb25OZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0
dGVyKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50
T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxM
SU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGlt
ZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXJDb250ZW50czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVV
bmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyOjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6
OnNsaWNlV2l0aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50
cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXJWaWV3OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6
Onplcm9SYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0
ZU9mZnNldEFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6
RGF0YVZpZXc6OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAg
ICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3Ry
dWN0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVu
Z3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5k
V2FzdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlT
aGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlND
OjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGVV
bmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6c2V0KToKKyAgICAgICAg
KEpTQzo6SlNEYXRhVmlldzo6c2V0SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmll
dy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OmdldERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3Rvcik6CisgICAgICAgIChKU0M6
OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRl
UmFuZ2UpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0V2l0aFNwZWNpZmljVHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnRyeVNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRl
eFF1aWNrbHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3Rv
cmFnZUluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
T3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpnZXRCeVZhbFdpdGhJbmRleCk6CisgICAgICAg
ICogd2FzbS9XYXNtUGFnZUNvdW50Lmg6CisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCZWdpbiBtaWdyYXRpb24gZnJv
bSBXVEY6OlZhcmlhbnQgdG8gc3RkOjp2YXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAppbmRleCBk
Y2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgKaW5kZXggZDdhYTBiN2JjOWFjLi45M2ViM2JmZTIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBA
IC0yNjUsOSArMjY1LDkgQEAgcHVibGljOgogICAgIC8vIGluIGEgY2xhc3MgcmVxdWlyaW5nIGV4
cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZmZXJlbnRpYXRlCiAgICAgLy8gZnJv
bSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3NlcyB0byBtZW1vcnkgb3BlcmF0aW9u
cwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGljIFRydXN0ZWRJbW0gewotICAgICAg
ICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKCkg
eyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQq
IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cihjb25zdCB2
b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAg
ICAgICB9CkBAIC0yNzgsMjEgKzI3OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAg
ICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKHN0ZDo6bnVsbHB0cl90KQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKHNpemVf
dCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoc2l6ZV90
IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZh
bHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIo
KQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRwdHIoKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV92YWx1ZSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAgICAgIGNvbnN0ZXhwciB2b2lkKiBh
c1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PHZvaWQqPiht
X3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzAyLDEyICszMDIsMTIgQEAgcHVibGljOgogCiAgICAg
c3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0cgogICAgIHsKLSAgICAgICAgZXhw
bGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4
cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tUHRy
KHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUcnVzdGVkSW1tUHRyIGFz
VHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBUcnVz
dGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKIAog
ICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTMyNSw3ICszMjUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tMzIoVHJ1
c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tMzIo
VHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkp
CiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzM2LDE3ICszMzYsMTcgQEAgcHVibGljOgogCiAK
ICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7Ci0gICAgICAgIGV4cGxp
Y2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW0z
MihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIodmFsdWUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBsaWNpdCBJbW0z
MihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKFRy
dXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIocHRyKQogICAgICAg
ICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25zdCBUcnVzdGVkSW1tMzImIGFzVHJ1
c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIGNv
bnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsg
fQogCiAgICAgfTsKICAgICAKQEAgLTM1NywxNSArMzU3LDE1IEBAIHB1YmxpYzoKICAgICAvLyAo
d2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZyb20gYWNjaWRlbnRhbGx5IGJlaW5n
IHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMuCiAgICAgc3RydWN0IFRydXN0ZWRJ
bW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tNjQoKSB7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAgICAKLSAgICAgICAgZXhwbGljaXQg
VHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkK
ICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8
IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0
ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoVHJ1c3RlZElt
bVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAg
IHsKICAgICAgICAgfQpAQCAtMzc2LDE3ICszNzYsMTcgQEAgcHVibGljOgogCiAgICAgc3RydWN0
IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7Ci0gICAgICAgIGV4cGxpY2l0IElt
bTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChpbnQ2
NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQodmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQp
Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBs
aWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRy
dXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNv
bnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBjb25zdCB7IHJldHVybiAqdGhpczsg
fQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgp
IGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAgICAKICAgICAvLyBTZWN0aW9uIDI6
IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMKQEAgLTEwNTMsOSArMTA1Myw5IEBA
IHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgICAg
IHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAgIHN0YXRpYyBib29sIGNhbkJsaW5k
KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNp
ZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2hvdWxkQmxpbmRG
b3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBjbGFzcyBD
YWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQgY2xhc3MgRGF0YUxhYmVsUHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmlu
ZGV4IDAxZTQ4YTExYmJiMC4uNDEzMjMwMmY4YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMzksNiArMTM5LDkgQEAgcHVi
bGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoTXVsMzI7CiAjaWYgQ1BV
KEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKE1JUFMpIHx8
IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoUHRyOwor
I2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJy
YW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hTdWIz
MjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmxzaGlmdDMyOwpAQCAtMTQ2MCw2ICsx
NDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGFuZDY0KGltbS5h
c1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAmJiAhQ1BVKEFSTTY0KQpAQCAtMTcy
Nyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3RvcmU2NChpbW0uYXNUcnVzdGVk
SW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQp
CiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQogICAgIHsK
QEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihj
b25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsKICAgICB9CiAKKyNpZiBDUFUoWDg2
XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMgZG9uJ3QgbmVlZCBibGluZGluZywg
YW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiwgUmVnaXN0ZXJJRCwgSW1tNjQp
IGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUuCisgICAgLy8gV2UgY2Fubm90IHB1
dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJlY2F1c2UgaXQgdXNlcyBzaG91bGRC
bGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwgZXRjLi4gd2hpY2ggYXJlIG9ubHkg
ZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tNjQgcmlnaHQpCisgICAgeworICAg
ICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAoaGF2ZVNjcmF0
Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBsb2FkUm90YXRpb25C
bGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50KHJpZ2h0KSwgc2NyYXRjaFJlZ2lz
dGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFi
bGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAgLy8gcGxhY2UgYSByYW5kb20gbnVt
YmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYg
MzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQorICAgICAgICAgICAgICAgIG5vcCgp
OworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3Rl
ZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0
LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkK
KwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA1Zjk4ZmY5ZTMzN2MuLjg1NzQw
NTVjOWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjps
cjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRo
ZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3Qg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBz
aG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
Pj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZm
ZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAg
Ly8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYgKzMzMDUsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKKyAgICBKdW1w
IGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02
NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdo
dC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMjQ3MGMxMTk2NjFiLi4wNzRhMzk4Zjg4M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoMzIoQWRk
cmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0aDY0KEFkZHJlc3MgbGVuZ3RoLCBS
ZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgpCiAgICAgewogICAgICAgICBhdXRv
IGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsK
LSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsKKyAgICAgICAgbG9hZDY0KGxlbmd0
aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNoID0gdmFsaWRhdGVBdXRoID8gZ2V0
Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkgOiBJbnZhbGlkR1BSUmVn
OyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIsIHRhcmdldCwgdmFsaWRhdGVBdXRo
LCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggZTY2MTAwYmEyZTQ3Li4z
ZmFiYzRkODkxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRlclJlZ2lzdGVy
ID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGZy
YW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgCi0gICAgc3RhdGlj
IGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxk
QmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4
MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMg
Ym9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRp
b25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKaW5kZXggMzk3OTkyYTNhNzUwLi5mYzNlOTA2NjRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTQ4Niw3ICs0ODYsNiBAQCBi
b29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21B
Y2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgogICAgIGNhc2UgQ3Vz
dG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgY2FzZSBJ
bkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgpAQCAt
NTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QK
ICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3RvcmU6CiAgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2
NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxlbmd0aC9UeXBlZEFycmF5Qnl0ZU9m
ZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIgcmVzdWx0IGFzIGEgZG91YmxlCisg
ICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTE4NCwxMiArMTE4NSwxNyBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogCiAgICAgICAgIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKLSAgICAgICAgCiAgICAgICAgIGppdC5s
b2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJy
YW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpKTsKIAotICAgICAgICBq
aXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdGF0ZS5mYWlsQW5k
UmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mg
YWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRv
UHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAg
ICAgLy8gVGhlIGxlbmd0aCBpcyBhIFVDUFVSZWdpc3Rlciwgc28gZWl0aGVyIDMyIG9yIDY0IGJp
dHMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0
Y2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgc2NyYXRj
aEdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7CisjZWxzZQorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVw
YXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9w
ZXJ0eUdQUiwgYWRkcmVzc09mTGVuZ3RoKSk7CisjZW5kaWYKIAogICAgICAgICBhdXRvIGFsbG9j
YXRvciA9IHN0YXRlLm1ha2VEZWZhdWx0U2NyYXRjaEFsbG9jYXRvcihzY3JhdGNoR1BSKTsKICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigp
OwpAQCAtMTE5Nyw5ICsxMjAzLDEzIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3Vh
cmQoCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJl
c2VydmVkU3RhdGUgPSBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmco
CiAgICAgICAgICAgICBqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1Nw
YWNlOjpOb0V4dHJhU3BhY2UpOwogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5s
b2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgIGppdC5s
b2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgogICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0
aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNo
R1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRy
KHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAg
ICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CkBAIC0xNTk1LDkgKzE2MDUs
MTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgIHJl
YWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9m
aWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCi0gICAgICAgIHN0YXRl
LmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9y
RXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQuc2lnbkV4
dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIENQVShSRUdJU1RFUjY0
KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIg
b3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWls
QW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFs
LCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZh
aWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1
dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hH
UFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3Jh
dGNoR1BSKCk7CkBAIC0xNjA1LDkgKzE2MjAsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRT
dGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5
UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRy
YVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAg
ICAgaml0LmxvYWQ2NChhZGRyZXNzT2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAg
ICAgaml0LmxvYWQzMihhZGRyZXNzT2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2VuZGlmCiAgICAg
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgaml0LmNh
Z2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2NyYXRjaDJHUFIs
IHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsIGZhbHNlKTsKLQogICAgICAgICBqaXQuc2lnbkV4dGVu
ZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBpZiAoaXNJbnQodHlw
ZSkpIHsKICAgICAgICAgICAgIGlmIChpc0NsYW1wZWQodHlwZSkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAppbmRleCA2OTE2Nzk0ODQzYjAuLmJl
ZTdhOWZjZGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZTsKIAog
Ly8gVGhpcyBpcyBhIGJpdGZpZWxkIHdoZXJlIGVhY2ggYml0IHJlcHJlc2VudHMgYW4gdHlwZSBv
ZiBhcnJheSBhY2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4uCiAvLyBUaGVyZSBhcmUgMTkgaW5kZXhp
bmcgdHlwZXMgdGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMuCi0vLyBUaGVyZSBhcmUgOSB0eXBlZCBh
cnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYgdG8gMjUuCisvLyBUaGVyZSBhcmUgMTEgdHlw
ZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2LTIwIGFuZCAyNi0zMS4KIHR5cGVkZWYg
dW5zaWduZWQgQXJyYXlNb2RlczsKIAogLy8gVGhlIHBvc3NpYmxlIEluZGV4aW5nVHlwZXMgYXJl
IGxpbWl0ZWQgd2l0aGluICgwIC0gMTYsIDIxLCAyMywgMjUpLgpAQCAtMjA1LDcgKzIwNSwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICwgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nKGZhbHNlKQog
ICAgIHsKICAgICB9Ci0gICAgCisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBBY2Nlc3Np
bmcgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9yZSBjb21wbGlj
YXRlZCBhcyB3ZSBjYW4ndCBmb3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50MzJfdC4KKyAg
ICAvLyBXZSBvbmx5IHN1cHBvcnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24gNjQtYml0IHBs
YXRmb3Jtcy4KKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFycmF5
TWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgdm9p
ZCBzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRy
dWU7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KKyNlbHNlCisg
ICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBTdHJ1Y3R1cmVJRCogYWRkcmVz
c09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7
IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyByZXR1cm4gJm1fb2Jz
ZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7
IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjQ0LDYgKzI1NCw5IEBAIHByaXZhdGU6
CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEIHsgMCB9OwogICAgIGJvb2wg
bV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJs
b2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVy
ZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBT
aW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAo
dHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVh
bnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91bmRz
IHsgZmFsc2UgfTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5
cGVkQXJyYXkgeyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4
ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6
IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcg
KzI2NiwxMyBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAog
Y2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQ
cm9maWxlKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkK
KyAgICAgICAgOiBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIENQVShS
RUdJU1RFUjY0KQorICAgICAgICAsIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkoZmFsc2UpCisjZW5k
aWYKKyAgICB7CisgICAgfQogCiAgICAgdm9pZCB1cGRhdGUoQXJyYXlQcm9maWxlJiBhcnJheVBy
b2ZpbGUpCiAgICAgewpAQCAtMjgwLDYgKzI5OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBh
cnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBhcnJh
eVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7CisKKyNpZiBDUFUoUkVHSVNU
RVI2NCkKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAgICAgICAgICBh
cnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2ZpbGUubV9tYXlC
ZUxhcmdlVHlwZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5MCw3ICsz
MTYsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVzIDogMTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVk
QXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5rZWRBcnJh
eVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApp
bmRleCAyYjJmNWUwMzAxOWYuLjViYmY2M2M3MmQzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAt
MzQ2Myw3ICszNDYzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIEdldEFy
cmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50
cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5t
X3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7CisgICAgICAg
IGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkpKSB7CiAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0NzEsNiArMzQ3MSwxNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3
ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlmICh2aWV3
KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgo
KSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9k
ZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzk2LDggKzM4MDcs
OCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdl
dEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKICAgICAgICAg
aWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZz
ZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAgICBpZiAoYnl0
ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGJ5dGVP
ZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAo
Ynl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MDYsNiArMzgxNywxOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxVQ1BVUmVnaXN0ZXI+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3Vy
cmVudGx5KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYg
ISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmlu
aXRlKCkpIHsKQEAgLTQxMDksNiArNDEzMywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjogeworICAgICAg
ICAvLyBTZWUgdGhlIENoZWNrSW5Cb3VuZHMgY2FzZSwgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRl
ciB3aGF0IHdlIHB1dCBoZXJlLgorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwg
U3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1By
aXZhdGVCcmFuZDoKICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CmluZGV4IDZlMjc1MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAK
QEAgLTMyNSw2ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVz
Y2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMs
IHNvIHNob3VsZCBub3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAg
ICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3By
ZWFkOiB7CiAgICAgICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+
Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FC
YWRUaW1lV2F0Y2hwb2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludChub2RlKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAK
aW5kZXggNmU0ZmU5YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJy
YXlNb2RlOjpyZWZpbmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhp
dCwgYWN0aW9uKCkpOwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihp
bmRleCkpCisgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdl
VHlwZWRBcnJheSgpKQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBh
Y3Rpb24oKSk7CiAgICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4
b3RpYyBvYmplY3QgYmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0y
OTQsNiArMjk0LDggQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJy
YXk6OkZsb2F0NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNh
c2UgQXJyYXk6OkJpZ1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkg
d2Ugb25seSBwcmVzZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5
VmFsIGFuZCBub3QgR2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBQdXRCeVZhbCkgewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRP
ZkJvdW5kcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXgg
YTAyNmFhZDE4OTNiLi5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcnJheU1vZGUuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5
dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29u
dmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6
OldyaXRlOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsK
ICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFy
cmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAg
dS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0
ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0g
YWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsK
ICAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFz
cyBhcnJheUNsYXNzLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBA
IHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRz
OwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1
LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5
cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBl
IHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3Vs
YXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9u
KQorICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
cywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252
ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9
IGZhbHNlKQogICAgIHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1
LmFzQnl0ZXMuYXJyYXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVj
dWxhdGlvbiA9IHNwZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNv
bnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUu
YXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAg
IH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFy
cmF5Q2xhc3MsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0
aW9uKQpAQCAtMTYzLDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1
bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9
IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAg
IHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBBcnJheTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5
cGU+KHUuYXNCeXRlcy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBB
cnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxBcnJheTo6U3BlY3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJh
eTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OkNvbnZlcnNpb24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rp
b24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5h
c0J5dGVzLmFjdGlvbik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3Qg
eyByZXR1cm4gdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5z
aWduZWQgYXNXb3JkKCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwz
NSArMTg1LDUwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBm
cm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJy
YXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5
cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1v
ZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlv
bigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0
aFNwZWN1bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0
aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0
eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCks
IG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0
aEFycmF5Q2xhc3MoQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1v
ZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxh
dGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9u
KCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUg
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2Nr
ZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFy
cmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1v
ZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24o
KSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhB
cnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xh
c3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJl
TGFyZ2VUeXBlZEFycmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9u
IG15U3BlY3VsYXRpb247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNs
YXNzLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkpOworICAgIH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRp
b25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9m
aWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZl
KQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAg
ICAgICAgIHJldHVybiBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2Zp
bGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0g
QXJyYXk6OlRvSG9sZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgICAgIHJldHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJy
YXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3
aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNs
YXNzIG15QXJyYXlDbGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAg
ICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBi
ZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVz
IGFycmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIy
MSwyMyArMjQyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBB
cnJheTo6QXJyYXk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0g
YXJyYXlDbGFzcygpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15
QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlw
ZSB0eXBlKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJh
eUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0K
LSAgICAKLSAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBh
cnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9
Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0
eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZl
cnNpb24sIGFjdGlvbigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRp
b24gPSBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwor
CisgICAgICAgIGJvb2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVk
QXJyYXkobG9ja2VyKTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxh
dGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxh
cmdlVHlwZWRBcnJheSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgdW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01
MjYsNyArNTM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5
cGUoKQogICAgICAgICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQog
ICAgICAgICAgICAgJiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAg
ICAgICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAg
ICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwog
ICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikg
Y29uc3QKQEAgLTU3OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBh
cnJheUNsYXNzOwogICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAg
IHVpbnQ4X3QgY29udmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7
CisgICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1h
eUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNp
Z25lZCBhc1dvcmQ7CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLjAzNGJkZDY2MTUxZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTM4MDcsOCArMzgwNywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxs
KE5vZGUqIGNhbGxUYXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3Qg
R2V0QnlWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKQogeworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHN0YXRpY19hc3Nl
cnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5z
aWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAgICAg
ICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIUNQVShSRUdJU1RFUjY0
KQorICAgICAgICBpZiAod2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAog
ICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJl
Z2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzgyMiwyNiAr
MzgzMSwzMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3Bl
cmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFy
cmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIE5vZGUq
IGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2Rl
KGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBO
b2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPyBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MiA6IEdldEFycmF5TGVuZ3RoOworICAgICAgICBOb2RlKiBsZW5n
dGhOb2RlID0gYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5
OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKICAgICAgICAgLy8gT3VyIEFycmF5TW9kZSBz
aG91bGRuJ3QgY2F1c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0byBleGl0
IHdpdGhvdXQgZWZmZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBhZGRU
b0dyYXBoKEV4aXRPSyk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAgICAgICAg
IHNldChyZXN1bHQsIGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAotICAgICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0
eXBlZCBhcnJheXMgd2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAvLyB0aGF0
IG92ZXJmbG93cyBpbnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25zdGFudChq
c051bWJlcihsb2dTaXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhC
aXRMU2hpZnQsIGxlbmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBjYW5ub3Qg
dXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUgYSBieXRl
TGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6ZSA9IGpz
Q29uc3RhbnQoanNOdW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoQXJpdGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7
CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA9ICFpc0lu
dDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpOworI2lmICFDUFUoUkVH
SVNURVI2NCkKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tz
KCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVT
ZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4
NTMsMTMgKzM4NjYsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFT
U0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAg
ICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2Rl
KGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAg
Tm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0KHJlc3Vs
dCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFk
KS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9
CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAgICAgIGJv
b2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1
bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKFJFR0lTVEVSNjQp
CisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsK
IAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgp
LmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3
ICszODkwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9w
ZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChh
cnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQo
cmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlN
b2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAg
ICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
OworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFy
cmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uOWFkNWMyNzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAg
ICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFy
cmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAg
ICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjM5LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAg
IGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBj
YXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBA
IC0xMzM3LDYgKzEzMzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVm
KEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+
Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICByZWFkKE1pc2NGaWVsZHMp
OworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2Ms
IE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICBy
ZXR1cm47CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0
LDYgKzE0NTEsMTQgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Y29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0K
IAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlN
b2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9k
ZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVs
ZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1v
ZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRj
MTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyAr
OTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5s
aW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUy
KCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRl
eCBiODgyNWFjYWUzNGUuLmZhMTdiZjExNDE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0
T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAw
NzBhNDg1NDdhOTcuLjQwMjg0Y2ZhMjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3Vu
ZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUy
OgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAg
IGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk3LDEwICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0
U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmlu
Z0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAg
ICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4uN2Q0OTBhM2IyNDc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1v
ZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2Rl
KCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUo
KS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBo
Lmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1
c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRo
aXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlW
YWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1v
ZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxL
bm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6Cisg
ICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJy
YXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBj
YXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNl
bGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7
CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBp
c0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAg
ICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAg
ICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAg
ICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAg
ICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
T3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcxNywxMiArMTczMSwxNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAg
d2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5v
ZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVz
dEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxNDksNiArMjE2Nywy
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJheU1vZGUg
YXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUt
PmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVk
VHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAg
ICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNo
aWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdlPEtub3du
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAg
ICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dDogewogICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4Miw2ICsyMjE1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEFzc2VydEluQm91
bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAg
IGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CkBAIC00MDk2
LDE0ICs0MTMwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGls
ZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRB
cnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1v
ZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAg
IHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDgg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBp
cyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcg
Y29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhl
ciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3
aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQg
aWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGlu
IG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBt
YXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2Vz
IG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlz
IGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1h
eSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRleCAyYmI5ZDRiZWE4MDAuLjA2NjFl
NWI4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5
dGVPZmZzZXRMb2MiKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0
SW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3Ro
SW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUxlbmd0aEludDUyTG9jIik7
CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgUHJvdG90eXBlTG9jOgogICAgICAgICBvdXQu
cHJpbnQoIlByb3RvdHlwZUxvYyIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAppbmRleCAyNjkxNzFjYjM0MWQuLjQwZmI3MTY3
MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBA
IC02Nyw2ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0ZXJMb2MsCiAgICAg
U3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAorICAgIFR5cGVkQXJy
YXlCeXRlT2Zmc2V0SW50NTJMb2MsCisgICAgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jLAogICAg
IFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxvYWRMb2MsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MS4uNmRlZGEwMzdlZTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGlt
aXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTMzNSw3ICsxMzM1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vbk5lZ2F0
aXZlICYmIGxlc3NUaGFuTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRl
Tm9kZShibG9jay0+YXQobm9kZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRz
Q2hlY2tFbGltaW5hdGlvbigpKSAmJiBub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5k
ZXgsIFNwZWNOb25lLCBBc3NlcnRJbkJvdW5kcywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEo
KSwgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UganVzdCBu
ZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYSB2YWx1ZS1wcm9kdWNpbmcgbm9kZS4KICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTlj
Li4wYmE3YjlmZjNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk2
NSw2ICsxOTY1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAg
Y2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAg
ICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgog
CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1
cm4gMjsKIAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0
SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZh
bERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5YTkw
YTRjZmRhYzguLjk5NzEzNmNjYTU3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMjYxLDggKzI2MSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKE11bHRpRGVsZXRlQnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAg
LyogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBUeXBlZEFycmF5cywgYXMgdGhleSBhcmUgdGhl
IG9ubHkgb25lcyB0aGF0IGNhbiBoYXZlIGEgbGVuZ3RoIHRoYXQgZG9lcyBub3QgZml0IGluIDMy
IGJpdHMuICovIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJl
c3VsdEludDUyKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIp
IFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBc
CisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SW50
NTIpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tp
cFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyODksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRK
UykgXAorICAgIG1hY3JvKENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2Vz
IGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAg
ICAgbWFjcm8oQ2hlY2tKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNh
bWUgYXMganNDYXN0IGJ1dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAq
L1wKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1
MDdmMWU4MGFjMC4uYjNmMmJiN2E5MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1Zh
bHVlCiAgICAgfQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+
Y2FuU2V0SW5kZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+
c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50
cnlTZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRl
eChvYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRC
eVZhbENlbGxTdHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhT
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIENQVVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNoYXIq
IG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBp
cyBuZWdhdGl2ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisK
KyAgICBVQ1BVUmVnaXN0ZXIgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVy
PihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9y
LCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdp
c2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNp
emUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxs
KiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2
ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5MjQs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50
OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51
bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVS
ZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTE5NzIsNyArMTk3Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4
Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xh
bXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIwLDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQz
MkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51
bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Q1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CkBAIC0yMDM2LDcgKzIwMzYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2
ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTIs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxv
YXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Jp
Z0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjhm
OTZlYzBiMDdlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
QEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1
Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0
ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0
aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJf
dCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFy
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBD
UFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQz
Ml90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdV
aW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
Q1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsx
MzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgog
ICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcApp
bmRleCBlM2EyMzlhMzNlMzAuLjdmYWE1MjY1OGYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwxNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVk
QXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgs
IG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJh
eU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3Ro
LCBLbm93bkludDMyVXNlKTsKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUo
KS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpIHx8IG1fZ3JhcGguaGFzRXhpdFNpdGUobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBs
ZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQ1MkFueSwgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIs
IG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+
YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEludDUyUmVw
VXNlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUt
Pm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9k
ZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzNywxMiArMTQzLDIzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMy
T25seSwgb3AsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJy
YXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9y
YWdlKTsKLSAgICAgICAgTm9kZSogY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJv
dW5kcywgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtu
b3duSW50MzJVc2UpKTsKKyAgICAgICAgTm9kZSogY2hlY2tJbkJvdW5kczsKKyAgICAgICAgaWYg
KChvcCA9PSBHZXRBcnJheUxlbmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBPdmVyZmxvdykpKSB7CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJB
bnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5u
b2RlKCksIEtub3duQ2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgY2hlY2tJbkJvdW5k
cyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5k
ZXgsIFNwZWNJbnQ1MkFueSwgQ2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAg
ICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNlKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwg
bV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2Rl
KCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsK
KyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRz
LCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtu
b3duSW50MzJVc2UpKTsKKyAgICAgICAgfQorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGph
Y2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlw
ZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdmNTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBib29sIGlnbm8KICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNz
ZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENo
ZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQ
cm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAg
Y2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNDc5NjM4NDQ5NDRhLi5kOTllNzhmYWNkMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
MjM4LDI4ICszMjM4LDQyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShK
SVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29t
cGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVy
OjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUq
IG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KQogewogICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVy
biBKSVRDb21waWxlcjo6SnVtcCgpOwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9q
aXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZSht
X2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7
CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3Ro
KCk7CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAg
ICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7
Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+
YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25z
dGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJl
dHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBt
X2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgIHJl
dHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNl
CiAgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3Ro
KSk7CisjZW5kaWYKICAgICB9CisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBtX2ppdC5zaWdu
RXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJy
YW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BS
LAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNo
MzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJl
ZyBpbmRleEdQUikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hl
Y2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNj
cmF0Y2hHUFIpCiB7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFy
cmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVy
OjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIs
IGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCks
IG51bGxwdHIsIGp1bXApOwpAQCAtMzM4MCwxMCArMzM5NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJh
eVR5cGUgdAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3Bl
cnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVy
YW5kIHN0b3JhZ2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3By
KCk7CiAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVn
IHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wOwog
ICAgIEZQUlJlZyByZXN1bHRGUFIgPSBJbnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDEzLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5v
ZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3Jt
YXQpID0gcHJlZml4KERhdGFGb3JtYXRJbnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3Jt
YXQgPT0gRGF0YUZvcm1hdEpTOwogCi0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2Rl
LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhu
b2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRU
eXBlZEFycmF5KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIo
KSwgdHlwZSk7CiAgICAgY29uc3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBz
ZXRJbnRUeXBlZEFycmF5TG9hZFJlc3VsdChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVj
dWxhdGUsIHNob3VsZEJveCwgcmVzdWx0RlBSKTsKQEAgLTM1NTUsNiArMzU3MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJh
c2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBT
dG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMykpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzdG9y
YWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9qaXQu
Z3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKQEAgLTM1ODcsNyArMzYwNCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJh
c2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIg
IT0gcHJvcGVydHkpOwogICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NFUlQo
dmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3Vu
ZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsK
KyAgICBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0
T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAgc3dp
dGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgMToKQEAgLTM2NDUsMTAgKzM2NjIs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJy
YXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMikpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BS
UmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3Bl
cnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzOwogICAgIERhdGFGb3JtYXQgZm9ybWF0OwpAQCAtMzY1Niw3ICszNjc1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSog
bm9kZSwgVHlwZWRBcnJheVR5cGUKIAogICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJheUJv
dW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJh
eUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsKICAg
ICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBtX2pp
dC5sb2FkRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0
eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjkwLDEw
ICszNzA5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0
VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVEb3Vi
bGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBSUmVn
IHZhbHVlRlBSID0gdmFsdWVPcC5mcHIoKTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0
Y2guZnByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0
T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG91dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBw
cm9wZXJ0eSwgc2NyYXRjaEdQUik7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBl
KSkgewogICAgIGNhc2UgNDogewpAQCAtNzk2Nyw3ICs3OTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFn
ZVJlZywgYm8KIHsKICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFS
TTY0RSkKLSAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
c3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxl
bmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAg
ICAgICAgIFVOVVNFRF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0o
YmFzZVJlZyk7CkBAIC04MDM5LDkgKzgwNjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKICAg
ICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVj
dG9yR1BSKTsKLSAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQodmVj
dG9yR1BSICE9IGRhdGFHUFIpOwogCiAgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQ
UjsKIApAQCAtODA4Myw2ICs4MTAxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGluaygm
bV9qaXQpOwogI2VuZGlmCiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBBSSBwcm9taXNl
cyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQz
Miwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRpb25D
aGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJSZXN1
bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiArODM3MiwxOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNW
YWx1ZVNvdXJjZSgpLCBudWxscHRyLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJv
dmUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVz
dWx0R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTE5LDEwICsx
MTE0OCwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhT
aXplKE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJy
YXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNv
bmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgCisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBUaGUgb3BlcmF0
aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGlu
dDY0X3Qgb24gNjQgYml0IHBsYXRmb3JtcworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXpl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
KyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIg
PSBzY3JhdGNoLmdwcigpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNj
cmF0Y2hHUFIpOworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUs
IHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UKICAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVn
IHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNp
emVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOwor
I2VuZGlmCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNp
emVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsK
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTM2LDggKzExMTc5LDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSog
bm9kZSkKICAgICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHN0b3Jh
Z2VHUFIpOwogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVz
dGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2Ug
YXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlz
IGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4o
SlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBz
aXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7
CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwogICAg
IG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlw
ZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkgKzExMjQzLDE1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBtX2pp
dC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkp
OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVH
UFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigK
ICAgICAgICAgc2l6ZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAg
bV9qaXQuc3RvcmUzMigKICAgICAgICAgVHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAgLTE0MTY3LDYgKzE0MjIzLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQz
MlVzZToKICAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAg
ICAgYnJlYWs7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAg
ICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBi
cmVhazsKKyNlbmRpZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMDdiNTYzYjM0ODNhLi4zMzlm
NWQxNDdiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMzAwLDkgKzEzMDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51
bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7
CiAgICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVOZXdTeW1ib2woTm9kZSopOwotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdp
dGhTaXplSW5SZWdpc3RlcihOb2RlKiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUsIEdQUlJlZyBzaXplR1BSKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSopOwotICAgIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZU5l
d1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21w
aWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlv
bik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAg
ICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIENQVShSRUdJU1RFUjY0
KQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqKTsKKyNl
bmRpZgogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0MzEsMTAgKzE0MzgsMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUFyaXRoTWluTWF4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVDb25zdGFudFN0b3JhZ2VQb2ludGVyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRJbmRl
eGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9y
VHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4
R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRz
KE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQ
Uik7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFjaGVkSWZP
dXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1wIG91dE9m
Qm91bmRzKTsKLSAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOworICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNj
cmF0Y2hHUFIpOwogICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUq
KTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxP
bkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8
c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRG
b3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsK
ICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFy
cmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFG
b3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcg
KzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8v
IEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAx
NiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4g
aXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRl
SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAg
LTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwog
fTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGlu
IHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdp
dmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUy
IGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVT
dHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKaW5kZXggNmEwZjI1MjBlYTM3Li4yMmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAt
MjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGls
ZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21l
VHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5h
cnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAg
ICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJl
Zml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAg
ICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMy
LWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVE
ZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlw
ZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzOTgsNiArNDQwOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6
CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAg
Y2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBN
dWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNiMzkz
ZjUyNzVmNy4uMzEwZWRhMjJlMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
U3BpbGxSZWdpc3RlcnNNb2RlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNs
dWRlICJTdXBlclNhbXBsZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0yNjk0LDYgKzI2OTUsODQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5
cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2pp
dC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0
cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwor
CisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJh
eVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAg
IG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2Vy
dChNQVhfQVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sg
dGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOwor
ICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9k
ZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRh
KHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2
ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigp
OworCisgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wIGVtcHR5Qnl0ZU9mZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0
ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVj
dG9yKCkpLCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9
IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZElt
bVB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIGRhdGFHUFIpOworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdp
Z2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShi
YXNlR1BSLCB2ZWN0b3JHUFIpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5
QnVmZmVyR1BSKTsKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVy
OjpvZmZzZXRPZkRhdGEoKSksIGRhdGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQu
cmVtb3ZlQXJyYXlQdHJUYWcoZGF0YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihk
YXRhR1BSLCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0
Lmp1bXAoKTsKKworI2lmIENQVShBUk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7
CisjZW5kaWYKKyAgICBlbXB0eUJ5dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygm
bV9qaXQpOworI2lmICFDUFUoQVJNNjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6
Om51bGxWZWN0b3JQdHIoKSk7CisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYK
KworICAgIHN0cmljdEludDUyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5v
ZGUtPm9wKCk7CkBAIC0zNjQ0LDExICszNzIzLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgYmFzZUVkZ2UpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgaW5kZXgodGhpcywgaW5kZXhFZGdlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2g7
CiAKICAgICAgICAgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIGluZGV4R1BSID0gaW5k
ZXguZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5v
ZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVj
ayhub2RlLCBiYXNlR1BSLCBpbmRleEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIAogICAg
ICAgICBHUFJUZW1wb3JhcnkgYXJnc1syXTsKICAgICAgICAgCkBAIC00MzgxLDYgKzQ0NjEsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21w
aWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRU
eXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDog
ewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00
NDk5LDYgKzQ1ODMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjogeworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJl
YWs7CkBAIC01NTg2LDEwICs1Njc1LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3
RGF0YSgpOwogCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVS
ZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKICAgICAgICAgbV9qaXQuemVy
b0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXpl
ID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXpl
IC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsK
KyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAg
ICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkp
OwogCkBAIC01Nzg3LDEwICs1ODc4LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5lbXBsYWNlKHRo
aXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAgICAgICBHUFJSZWcgaXNMaXR0
bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVuZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJh
bmQtPmdwcigpIDogSW52YWxpZEdQUlJlZzsKIAorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91
dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMyKDApKSk7
CiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAg
ICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVk
SW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdz
KCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNjA0Miw2ICs2MTM1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9j
YWw6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6Cisg
ICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2Fz
ZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAg
LTI3OSwxMCArMjc5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZh
bDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAg
ICAgICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRl
eGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0z
NTksNiArMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgog
ICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdl
OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1v
dkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1
ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgY2FzZSBVcHNpbG9uOgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2Ug
Q2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVj
dDoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2Ux
NDU1NjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBj
YXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAg
ICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBT
dG9yZUJhcnJpZXI6CkBAIC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNz
ZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENo
ZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6
ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAg
IGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRC
eVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IDNhOGY1Y2ZjNzk1ZS4uZDFjZTIzNzQxNTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2lu
dGVycHJldGVyLmZvck5vZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcs
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAg
Y29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgor
ICAgICAgICAgICAgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBl
T2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIG1fb3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVm
dWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90
TnVsbCk7CiAKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwg
bV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6
bnVsbFZlY3RvclB0cigpKSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVj
dG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigp
KSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsK
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2
Niw3ICs0ODc3LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAg
ICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhp
KHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jl
c3VsdCgpOworICAgICAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBw
cm9taXNlIGhlcmUuCisgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxs
cHRyLCBtX291dC5hYm92ZShyZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0lu
dDMyKHJlc3VsdCkpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MigpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJp
Y3RJbnQ1MihyZXN1bHQpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldFByb3RvdHlwZU9m
KCkKQEAgLTUwNTQsOCArNTA3OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVk
QXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAg
ICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAg
IHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShsZW5n
dGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkp
KSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC01MDY0LDYgKzUwOTAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZv
aWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7
CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgo
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpA
QCAtNTEwOCw3ICs1MTQxLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIg
dmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAogICAg
ICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGls
ZUNoZWNrSW5Cb3VuZHNJbnQ1MigpCisgICAgeworICAgICAgICAvLyBTaWduLWV4dGVuZGVkIHRv
IGFsc28gY2F0Y2ggbmVnYXRpdmUgaW5kaWNlcworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291
dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgTFZh
bHVlIGxlbmd0aCA9IGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBz
cGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVx
dWFsKGluZGV4LCBsZW5ndGgpKTsKKworICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0
byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBubyB1c2VyIG9mIHVzIHNob3VsZAorICAgICAgICAvLyBk
ZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50
YWluIHRoYXQKKyAgICAgICAgLy8gd2UgZG9taW5hdGUgdGhlbS4KKyAgICB9CisKICAgICBMVmFs
dWUgY29tcGlsZUdldEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwpAQCAtNjAwOCwxMSArNjA1MywxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAg
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2goCi0gICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxv
d0ludDMyKGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZC
b3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAg
ICAgICAgICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92ZU9y
RXF1YWwobV9vdXQuc2lnbkV4dDMyVG82NChpbmRleCksIGxvd1N0cmljdEludDUyKGNoaWxkNSkp
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbiA9IG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwg
bG93SW50MzIoY2hpbGQ1KSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzT3V0T2ZCb3VuZHNDb25kaXRpb24sIHVuc3VyZShpc091dE9m
Qm91bmRzKSwgdW5zdXJlKGlzSW5Cb3VuZHMpKTsKKwogICAgICAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGlzT3V0T2ZCb3Vu
ZHMpOwogICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZSh2YWx1ZVRvU3RvcmUsIHBvaW50
ZXIsIHN0b3JlVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKQEAgLTgxNjksOTUgKzgyMTksMTggQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBJbnQzMlVzZTogewogICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUg
c2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHNp
emUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAot
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
LSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1f
b3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAotICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNB
cnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHko
c2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nh
c2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1f
b3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1l
bnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5
cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJp
dEFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25z
dEludFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0
aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
ICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBM
VmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3Rv
cmFnZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAg
bV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIo
MykpKSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAg
bV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0
cihzaXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9
IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVu
dGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0
aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29t
ZUxhdGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJh
dG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIo
KSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRy
KHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQot
I2VuZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQu
YW5jaG9yKHN0b3JhZ2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0g
bnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUg
VFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBu
YW1lOiBcCi0gICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8
SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsg
XAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJS
QVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRl
ZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3Ogot
ICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZp
ZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFs
dWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0
LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X2xlbmd0aCk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFz
dFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bW9kZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0
VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAg
ICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAg
ICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0
b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAg
ICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
ZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAg
ICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAg
ICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0
aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9u
c1sxXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5k
aXJlY3RHUFIoKSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBz
dG9yYWdlVmFsdWUpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25v
ZGUtPmNoaWxkMSgpKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlw
ZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRB
cnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODI3Nyw3ICs4MjUwLDEw
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAg
IAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5
cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFz
aWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFz
aWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAg
IG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0
LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAg
ICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2Us
IHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhl
IGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3Rh
dGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6
ZUxpbWl0KSk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0
LnNobChzaXplNjRCaXRzLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJy
YXlUeXBlKSkpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkg
eworICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAg
bV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAg
ICB9CisKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5w
cmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAg
ICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2Fz
ZSk7CisKKyAgICAgICAgc3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAg
ICAgICBtX291dC5pbnQzMlplcm8sCisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291
dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9v
dXQuaW50NjRaZXJvLAorICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7
CisKKyNpZiBDUFUoQVJNNjRFKQorICAgICAgICB7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFs
dWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAg
ICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6
VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+
c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFd
LmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0
cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2Up
OworCisgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBz
d2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShu
YW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVz
dWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9v
dXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Rk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZ
X1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBU
eXBlRGF0YVZpZXc6CisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVj
dDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0
cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZh
c3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAg
ICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1f
b3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7
CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwg
bm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
KyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAg
ICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0
cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVh
dGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3
VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5k
aXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQ
UigpLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZh
bHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKQEAgLTE0NjU2LDYgKzE0NzIyLDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0K
IAorICAgIC8vIGJhc2UgYW5kIHZhbHVlIGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAz
Mi1iaXRzCisgICAgLy8gc3RvcmVzIHZhbHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVu
IGJhc2UrYmVnaW4qOCBhbmQgYmFzZStlbmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUg
YmFzZSwgTFZhbHVlIGJlZ2luLCBMVmFsdWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3Ry
YWN0SGVhcCYgaGVhcCkKICAgICB7CiAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xp
bWl0ID0gMTA7CkBAIC0xNTU5MSw3ICsxNTY1OSw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0
YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1
ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFW
aWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBzcGVjdWxh
dGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgs
IG1fb3V0LmNvbnN0SW50MzIoMCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lmxv
YWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0
aCk7CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4
KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0No
ZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVT
aXplIC0gMSkpOwpAQCAtMTU3MzQsNyArMTU4MDMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIERh
dGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgc3BlY3Vs
YXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4
LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5s
b2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpOwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRl
eCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9D
aGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRl
U2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3MzA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0
byBkb1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02
NEUpCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAg
ICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9v
dXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAg
TFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9h
ZEluc3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRl
ciBwb2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMy
Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0
dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUo
TFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChi
YXNlLCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAg
TFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDI1MjBmOGNjNDQ1Ni4uODcyMzAyMmU5
YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC04MywyMyArODMsMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpl
bWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3
aXRjaCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6
IHsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQ
Uiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBq
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94
SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2Vl
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxl
bmd0aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJl
KCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBDUFUoUkVHSVNU
RVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5i
YXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsK
KyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkKKyAgICAgICAgICAgIGppdC5sc2hp
ZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAg
ICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0
YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHZhbHVlR1BSKTsKLQogICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKSB7
Ci0gICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3ZSBUeXBl
ZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgot
ICAgICAgICAgICAgaml0LmxzaGlmdDMyKHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50U2l6ZSh0
eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBo
ZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0
ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KKyAgICAgICAgICAgIGppdC5sc2hpZnQz
MihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAgICAgICAg
IH0KLQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYK
ICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMw
LDggKzEzOSwxMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5z
aWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQubW92ZShU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBkb25l
LmxpbmsoJmppdCk7Ci0gICAgICAgIAorCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGpp
dC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNj
cmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJl
Z3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4
IDRhNWMwODBjMDYwYy4uZmFjOGUwYWM2NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpT
VmFsdWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2ts
eShpLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2
bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5
KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAg
ICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MiwyMSArMjM0MCwy
MiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigp
KSB7Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAg
ICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1
ZSkpIHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0
SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0
cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAg
IGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRP
ZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAg
ICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAg
ICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShp
KTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhR
dWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKLSAg
ICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3Vv
dXMgJiYgaSA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVy
Zmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGlu
Z1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzCisgICAgICAgICAgICAgICAgJiYgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkp
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdl
LCBJbnQzMiwgYW5kIG1heWJlIERvdWJsZToKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCiAgICAgICAgICAgICAgICAgYXV0
byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwpAQCAtMjM3Miw4ICsy
MzcxLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGlmIChpID49IDApCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGds
b2JhbE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYg
YmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxl
LT5zZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNDFjNzFiNjAwNDRlLi4zYWMyZjAxMGM0
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVB
c21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsxNDksMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQklH
SU5UMzIgMAogI2VuZGlmCiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgT0ZGTElORV9B
U01fUkVHSVNURVI2NCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9SRUdJU1RFUjY0IDAK
KyNlbmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVT
UzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCA1NjgxMzc3YmI5ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3LDggKzEwNDcs
OCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5z
ZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgp
KSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
LSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBp
ZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVBy
b2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJv
b2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0ICsxMTcwLDEz
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkp
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92
YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3Ry
aWN0KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
OwogICAgIAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlw
dC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsK
ICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3Qt
PmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGlmICghb2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRh
dGEubV9hcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RN
b2RlKTsKICAgICAgICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjQy
MWE3ZmE0MTBlLi5mYzE2ZWViNGVkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYg
SlNWQUxVRTY0CiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhw
ciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVy
CiBlbmQKIAoraWYgUkVHSVNURVI2NAorICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0
aCA9IGNvbnN0ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitl
bmQKKwogY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3Ig
QVJNNjQgb3IgQVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFy
cmF5UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNo
KQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGlu
Z1R5cGUKIGVuZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlz
aEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhh
dCBpbmRleCBpcyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4K
K21hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWws
IGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAg
ICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBs
ZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjpt
X3R5cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMy
MSwxMyArMTMyNiwyMiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZp
bmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQog
ICAgICAgICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAg
ICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAg
ICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgYnFhZXEgaW5kZXgs
IGxlbmd0aCwgc2xvd1BhdGgKKyAgICBlbHNpZiBSRUdJU1RFUjY0CisgICAgICAgICMgbGVuZ3Ro
IGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBi
ZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgYnFh
ZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAg
ICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVu
ZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVy
IHBsYXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xl
bmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAg
ICAgYnFiZXEgaW5kZXgsIFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCwgLnNtYWxsVHlwZWRBcnJh
eQorICAgICAgICBzZXRMYXJnZVR5cGVkQXJyYXkoKQorLnNtYWxsVHlwZWRBcnJheToKKyAgICBl
bmQKKwogICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3RvcltiYXNlXSwgdDMKICAg
ICBjYWdlZFByaW1pdGl2ZSh0MywgbGVuZ3RoLCBiYXNlLCBzY3JhdGNoKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCmluZGV4IDUwZDVkYmRmNjAyYS4uNjc4ZWM2NGM2NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpA
QCAtMTY2OSw3ICsxNjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRj
aCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFy
cmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BH
ZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0
QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBtYWNybyAoKSBlbmQsIC5vcEdldEJ5VmFsU2xv
dykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ4NGI2ZWFkMzdmZC4uNDg1NDcwMWQ4ZWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEzLDE2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
CiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAor
ICAgIGlmIFJFR0lTVEVSNjQKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAg
ICAgICAgICAgIHN0b3JlYiAxLCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUu
bV9tYXlCZUxhcmdlVHlwZWRBcnJheVt0NV0KKyAgICAgICAgZW5kCisgICAgZWxzZQorICAgICAg
ICBtYWNybyBzZXRMYXJnZVR5cGVkQXJyYXkoKQorICAgICAgICAgICAgY3Jhc2goKQorICAgICAg
ICBlbmQKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKIAogICAgIGdldChtX2Jhc2Us
IHQyKQpAQCAtMTcyMyw3ICsxNzMzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogICAg
IGdldChtX3Byb3BlcnR5LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6
ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgc3hpMnEgdDEsIHQxCisgICAgc3hpMnEg
dDEsIHQxICMgVGhpcyBzaWduLWV4dGVudGlvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGlu
IGdldEJ5VmFsVHlwZWRBcnJheSB3b3JrIGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAKICAgICBs
b2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcp
CiAgICAgbW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwpAQCAtMTc2Myw3ICsxNzczLDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5k
ZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0
QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxT
bG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYy
YTcxOTFlLi45Y2Q3ZTQzNmY1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQo
dm9pZCopPj4gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAg
cmV0dXJuIGRlc3RydWN0b3IuZ2V0KCkuY29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0
YSwgVUNQVVJlZ2lzdGVyIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVz
dHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdU
Rk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2
OCw3IEBAIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZm
ZXJDb250ZW50cyYmIG90aGVyKQogICAgIG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1B
cnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0
b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEs
IFVDUFVSZWdpc3RlciBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24m
JiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9z
aXplSW5CeXRlcyhzaXplSW5CeXRlcykKIHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJy
YXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12
b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkK
K3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoVUNQVVJlZ2lzdGVyIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBv
bGljeSkKIHsKLSAgICAvLyBEbyBub3QgYWxsb3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3Rh
bCBzaXplLgotICAgIGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNp
emUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6
ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJS
QVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICBDaGVja2VkU2l6ZSBzaXplSW5CeXRlcyA9IG51bUVsZW1lbnRz
OworICAgIHNpemVJbkJ5dGVzICo9IGVsZW1lbnRCeXRlU2l6ZTsKKyAgICBpZiAoc2l6ZUluQnl0
ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJbkJ5dGVzLnZhbHVlKCkgPiBNQVhfQVJSQVlfQlVG
RkVSX1NJWkUpIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG51bUVsZW1lbnRzKSAq
IHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudEJ5dGVTaXplKTsKLSAgICBzaXplX3QgYWxsb2Nh
dGlvblNpemUgPSBzaXplSW5CeXRlczsKKworICAgIFVDUFVSZWdpc3RlciBhbGxvY2F0aW9uU2l6
ZSA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgaWYgKCFhbGxvY2F0aW9uU2l6ZSkKICAgICAg
ICAgYWxsb2NhdGlvblNpemUgPSAxOyAvLyBNYWtlIHN1cmUgbWFsbG9jIGFjdHVhbGx5IGFsbG9j
YXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11Y2guIFdlIHVzZSBudWxsIHRvIG1lYW4gdGhh
dCB0aGUgYnVmZmVyIGlzIGRldGFjaGVkLgogCiAgICAgdm9pZCogZGF0YSA9IEdpZ2FjYWdlOjp0
cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYWxsb2NhdGlvblNpemUpOwotICAgIG1fZGF0
YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzKTsKKyAgICBtX2RhdGEgPSBEYXRhVHlwZShk
YXRhLCBzaXplSW5CeXRlcy52YWx1ZSgpKTsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgcmVz
ZXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHZvaWQgQXJyYXlCdWZm
ZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlCiAgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKICAgICAgICAgbWVt
c2V0KGRhdGEsIDAsIGFsbG9jYXRpb25TaXplKTsKIAotICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXpl
SW5CeXRlczsKKyAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiAg
ICAgbV9kZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3Rv
cigpOwogfQpAQCAtMTc4LDcgKzE3Niw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6c2hh
cmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQogICAgIFJFTEVBU0VfQVNTRVJUKG90
aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0KIAotUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7
CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0xOTEsNyArMTg5LDcgQEAgUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gQXJy
YXlCdWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAK
LVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgpOwogICAgIGlmICghYnVm
ZmVyKQpAQCAtMjA4LDcgKzIwNiw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyBDdXJyZW50IHRoaXMgaXMg
b25seSB1c2VkIGZyb206CiAvLyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PD46OnNsb3dEb3du
QW5kV2FzdGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1vcnkgc2hvdWxkIGhhdmUg
YWxyZWFkeSBjb21lCiAvLyAgIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZv
aWQqIGRhdGEsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIEFTU0VSVCghR2lnYWNh
Z2U6OmlzRW5hYmxlZCgpIHx8IChHaWdhY2FnZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNhZ2U6
OmNvbnRhaW5zKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5ndGgg
LSAxKSkpOwogICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgQXJy
YXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIyMCw3ICsyMTgs
NyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndAogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdlIGNv
dWxkIGludHJvZHVjZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUgdW5j
YWdlZCBhbmQgZ2V0IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3NlbWJs
eS4gV2FzbSBzaG91bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCog
ZGF0YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uJiYgZGVzdHJ1Y3RvcikKIHsKICAgICBpZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQo
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJp
bWl0aXZlR2lnYWNhZ2UoKTsKQEAgLTIyOSw3ICsyMjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0
ZUxlbgogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzOSw3
ICsyMzcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJy
YXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhl
ci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250
ZW50czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CkBAIC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1
bnNpZ25lZCBieXRlTGVuZwogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRl
bnRzKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5p
bml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51
bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0
aWFsaXplKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9s
aWN5KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50
Qnl0ZVNpemUsIHBvbGljeSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yNjYsMTUgKzI2NCwxNyBA
QCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlUwogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51
bGwoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwo
QXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRl
cm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFieXRlTGVuZ3RoIHx8IHNv
dXJjZSk7CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdFJlZigqbmV3IEFycmF5QnVmZmVyKFdURk1v
dmUoY29udGVudHMpKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVM
ZW5ndGgpOworICAgIGlmIChieXRlTGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChzb3VyY2UpOwor
ICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAg
fQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
IGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50
Qnl0ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQXJyYXlCdWZmZXI6OkFycmF5
QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIHsKIH0KIAotdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVk
IHJpZ2h0KQorVUNQVVJlZ2lzdGVyIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBV
Q1BVUmVnaXN0ZXIgbGVmdCwgVUNQVVJlZ2lzdGVyIHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0
IDw9IHJpZ2h0KTsKICAgICBpZiAoeCA8IGxlZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgdW5zaWdu
ZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2ln
bmVkIHJpZ2h0KQogICAgIHJldHVybiB4OwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xh
bXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CitVQ1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmNs
YW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5n
dGggPSBieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGN1cnJlbnRMZW5ndGggPSBieXRl
TGVuZ3RoKCk7CiAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAgaW5kZXggPSBjdXJyZW50TGVu
Z3RoICsgaW5kZXg7CiAgICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5n
dGgpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3QKICAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZElu
ZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlV2l0aENsYW1wZWRJbmRleChVQ1BVUmVnaXN0ZXIgYmVnaW4sIFVDUFVSZWdpc3RlciBlbmQp
IGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2lu
IDogMDsKKyAgICBVQ1BVUmVnaXN0ZXIgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2lu
IDogMDsKICAgICBhdXRvIHJlc3VsdCA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7CiAgICAgaWYgKHJlc3VsdCkK
ICAgICAgICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9kZShzaGFyaW5nTW9kZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IDY4ZmY5MGUxM2ViYS4u
YjBhZTU2YmU1OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMywxMyArMzMsMjIgQEAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KICNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NoYXJl
ZFRhc2suaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIENQ
VShSRUdJU1RFUjY0KQorI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIp
CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVQ1BVUmVnaXN0ZXIpID09IHNpemVvZih1aW50NjRfdCkp
OworI2Vsc2UKKy8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgVUNQVVJlZ2lzdGVyIHRvIHN0b3Jl
IHRoZSBzaXplIGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRH
QiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorLy8gTm90ZSB0aGF0IHN0b3JpbmcgdGhlIHNpemUgaW4g
YSB1aW50NjRfdCB3b3VsZCBiZSBxdWl0ZSBtZXNzeSBvbiAzMi1iaXRzIGFzIHRoZSBKSVQgaGF2
ZSB0byBiZSBhYmxlIHRvIG1hbmlwdWxhdGUgaXQuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0
aCAyR0IuIEl0IHNob3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAo
NEdCIC0gMUIpIGlmIGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpF
IDB4N2ZmZmZmZmZ1CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAg
LTUxLDcgKzYwLDcgQEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24g
PSBQYWNrZWRSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJh
eUJ1ZmZlckNvbnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50
cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biYmKTsKKyAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdp
c3RlciwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHMoKTsKICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmdldE1heUJlTnVsbChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBA
IHByaXZhdGU6CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0
aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tl
ZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25l
ZCBtX3NpemVJbkJ5dGVzOworICAgIFVDUFVSZWdpc3RlciBtX3NpemVJbkJ5dGVzOwogfTsKIAog
Y2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJy
YXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlC
dWZmZXJDb250ZW50cygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVu
dHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNv
bnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJy
YXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFycmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03
OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1
cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQorICAgIFVDUFVSZWdpc3RlciBz
aXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAgICAKICAgICBi
b29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0KICAgICAKQEAgLTk0LDcg
KzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0aWFsaXplCiAgICAgfTsKIAotICAg
IHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHZvaWQgdHJ5QWxsb2NhdGUoVUNQ
VVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxp
emF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHRy
YW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4ICsxMTQsMjggQEAgcHJp
dmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0cjxTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAg
IFVDUFVSZWdpc3RlciBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXIgOiBw
dWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0
YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBVQ1BV
UmVnaXN0ZXIgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRl
KFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUo
QXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKICAg
ICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKICAgICBpbmxpbmUg
Y29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3Ro
KCkgY29uc3Q7CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFyaW5nTW9kZShBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwg
ZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVm
ZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1
bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lz
dGVyIGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5l
IHZvaWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVH
aWdhY2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwg
Y29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xp
Y3kpOworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVm
ZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIFVDUFVSZWdpc3Rlcik7CisgICAgc3RhdGljIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlv
blBvbGljeSk7CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBp
bmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5z
aWduZWQgcmlnaHQpOworICAgIGlubGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBJbmRleChkb3VibGUg
aW5kZXgpIGNvbnN0OworICAgIHN0YXRpYyBpbmxpbmUgVUNQVVJlZ2lzdGVyIGNsYW1wVmFsdWUo
ZG91YmxlIHgsIFVDUFVSZWdpc3RlciBsZWZ0LCBVQ1BVUmVnaXN0ZXIgcmlnaHQpOwogCiAgICAg
dm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzIwMSw3IEBAIGNvbnN0IHZv
aWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50cy5kYXRh
KCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK1VDUFVS
ZWdpc3RlciBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
Y29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBAQCBib29sIEFycmF5
QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGlt
YXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8g
c2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcuCi0gICAgcmV0
dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVMZW5ndGgo
KSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3RoKCk7CiB9CiAK
IHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLmViMDUwOWVjZGNh
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
QXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBt
X2J5dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQog
ICAgICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+
IGxlbmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPFVDUFVSZWdpc3RlciwgQ3Jhc2hPbk92
ZXJmbG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9i
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTku
LjAwZWRjZDM4NDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5
cGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVk
ZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAg
dW5zaWduZWQgYnl0ZU9mZnNldCgpIGNvbnN0CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQo
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBVQ1BV
UmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wg
aXNEZXRhY2hhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5
ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlC
dWZmZXJWaWV3KCk7CiAKICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNp
emUgYWxpZ25lZC4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5
dGVPZmZzZXRBbGlnbm1lbnQoVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBl
bGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAt
IDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChlbGVtZW50U2l6ZSAtIDEpKTsK
ICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ug
b2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJv
b2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQorICAgIC8v
IEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZl
ciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgo
Y29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVS
ZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgVUNQ
VVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAo
Ynl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0
KSAvIHNpemU7CisgICAgICAgIFVDUFVSZWdpc3RlciByZW1haW5pbmdFbGVtZW50cyA9IChieXRl
TGVuZ3RoIC0gYnl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KGVsZW1lbnRT
aXplKTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsx
MTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNH
bG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVn
aXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5l
IGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAg
ICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIFVDUFVSZWdpc3RlciBieXRl
T2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGlu
ZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwo
Y29uc3Qgdm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGRhdGFCeXRlTGVuZ3RoLCBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3Rp
bmF0aW9uLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNl
dCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2Fs
Y3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2ln
bmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0
aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNl
dCwgVUNQVVJlZ2lzdGVyIHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQg
aXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8g
b3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBi
dWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lk
IGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBi
dWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWdu
ZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBVQ1BV
UmVnaXN0ZXIgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBVQ1BVUmVnaXN0ZXIgKm9mZnNldCwK
KyAgICAgICAgVUNQVVJlZ2lzdGVyICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2ln
bmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7
CisgICAgICAgIFVDUFVSZWdpc3RlciBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxV
Q1BVUmVnaXN0ZXI+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAg
ICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVm
ZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNl
dCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZm
ZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxl
bWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAg
ICAgICBDaGVja2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IGFkanVzdGVkT2Zmc2V0
ID0gKm9mZnNldDsKKyAgICAgICAgYWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAg
ICBhZGp1c3RlZE9mZnNldCArPSBhcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3Rl
ZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZl
ci5ieXRlTGVuZ3RoKCkpCisgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZh
bHVlKCk7CisgICAgICAgIFVDUFVSZWdpc3RlciByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIu
Ynl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50
cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAot
ICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6IDMxOworI2lmIENQVShSRUdJU1RFUjY0KQorICAg
IHVpbnQ2NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVP
ZmZzZXQgOiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVu
c2lnbmVkIG1fYnl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAg
ICAgdXNpbmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lk
LCB0YWdDYWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlC
dWZmZXIncyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJv
b2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2ln
bmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVM
ZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5
dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNl
dCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNl
dCwgYXJyYXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJy
YXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVy
IGRhdGFCeXRlTGVuZ3RoLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0
ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVM
ZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVu
Z3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92
ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRh
Qnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
IAogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3Mo
KSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgp
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJ
bXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3Rp
bmF0aW9uLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRl
T2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBv
ZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVx
dWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0
aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRl
T2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onpl
cm9SYW5nZUltcGwoVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciByYW5nZUJ5
dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAg
fHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAv
LyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJU
aGFuT3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChiYXNlICsg
Ynl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICBpbnQg
c3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5z
aWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCArPSBh
cnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAgIGlm
IChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAwKQot
ICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFy
cmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFydCkK
LSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFy
dCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVmZmVyVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAK
aW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nlc3NJbmRleFZh
bHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVCh0eXBlZEFy
cmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKKwog
ICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0
IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBkY2MyZjUwNjRh
ZjIuLjdiMWVkN2NmNTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURhdGFW
aWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0
ZXIgYnl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNy
ZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRl
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0g
YnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciks
IDAsIGJ5dGVMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuaAppbmRleCBkYTA2YjRiYjIxNDQuLmRlNzE0YjYyNTA5YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgRGF0YVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1
YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUo
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5
QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmlu
YWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFw
KEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBsaXR0bGVF
bmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBnZXQoVUNQVVJlZ2lzdGVyIG9m
ZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewog
ICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQp
ID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWduZWQmIG9mZnNldCwg
Ym9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCByZWFkKFVD
UFVSZWdpc3RlciYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVs
bHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0PFQ+KG9m
ZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8fCAqc3Rh
dHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVlLCBib29s
IGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2b2lkIHNldChVQ1BV
UmVnaXN0ZXIgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVz
ID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlm
IChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgzLDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIERh
dGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVD
UFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aAppbmRleCBiZTdlNmMwNTM0ZmEuLmIyODc5YjNkZjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMz
LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNz
IEdlbmVyaWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3Jl
YXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoVUNQVVJlZ2lz
dGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
KFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVD
UFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9m
ZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVD
UFVSZWdpc3RlciBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4o
YmFzZUFkZHJlc3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgVUNQVVJlZ2lzdGVyIG9mZnNldCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zm
c2V0KQorICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0
YSwgVUNQVVJlZ2lzdGVyIGNvdW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHNldFJhbmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEpLApAQCAtNTgsMzkgKzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJv
b2wgemVyb1JhbmdlKFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBjb3VudCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAqIHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKSwgY291bnQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwogICAgIH0KICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2UoMCwgbGVuZ3Ro
KCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSBpdGVtKFVDUFVSZWdpc3RlciBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAg
ICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChVQ1BVUmVnaXN0ZXIg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRh
KClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShVQ1BVUmVnaXN0ZXIgaW5kZXgsIHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAg
ICAgZGF0YSgpW2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQp
CisgICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBVQ1BVUmVn
aXN0ZXIgY291bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4g
Z2V0UmFuZ2VJbXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSks
CkBAIC05OCwxOCArOTgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3Vu
ZERhdGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVj
a0luYm91bmREYXRhKFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBjb3VudCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAg
ICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNv
dW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAg
ICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxs
ZXJUaGFuT3JFcXVhbChvZmZzZXQsIGNvdW50LCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAg
IAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkg
Y29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0
YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkg
Y29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBA
IC0xMTgsNyArMTExLDcgQEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpT
R2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBH
ZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IGFlNWJkZDhjNmEzMS4uNTljNjllMzEyMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5
cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiAgICAgOiBBcnJh
eUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2Yo
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2Yo
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxVQ1BVUmVnaXN0
ZXI+OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShVQ1BVUmVnaXN0ZXIg
bGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUo
dW5zaWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAot
ICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIFVDUFVSZWdpc3RlciBs
ZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJl
Z2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1
bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoVUNQVVJlZ2lz
dGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
bGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAgY29uc3QgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAg
ICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3Ro
KTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBV
Q1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcgQEAgUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5
Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1H
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVP
ZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5n
dGgpOwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwot
ICAgIEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRv
cjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBy
ZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjI3
YTk3NzlmNDk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNB
cnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1
Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBt
X2xlbmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVy
Vmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1l
bnRTaXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBs
ZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2Rl
KQogICAgIDogbV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAg
LTYzLDcgKzYzLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCiAgICAgaWYgKGxlbmd0aCA8PSBmYXN0U2l6ZUxpbWl0KSB7CiAg
ICAgICAgIC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCogdGVtcDsKLSAg
ICAgICAgc2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7CisgICAgICAg
IFVDUFVSZWdpc3RlciBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNpemUpOwogICAgICAg
ICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVs
bCk7CiAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgxLDE4ICs4
MSwxOCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0
aW9uQ29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93
IGEgdHlwZWQgYXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWQ8
VUNQVVJlZ2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gc2l6ZSA9IGxlbmd0aDsKKyAgICBzaXplICo9
IGVsZW1lbnRTaXplOworICAgIGlmIChzaXplLmhhc092ZXJmbG93ZWQoKSB8fCBzaXplID4gTUFY
X0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHNp
emUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzdGF0aWNfY2FzdDxzaXplX3Q+KGVs
ZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxv
YyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3RoKTsKKworICAgIG1fdmVjdG9yID0g
VmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUu
dmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3RvcikKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBtZW1zZXQodmVjdG9yKCksIDAsIHNp
emUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUpOworICAgIHZtLmhlYXAucmVwb3J0
RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsKICAgICAKICAgICBtX3N0cnVjdHVy
ZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6ZVR5cGVkQXJyYXk7CkBAIC0xMDAs
NyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0
OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVS
ZWdpc3RlciBsZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoV2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVD
UFVSZWdpc3RlciBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkK
QEAgLTIzOCw5ICsyMzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNU
eXBlIHR5cGUpCiAgICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlw
ZV07CiB9CiAKLXVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QK
K1VDUFVSZWdpc3RlciBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7Cisj
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICBDaGVja2VkPFVDUFVSZWdpc3Rlcj4gcmVzdWx0ID0gbGVu
Z3RoKCk7CisgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplKHR5cGUoKSk7CisgICAgcmV0dXJuIHJl
c3VsdC52YWx1ZSgpOworI2Vsc2UKKyAgICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVyZmxvdyBpcyBh
bHJlYWR5IGNoZWNrZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRkIHRoZSBleHRy
YSBzYW5pdHkgY2hlY2sgd2hlbiBhc3NlcnRzIGFyZSBlbmFibGVkLgogICAgIHJldHVybiBsZW5n
dGgoKSAqIGVsZW1lbnRTaXplKHR5cGUoKSk7CisjZW5kaWYKIH0KIAogQXJyYXlCdWZmZXIqIEpT
QXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2Nyw3ICsyNzQs
NyBAQCBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1v
cnkoKQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKIAog
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgg
PSB0aGlzLT5ieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSB0aGlz
LT5ieXRlTGVuZ3RoKCk7CiAKICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgIGNhc2UgRmFzdFR5
cGVkQXJyYXk6IHsKQEAgLTMxNSw4ICszMjIsOCBAQCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBK
U0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKICAgICBBcnJheUJ1ZmZlciog
YnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVP
ZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKKyAgICBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZp
bmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMjIEFycmF5VHlwZTogXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXgg
ZGQwMWY3ZjgyYTUzLi40NjcwYjQ2ZDhiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZhc3RTaXplTGltaXQgPSAxMDAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgVUNQVVJlZ2lzdGVyIGZhc3RTaXplTGltaXQgPSAxMDAwOwogICAgIHVzaW5n
IFZlY3RvclB0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0
YWdDYWdlZFB0cj47CiAKICAgICBzdGF0aWMgdm9pZCogbnVsbFZlY3RvclB0cigpCkBAIC0xMTcs
MTAgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxsLnJhd0JpdHMoKTsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBzaXplT2YodWludDMyX3QgbGVuZ3RoLCB1aW50
MzJfdCBlbGVtZW50U2l6ZSkKKyAgICBzdGF0aWMgVUNQVVJlZ2lzdGVyIHNpemVPZihVQ1BVUmVn
aXN0ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpIC0gMSkKLSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUp
IC0gMSk7CisgICAgICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBsZW5ndGg7Cisg
ICAgICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFs
bG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSAr
MTM4LDI1IEBAIHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSW5pdGlhbGl6
YXRpb25Nb2RlIHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07CiAgICAgICAgIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwg
dWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2Rl
ID0gWmVyb0ZpbGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250
ZXh0KFZNJiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdW5zaWduZWQgZWxlbWVu
dFNpemUsIEluaXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgaXMgb25seSBmb3IgY29uc3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdz
IHVzZWQgYnkgdGhlIEpJVCdzIHNsb3cgcGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4
dChTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENv
bnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCog
dmVjdG9yKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlv
bkNvbnRleHQoCiAgICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCk7CiAgICAgICAgIAogICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0YVZpZXcgfTsKICAg
ICAgICAgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpOworICAgICAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAgICAg
ICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
dWN0dXJlOyB9CiAgICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9y
LmdldE1heUJlTnVsbChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBj
b25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBj
b25zdCB7IHJldHVybiBtX2J1dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3ICsxNjQsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgIHVz
aW5nIFZlY3RvclR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAgIHVpbnQzMl90
IG1fbGVuZ3RoOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbV9sZW5ndGg7CiAgICAgICAgIFR5cGVk
QXJyYXlNb2RlIG1fbW9kZTsKICAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAgICB9
OwpAQCAtMTkwLDExICsxOTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChsZW5ndGgoKSk7IH0KICAgICB2b2lkKiB2
ZWN0b3JXaXRob3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldFVu
c2FmZSgpOyB9CiAgICAgCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKTsKLSAgICBp
bmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwor
ICAgIGlubGluZSBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCgpOworICAgIGlubGluZSBzdGQ6Om9w
dGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwogCi0gICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLSAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsKIAog
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAgcHJvdGVj
dGVkOgogICAgIEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7CiAKICAg
ICBWZWN0b3JQdHIgbV92ZWN0b3I7Ci0gICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgVUNQVVJl
Z2lzdGVyIG1fbGVuZ3RoOwogICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmgKaW5kZXggMWQwNzJiNzFhY2I3Li42MzE4MTU1ZTY0MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5l
cy5oCkBAIC05OSw3ICs5OSw3IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3
OjpieXRlT2Zmc2V0SW1wbCgpCiAgICAgcHRyZGlmZl90IGRlbHRhID0KICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnQ4X3QqPih2ZWN0b3JXaXRob3V0UEFDVmFsaWRhdGlvbigpKSAtIHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSk7CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVsdGEpOworICAgIFVDUFVSZWdpc3RlciByZXN1bHQgPSBz
dGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KGRlbHRhKTsKICAgICBpZiAocmVxdWVzdGVyID09IE11
dGF0b3IpCiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHJlc3VsdCkgPT0g
ZGVsdGEpOwogICAgIGVsc2UgewpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgaW5saW5lIFJlc3VsdFR5
cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1pbmxpbmUgdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQoKQor
aW5saW5lIFVDUFVSZWdpc3RlciBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCiB7Ci0g
ICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2lnbmVkPigpOworICAgIHJldHVy
biBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCBVQ1BVUmVnaXN0ZXI+KCk7CiB9CiAKLWlubGluZSBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1
cnJlbnRseSgpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+IEpTQXJyYXlCdWZm
ZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNl
dEltcGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+KCk7CisgICAg
cmV0dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8VUNQ
VVJlZ2lzdGVyPj4oKTsKIH0KIAogaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJy
YXlCdWZmZXJWaWV3Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGIxZWE5ZGEwZmU0Yy4uZTVi
ZGZjNjg3ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCkBAIC0yOTgsNiArMjk5LDcgQEAgcHVibGljOgogICAg
IGludDMyX3QgdG9JbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRv
VUludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9JbmRleChKU0ds
b2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3Q7CisgICAgVUNQVVJlZ2lz
dGVyIHRvVHlwZWRBcnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JO
YW1lKSBjb25zdDsKICAgICBkb3VibGUgdG9MZW5ndGgoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCmluZGV4IDM0ZWEyMTQ2MGEwZC4uODBjMjNmNmM2OTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDE0
ICs2OSw0NyBAQCBpbmxpbmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFr
ZVN0cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIGlmIChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKSB7CisKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigp
OworCisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JO
YW1lLCAiIHRvbyBsYXJnZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsKK30KKworaW5saW5lIFVD
UFVSZWdpc3RlciBKU1ZhbHVlOjp0b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0g
Z2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBkb3VibGUgZCA9IHRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CisgICAgaWYgKGQgPD0gLTEpIHsKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAg
IHJldHVybiBhc0ludDMyKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRv
SW50MzIoZCkpOworCisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KE1BWF9BUlJBWV9C
VUZGRVJfU0laRSkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAi
IHRvbyBsYXJnZSIpKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIEFsbCBv
ZiB0aGlzIG1vbnN0cm9zaXR5IGlzIGp1c3QgdG8gZ2l2ZSB0aGUgY29ycmVjdCByZXN1bHQgb24g
MTw8MzIuCisgICAgVUNQVVJlZ2lzdGVyIG91dHB1dE9mZnNldCA9IDA7CisgICAgZG91YmxlIGlu
cHV0T2Zmc2V0ID0gMDsKKyAgICBVQ1BVUmVnaXN0ZXIgaW50MzJNYXggPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4o
aW50MzJNYXgpKSB7CisgICAgICAgIG91dHB1dE9mZnNldCA9IGludDMyTWF4OworICAgICAgICBp
bnB1dE9mZnNldCA9IGludDMyTWF4OworICAgIH0KKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIG91dHB1dE9mZnNldCArIHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KEpTQzo6dG9JbnQzMihkIC0gaW5wdXRPZmZzZXQpKSkpOwogfQogCiAvLyBodHRw
czovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggNmZhYjQ2NWRkM2I5Li45
ODVkOWUyNDQ5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBKU0RhdGFWaWV3OjpKU0RhdGFWaWV3KFZNJiB2bSwg
Q29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcgogCiBKU0Rh
dGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTcwLDI1ICs3MCwyNSBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3Ojpj
cmVhdGUoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRhVmlldzo6
Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVk
KQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRh
Vmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0Rh
dGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBV
Q1BVUmVnaXN0ZXIpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0RhdGFWaWV3
OjpzZXQoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpTT2JqZWN0KiwgVUNQVVJlZ2lz
dGVyLCBVQ1BVUmVnaXN0ZXIpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpCitib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpT
R2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBKU1ZhbHVlKQogewogICAgIFVOUkVBQ0hBQkxF
X0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCAyYzc4NWU0NzYxMWEuLjVlZTFkODYxOWU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDE1
ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IEpTRGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsCisgICAgICAg
IFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKICAgICAKICAgICAvLyBEdW1teSBtZXRob2RzLCB3
aGljaCBkb24ndCBhY3R1YWxseSB3b3JrOyB0aGVzZSBhcmUganVzdCBpbiBwbGFjZSB0bwogICAg
IC8vIHBsYWNhdGUgc29tZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3ZSBkbyBlbHNld2hlcmUu
Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0RhdGFWaWV3
KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0KiwgdW5zaWdu
ZWQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0
aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgp
OworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCos
IFVDUFVSZWdpc3RlciwgSlNPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIFVDUFVSZWdpc3RlciBsZW5n
dGgpOworICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpT
VmFsdWUpOwogICAgIAogICAgIEFycmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVy
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggOTQ5MDYyNDdlYTY1Li5kOGM5OWMzYzY4YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTM2LDExICsxMzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAo
IWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJf
cyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgVUNQVVJlZ2lzdGVy
IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0
LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5z
aWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAg
VUNQVVJlZ2lzdGVyIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
Pj0gMikgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJh
eUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5
dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0
ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBi
b3VuZHMgYWNjZXNzIl9zKTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIHNl
dERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEg
RGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGds
b2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIEVuY29kZWRK
U1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBl
bGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVn
aXN0ZXIgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAg
aWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7
CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMiku
dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVy
IGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0
aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3Ro
IHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBh
Y2Nlc3MiX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4MWQuLjA1NjgzOGM5ZTQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1
ZmZlclZpZXcuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVG
cm9tVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBD
bGFzc0luZm8qIGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZvKCk7CiAvLyAgICAgU3RydWN0dXJl
KiBTICAgICAvLyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRlcmZseSogQiAgICAgLy8gZnJvbSBK
U09iamVjdAogLy8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAgICAgdWludDMyX3QgTAorLy8gICAg
IFVDUFVSZWdpc3RlciBMCiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8vIFRoZXNlIGZp
ZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTog
TWFrZQorLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBvaW50ZXItd2lk
dGggd29yZHMuIEZJWE1FOiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAvLwogLy8gQiBp
cyB1c3VhbGx5IHVudXNlZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwgIm92ZXJmbG93
IiBkYXRhIGZvcgpAQCAtMTAzLDE1ICsxMDQsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKTsKIAotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwotICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0
aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGlt
cGwpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVjdHVy
ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYm
IGltcGwpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQotICAgIHNpemVfdCBi
eXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAg
ICBVQ1BVUmVnaXN0ZXIgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgs
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7IH0KICAgICAKICAgICBjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiB0eXBlZFZlY3RvcigpIGNvbnN0CiAgICAgewpAQCAtMTIyLDQ2
ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1
bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3VuZHMoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhh
dCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5
LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9v
bCBjYW5HZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5Owog
ICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpLCBK
U1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAm
JiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAg
ICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05h
dGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBn
ZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKFVDUFVSZWdpc3RlciBpKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3Rv
cigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBn
ZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBz
ZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKFVDUFVS
ZWdpc3RlciBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIgaSwgSlNWYWx1
ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAg
ICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRh
cHRvcj4odmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9v
bCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVQ1BVUmVnaXN0ZXIgaSwg
SlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
MTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZy
b21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVs
ZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVG
cm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVl
V2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFs
dWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJj
aW9uKEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21W
YWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lk
IHNvcnQoKQogICAgIHsKQEAgLTE5OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KFVDUFVSZWdp
c3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4g
b2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9s
ZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZz
ZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9y
RXF1YWwob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsKICAgICB9CiAgICAgCiAgICAgLy8gTGlr
ZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJldHVybnMgZmFsc2UsIGl0IHdpbGwgdGhy
b3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgotICAgIGJvb2wgdmFsaWRhdGVS
YW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNj
ZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFsc2UKICAgICAvLyB0
aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJvb2wgc2V0KEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2lnbmVkIG9iamVjdE9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2
YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0
LCBKU09iamVjdCosIFVDUFVSZWdpc3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5n
dGgsIENvcHlUeXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRy
PHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwog
ICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwo
KTsKQEAgLTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBz
dWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNp
ZmljVHlwZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmpl
Y3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVy
QWRhcHRvcj4qLAorICAgICAgICBVQ1BVUmVnaXN0ZXIgb2JqZWN0T2Zmc2V0LCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoLCBDb3B5VHlwZSk7CiAKICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRo
YXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQgQXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcg
b3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHVyaWZ5QXJyYXkoKQogICAgIHsKICAgICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRW
ZWN0b3IoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKysp
CisgICAgICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAg
ICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFOKGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3
ZTgzZi4uZWVkYTU1ZTNjYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciog
Y29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
TwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0
QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3Ro
T3B0KQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBz
dGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gbGVuZ3RoT3B0KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gMDsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGxlbmd0aCA9IDA7CiAgICAgICAgIGlmIChsZW5n
dGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAgICAgICAg
ZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAv
LyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkgb2YgdGhhdCBs
ZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmplY3QqIG9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsKLSAgICAgICAg
dW5zaWduZWQgbGVuZ3RoOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoOwogICAgICAgICBK
U0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChpc1R5
cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsK
QEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUudG9J
bmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0g
Zmlyc3RWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBs
ZW5ndGgpKTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1Zh
bHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAg
ICAgfQogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBVQ1BVUmVnaXN0ZXIgb2Zmc2V0ID0g
MDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gbGVuZ3RoID0gc3RkOjpudWxsb3B0
OwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkg
JiYgYXJnQ291bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcg
KzI4NSw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBs
ZW5ndGggdmFsdWUgaXMgcHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5n
LgogICAgICAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMik7CiAgICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9i
amVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8g
ImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0
aFZhbHVlLnRvVHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFy
cmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIp
OwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCmluZGV4IDQ1MDIzODc5MmQxMC4uMDUzY2ZiNTFlMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMu
aCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3
ICs0OCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldygKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTY1LDcgKzY2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNp
Z25lZCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdm9pZCogdmVj
dG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rp
b25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3
OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtOTksMTEgKzEwMCwxMSBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpOworICAgIFVDUFVSZWdpc3RlciBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpOwogICAgIEFTU0VSVChidWZmZXIpOwogICAgIGlmICghQXJyYXlCdWZmZXJW
aWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNp
emUpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIi
KSk7CkBAIC0xNDUsNyArMTQ2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2
YWxpZGF0ZVJhbmdlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTE1OSw4ICsxNjAsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxP
dGhlckFkYXB0b3I+KiBvdGhlciwKLSAgICB1bnNpZ25lZCBvdGhlck9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRv
cj4qIG90aGVyLAorICAgIFVDUFVSZWdpc3RlciBvdGhlck9mZnNldCwgVUNQVVJlZ2lzdGVyIGxl
bmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjE4LDcgKzIx
OSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVmZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5n
QnVmZmVyKCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUgJiYg
dmVjdG9yKCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAgICAgICB8fCB0eXBlID09IENvcHlUeXBl
OjpMZWZ0VG9SaWdodCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAg
ICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFw
dG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZl
VmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKICAgICAv
LyBOb3cgd2UgZWl0aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBmaXJzdCB3ZSB0cnkgdG8gY292
ZXIgKDJCKS4KICAgICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSkgewotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICAgICAgZm9yIChVQ1BV
UmVnaXN0ZXIgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5
VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6
OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXIt
PmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjM4
LDExICsyMzksMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
V2l0aFNwZWNpZmljVHlwZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGludGVybWVk
aWF0ZSB0cmFuc2ZlciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZlY3Rvcjx0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlLCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gbGVu
Z3RoOyBpLS07KSB7CiAgICAgICAgIHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFwdG9yOjp0
ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhR
dWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBsZW5n
dGg7IGktLTspCiAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsg
aSwgdHJhbnNmZXJCdWZmZXJbaV0pOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0
ICsyNTEsMTQgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0
aFNwZWNpZmljVHlwZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9i
amVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTT2JqZWN0KiBvYmpl
Y3QsIFVDUFVSZWdpc3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlU
eXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGNvbnN0IENsYXNzSW5mbyog
Y2kgPSBvYmplY3QtPmNsYXNzSW5mbyh2bSk7CiAgICAgaWYgKGNpLT50eXBlZEFycmF5U3RvcmFn
ZVR5cGUgPT0gQWRhcHRvcjo6dHlwZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRoZSBzdXBlciBmYXN0
IGNhc2U6IHdlIGNhbiBqdXN0IG1lbWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgorICAg
ICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3ZlIHNpbmNlIHdl
J3JlIHRoZSBzYW1lIHR5cGUuCiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBvdGhl
ciA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgICAgIGxl
bmd0aCA9IHN0ZDo6bWluKGxlbmd0aCwgb3RoZXItPmxlbmd0aCgpKTsKICAgICAgICAgCkBAIC0z
MTIsOSArMzEzLDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNl
dCgKICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIHdvbid0IGV2ZXIgY2FsbCBvYmplY3QtPmdldCgpIHdp
dGggYW4gaW5kZXggb2YgVUlOVF9NQVggb3IgbW9yZQorICAgICAgICBSRUxFQVNFX0FTU0VSVChp
c1N1bVNtYWxsZXJUaGFuT3JFcXVhbChzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9iamVjdE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7CiAgICAgICAgIC8vIFdlIGNv
dWxkIG9wdGltaXplIHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9uJ3QuCi0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9iamVjdE9mZnNldCk7
CisgICAgICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBz
ZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVlKTsKICAgICAgICAgICAgIEVY
Q0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRjMGViZDFmNjE2NS4uYTk3NDcz
NzNjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTYw
LDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVByb2ZpbGU7CiBjbGFzcyBFeGNl
cHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOwpAQCAt
MjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIHB1dEJ5SW5k
ZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogICAgIHsKICAgICAgICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKGNhblNldEluZGV4UXVpY2ts
eShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KHZt
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRyeVNldEluZGV4UXVpY2tseSh2
bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXMsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KIApA
QCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGNhbkdldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OwotICAgIEpTVmFsdWUgZ2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7CisgICAgSlNWYWx1ZSBnZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJheVByb2ZpbGUqID0gbnVsbHB0
cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkg
Y29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKLSAgICBKU1ZhbHVl
IHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorCisgICAgLy8gVXNlcyB0aGUg
KG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlwZWRBcnJh
eSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikgY29uc3QKICAgICB7
CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7
CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxB
TktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2FuR2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNDExLDM1ICs0MTEsNzMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0KGdsb2JhbE9i
amVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFy
cmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lkIHNldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAgICAKLSAgICBib29sIGNhblNl
dEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiwgdW5zaWduZWQsIEpTVmFs
dWUpOworCisgICAgLy8gUmV0dXJuIHRydWUgdG8gaW5kaWNhdGUgc3VjY2VzcworICAgIC8vIFVz
ZSB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlw
ZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CisgICAgYm9vbCB0
cnlTZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJv
ZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSog
YnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdN
b2RlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAg
ICAgICByZXR1cm4gY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2LCBh
cnJheVByb2ZpbGUpOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lO
VDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5E
RVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJ
TkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZUEVT
OiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc0ludDMyKCkp
IHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZU9yQ29udGlndW91c1doaWxl
UGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKKyAg
ICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKCku
YXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgICAgIGlmIChp
ID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5
LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJp
ZXIodGhpcywgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAg
IGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAg
ICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0s
IGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOworICAgICAgICAgICAgaWYgKHZh
bHVlICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91
c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91
c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gdmFsdWU7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0
ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVi
bGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAg
ICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5
V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT52ZWN0
b3JMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2V0SW5kZXhR
dWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAgICAg
ICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkK
LSAgICAgICAgICAgICAgICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9y
W2ldOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUoaW5k
ZXhpbmdNb2RlKCkpKQorICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5hcnJheVN0b3Jh
Z2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVj
dG9yW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JB
cnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0NvcHlP
bldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVk0mIHZt
LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2ZTFiYjFiNTlmMWUuLmVhMzA4ODlmNTk2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgK
QEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpjYW5HZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgfQogfQogCi1pbmxpbmUg
Ym9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBp
LCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNkZWZpbmUgQ0FTRV9UWVBFRF9B
UlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDpcCi0gICAgICAg
IHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKS0+Y2FuU2V0
SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQ
RV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKLSN1bmRlZiBDQVNF
X1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotfQorI2lmIENQVShSRUdJU1RFUjY0KQorICAgIGlmIChpID4gQXJyYXlQcm9maWxlOjpz
X3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUpCisgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGFycmF5UHJvZmlsZSk7CisjZW5kaWYKIAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6Omdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKLXsKICAgICBzd2l0
Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAogICAg
IGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcgKzUwNiw1MCBAQCBpbmxpbmUg
dm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogfQotICAgIAorCitpbmxpbmUg
dm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBl
KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAgIEFycmF5U3RvcmFnZSogc3Rv
cmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKKyAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICBKU1ZhbHVlIG9sZCA9
IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAgIGlmICghb2xkKSB7CisgICAg
ICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAgICAgICAgaWYgKGkgPj0gc3Rv
cmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgoaSArIDEpOwor
ICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmls
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIENQVShSRUdJU1RFUjY0KQorI2RlZmlu
ZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHsgXAorICAgICAgICBp
ZiAoKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoKSAmJiBhcnJh
eVByb2ZpbGUpXAorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRB
cnJheSgpO1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbHNlCisjZGVmaW5lIFVQREFURV9BUlJB
WV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8geyBcCisgICAgVU5VU0VEX1BBUkFNKGFycmF5
UHJvZmlsZSk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2VuZGlmCisjZGVmaW5lIENBU0VfVFlQ
RURfQVJSQVlfVFlQRShuYW1lKSBcCisgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHsgXAor
ICAgICAgICBhdXRvKiB0eXBlZEFycmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJyYXkgKj4o
dGhpcyk7XAorICAgICAgICBpZiAoIXR5cGVkQXJyYXktPmNhblNldEluZGV4UXVpY2tseShpLCB2
KSlcCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7XAorICAgICAgICB0eXBlZEFycmF5LT5zZXRJ
bmRleFF1aWNrbHkoaSwgdik7XAorICAgICAgICBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJh
eVByb2ZpbGUpO1wKKyAgICAgICAgcmV0dXJuIHRydWU7XAorICAgIH0KKyAgICBGT1JfRUFDSF9U
WVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBF
KQorI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQorI3VuZGVmIFVQREFURV9BUlJBWV9QUk9G
SUxFCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5B
QkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGNl
NzMwZjNiZjk2NS4uMDkxOWU3MjE4NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oCkBAIC04OTgsOCArODk4LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVk
SlNWYWx1ZSBnZXRCeVZhbFdpdGhJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0MKIHsKICAgICBpZiAoYmFzZS0+aXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVp
Y2tseShpbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+
Z2V0SW5kZXhRdWlja2x5KGluZGV4KSk7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9i
amVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAm
JiBhc1N0cmluZyhiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4uYjdkOGM5ZmNmNzJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC0yNyw2
ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJBcnJheUJ1
ZmZlci5oIgorCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtOTYs
NyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VT
aXplID0gNjQgKiBLQjsKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBt
YXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNp
emUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSAvIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihwYWdlU2l6ZSkpOwogCiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBl
NWI3Y2Q0NjYxODcuLjk5ZjA3ZmY3NDQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMC0x
MiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93
IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgc29tZSBvZiBDaGVj
a2VkQXJpdGhtZXRpYyBjb25zdGV4cHIsIGFuZCBhZGRlZCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVh
bCBzaW5jZSBpdCBpcyBhIGNvbW1vbmx5IHVzZWQgdGVzdCBpbiBBcnJheUJ1ZmZlciBhbmQgZWFz
eSB0byBnZXQgd3JvbmcgaW4gdGVybXMgb2Ygb3ZlcmZsb3cuCisKKyAgICAgICAgKiB3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaDoKKyAgICAgICAgKFdURjo6aXNJbkJvdW5kcyk6CisgICAgICAgIChX
VEY6OmNvbnZlcnRTYWZlbHkpOgorICAgICAgICAoV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVh
bCk6CisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbm9uLUhBVkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9T
VFJJQ1RSVVNURVZBTFVBVEUpIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRBcml0aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCmluZGV4
IGZmMTU2NWYxMWRlZC4uZWZhYjRhZDNiYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGlj
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJl
bW92ZUNoZWNrZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5
cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9IHNpemVvZihUYXJnZXQpID49IHNp
emVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFy
Z2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0
LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0
eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0
eXBlLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+
OjptYXgoKTsKICAgICB9CiB9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUs
IHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdh
eXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSBzdGQ6
Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwg
ZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisg
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIC8vIFdoZW4gY29udmVydGluZyB2YWx1ZSB0byB1bnNpZ25lZCBTb3VyY2UsIHZhbHVl
IHdpbGwgYmVjb21lIGEgYmlnIHZhbHVlIGlmIHZhbHVlIGlzIG5lZ2F0aXZlLgogICAgICAgICAv
LyBDYXN0ZWQgdmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2VyIHRoYW4gVGFyZ2V0OjptYXggYXMgU291
cmNlIGlzIGJpZ2dlciB0aGFuIFRhcmdldC4KQEAgLTE2OCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUs
IGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBUaGUgdW5zaWduZWQgU291cmNlIHR5cGUgaGFzIGdyZWF0ZXIgcHJlY2lzaW9uIHRoYW4g
dGhlIHRhcmdldCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3VyY2Ugd2lsbCB3aWRlbi4KICAgICAgICAg
cmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4oc3RkOjpudW1lcmljX2xpbWl0czxU
YXJnZXQ+OjptYXgoKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Ry
dWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCBmYWxzZT4gewot
ICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVy
IG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4NCw3ICsxODQs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkK
KyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAg
ICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0
aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyBzaWdu
ZWQgd2l0aCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLiBJZiBzdHJpY3RseSBncmVhdGVyLCBp
dCBpcyBhbHdheXMgc2FmZS4KICAgICAgICAgaWYgKHNpemVvZihUYXJnZXQpID4gc2l6ZW9mKFNv
dXJjZSkpCkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0
aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyB1bnNp
Z25lZCB3aXRoIGdyZWF0ZXIgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdmFsdWUgPj0gMDsK
ICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIg
Ym9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVlKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFNh
ZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQordGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGNvbnZl
cnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKIHsKICAgICBpZiAoIWlzSW5C
b3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk5Niw2ICs5
OTYsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gYm9vbCBwcm9k
dWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKICAgICByZXR1cm4gY2hlY2tlZFByb2R1Y3Q8VD4o
YXJncy4uLikuaGFzT3ZlcmZsb3dlZCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29s
IGlzU3VtU21hbGxlclRoYW5PckVxdWFsKFQgYSwgVCBiLCBUIGJvdW5kKQoreworICAgIENoZWNr
ZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+IHN1bSA9IGE7CisgICAgc3VtICs9IGI7CisgICAgcmV0dXJu
ICFzdW0uaGFzT3ZlcmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDw9IGJvdW5kOworfQorCiB9CiAK
IHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsKQEAgLTEwMTcsMyArMTAyNCw0IEBAIHVzaW5n
IFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVzaW5nIFdURjo6aXNJbkJvdW5kczsKIHVzaW5n
IFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5nIFdURjo6c3VtT3ZlcmZsb3dzOwordXNpbmcg
V1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYzZkMTVlZGQxM2Mu
LmE2OTU3ZWM2NzY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEwLTEyICBS
b2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FT
TSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBwYXJ0cyBvZiBXZWJDb3Jl
IHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5vdCBidWlsZCBhZnRlciBJIG1hZGUgdGhlIGxl
bmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5cyByZXR1cm4gc2l6ZV90IGluc3RlYWQgb2Yg
dWludDMyX3QuCisgICAgICAgIEkgZml4ZWQgaXQgdHJpdmlhbGx5IGJ5IFJFTEVBU0VfQVNTRVJU
aW5nIHRoYXQgdGhlIHNpemVfdCBmaXRzIGluIGEgdWludDMyX3QgYW5kIHRoZW4gY2FzdGluZyBp
dC4KKyAgICAgICAgTm8gbmV3IHRlc3RzIGZvciBXZWJDb3JlIGFzIHRoZXJlIGlzIG5vIGludGVu
ZGVkIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5l
bCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6CisgICAgICAgICog
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
ZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09C
b3guaDoKKwogMjAyMS0xMC0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBIYXZlIHRoZSBTY3JvbGxpbmdUcmVlIHRyYWNrIG5vZGVzIHdpdGggYW5p
bWF0ZWQgc2Nyb2xscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcAppbmRleCBjYjdlODRkNDUzODMuLjJkYjQ5Y2EyNGExZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE5MywxMiAr
MTkzLDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwo
UmVmPEZsb2F0MzJBcnJheT4mJiBkZXN0aW5hdGlvbiwKICAgICAKICAgICBGbG9hdDMyQXJyYXkq
IGNoYW5uZWxEYXRhID0gbV9jaGFubmVsc1tjaGFubmVsTnVtYmVyXS5nZXQoKTsKICAgICAKLSAg
ICBzaXplX3QgZGF0YUxlbmd0aCA9IGNoYW5uZWxEYXRhLT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVn
aXN0ZXIgZGF0YUxlbmd0aCA9IGNoYW5uZWxEYXRhLT5sZW5ndGgoKTsKICAgICAKICAgICBpZiAo
YnVmZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0g
ICAgdW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIFVDUFVS
ZWdpc3RlciBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBz
dGQ6Om1pbihkZXN0aW5hdGlvbi5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNv
bnN0IGZsb2F0KiBzcmMgPSBjaGFubmVsRGF0YS0+ZGF0YSgpOwpAQCAtMjIxLDEyICsyMjEsMTIg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5uZWwoUmVmPEZsb2F0
MzJBcnJheT4mJiBzb3VyY2UsIHVuc2lnbmUKICAgICAKICAgICBGbG9hdDMyQXJyYXkqIGNoYW5u
ZWxEYXRhID0gbV9jaGFubmVsc1tjaGFubmVsTnVtYmVyXS5nZXQoKTsKICAgICAKLSAgICBzaXpl
X3QgZGF0YUxlbmd0aCA9IGNoYW5uZWxEYXRhLT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIg
ZGF0YUxlbmd0aCA9IGNoYW5uZWxEYXRhLT5sZW5ndGgoKTsKICAgICAKICAgICBpZiAoYnVmZmVy
T2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAgdW5z
aWduZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIFVDUFVSZWdpc3Rl
ciBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1p
bihzb3VyY2UuZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCog
c3JjID0gc291cmNlLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCA2YzFjOTQ0MDIyZWQuLmFjODljYWVi
ZWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGlt
ZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0
aW1lQW5hbHlzZXIuY3BwCkBAIC0xOTYsOCArMTk2LDggQEAgdm9pZCBSZWFsdGltZUFuYWx5c2Vy
OjpnZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogICAg
IGRvRkZUQW5hbHlzaXNJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBs
aW5lYXIgbWFnbml0dWRlIHRvIHVuc2lnbmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5zaWduZWQg
c291cmNlTGVuZ3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVfdCBsZW5n
dGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOwor
ICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7
CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKSwg
ZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGNvbnN0
IGRvdWJsZSByYW5nZVNjYWxlRmFjdG9yID0gbV9tYXhEZWNpYmVscyA9PSBtX21pbkRlY2liZWxz
ID8gMSA6IDEgLyAobV9tYXhEZWNpYmVscyAtIG1fbWluRGVjaWJlbHMpOwogICAgICAgICBjb25z
dCBkb3VibGUgbWluRGVjaWJlbHMgPSBtX21pbkRlY2liZWxzOwpAQCAtMjI3LDggKzIyNyw5IEBA
IHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YShGbG9hdDMyQXJy
YXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBs
ZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAg
ICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOwor
ICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBsZW5ndGgg
PSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+
IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6
ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7
CiAgICAgICAgIEFTU0VSVChpc0lucHV0QnVmZmVyR29vZCk7CkBAIC0yNTEsOCArMjUyLDkgQEAg
dm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSYg
ZGVzdGluYXRpb25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
dW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0g
c3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90
IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXpl
X3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjpt
aW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAg
ICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJ
bnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAg
ICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYTFhOGZhMjkyOWNhLi43
OTIzZjg5ZmM1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtOTQsNiArOTQsNyBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1dhc21Nb2R1bGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ZYXJyRmxh
Z3MuaD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGlj
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMzQyLDggKzM0Myw5IEBA
IHN0YXRpYyB1bnNpZ25lZCBjb3VudFVzYWdlcyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMp
CiAgKiBWZXJzaW9uIDcuIGFkZGVkIHN1cHBvcnQgZm9yIEZpbGUncyBsYXN0TW9kaWZpZWQgYXR0
cmlidXRlLgogICogVmVyc2lvbiA4LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZURhdGEncyBjb2xv
clNwYWNlIGF0dHJpYnV0ZS4KICAqIFZlcnNpb24gOS4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VC
aXRtYXAgY29sb3Igc3BhY2UuCisgKiBWZXJzaW9uIDEwLiBjaGFuZ2VkIHRoZSBsZW5ndGggKGFu
ZCBvZmZzZXRzKSBvZiBBcnJheUJ1ZmZlcnMgKGFuZCBBcnJheUJ1ZmZlclZpZXdzKSBmcm9tIDMy
IHRvIDY0IGJpdHMKICAqLwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0g
OTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDEwOwogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFRlcm1pbmF0b3JUYWcgPSAweEZGRkZGRkZGOwogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cmluZ1Bvb2xUYWcgPSAweEZGRkZGRkZFOwogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IE5vbkluZGV4UHJvcGVydGllc1RhZyA9IDB4RkZGRkZGRkQ7CkBAIC0zOTksNyArNDAxLDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsK
ICAqICAgIHwgT2JqZWN0UmVmZXJlbmNlCiAgKiAgICB8IE1lc3NhZ2VQb3J0UmVmZXJlbmNlVGFn
IDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgQXJyYXlCdWZmZXIKLSAqICAgIHwgQXJyYXlCdWZm
ZXJWaWV3VGFnIEFycmF5QnVmZmVyVmlld1N1YnRhZyA8Ynl0ZU9mZnNldDp1aW50MzJfdD4gPGJ5
dGVMZW5ndGg6dWludDMyX3Q+IChBcnJheUJ1ZmZlciB8IE9iamVjdFJlZmVyZW5jZSkKKyAqICAg
IHwgQXJyYXlCdWZmZXJWaWV3VGFnIEFycmF5QnVmZmVyVmlld1N1YnRhZyA8Ynl0ZU9mZnNldDp1
aW50NjRfdD4gPGJ5dGVMZW5ndGg6dWludDY0X3Q+IChBcnJheUJ1ZmZlciB8IE9iamVjdFJlZmVy
ZW5jZSkKICAqICAgIHwgQ3J5cHRvS2V5VGFnIDx3cmFwcGVkS2V5TGVuZ3RoOnVpbnQzMl90PiA8
ZmFjdG9yOmJ5dGV7d3JhcHBlZEtleUxlbmd0aH0+CiAgKiAgICB8IERPTVBvaW50CiAgKiAgICB8
IERPTVJlY3QKQEAgLTQ2Myw3ICs0NjUsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5n
RGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgT2JqZWN0UmVmZXJlbmNlVGFnIDxv
cEluZGV4OkluZGV4VHlwZT4KICAqCiAgKiBBcnJheUJ1ZmZlciA6LQotICogICAgQXJyYXlCdWZm
ZXJUYWcgPGxlbmd0aDp1aW50MzJfdD4gPGNvbnRlbnRzOmJ5dGV7bGVuZ3RofT4KKyAqICAgIEFy
cmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDY0X3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CiAg
KiAgICBBcnJheUJ1ZmZlclRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIFNoYXJl
ZEFycmF5QnVmZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqCkBAIC05OTgsOCArMTAwMCwxMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFJlZlB0cjxB
cnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1
ZmZlclZpZXcodm0sIG9iaik7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90Pihh
cnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSkpOwotICAgICAgICB3cml0ZShzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgdWlu
dDY0X3QgYnl0ZU9mZnNldCA9IGFycmF5QnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpOworICAgICAg
ICB3cml0ZShieXRlT2Zmc2V0KTsKKyAgICAgICAgdWludDY0X3QgYnl0ZUxlbmd0aCA9IGFycmF5
QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpOworICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKICAg
ICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGFycmF5QnVmZmVyVmlldy0+
cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAg
ICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7
CkBAIC0xMjYzLDggKzEyNjcsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB3cml0ZShJ
bWFnZURhdGFUYWcpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPndpZHRoKCkpOwogICAg
ICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICB3cml0
ZShkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRh
dGEoKS5kYXRhKCksIGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQ2hl
Y2tlZFVpbnQzMiBkYXRhTGVuZ3RoID0gZGF0YS0+ZGF0YSgpLmxlbmd0aCgpOworICAgICAgICAg
ICAgICAgIGlmIChkYXRhTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgd3JpdGUoZGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+
ZGF0YSgpLmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+
Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KQEAgLTEzMTEsOCArMTMyMCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHdyaXRlKEFycmF5QnVmZmVyVGFnKTsKLSAg
ICAgICAgICAgICAgICB3cml0ZShhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAg
ICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRh
dGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHVpbnQ2
NF90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICAgICAg
ICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
b2JqLT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CkBAIC0yNTU1LDkgKzI1NjUs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBy
ZWFkQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgTGVuZ3RoVHlwZT4KKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlckltcGwo
UmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCiAgICAgewotICAgICAgICB1aW50MzJf
dCBsZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgbGVuZ3RoOwogICAgICAgICBpZiAoIXJlYWQo
bGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fcHRyICsg
bGVuZ3RoID4gbV9lbmQpCkBAIC0yNTY5LDE1ICsyNTgwLDIzIEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlldyhWTSYg
dm0sIEpTVmFsdWUmIGFycmF5QnVmZmVyVmlldykKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlcihS
ZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmIChtX3Zl
cnNpb24gPCAxMCkKKyAgICAgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBsPHVpbnQz
Ml90PihhcnJheUJ1ZmZlcik7CisgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBsPHVp
bnQ2NF90PihhcnJheUJ1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExl
bmd0aFR5cGU+CisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbChWTSYgdm0sIEpTVmFs
dWUmIGFycmF5QnVmZmVyVmlldykKICAgICB7CiAgICAgICAgIEFycmF5QnVmZmVyVmlld1N1YnRh
ZyBhcnJheUJ1ZmZlclZpZXdTdWJ0YWc7CiAgICAgICAgIGlmICghcmVhZEFycmF5QnVmZmVyVmll
d1N1YnRhZyhhcnJheUJ1ZmZlclZpZXdTdWJ0YWcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB1aW50MzJfdCBieXRlT2Zmc2V0OworICAgICAgICBMZW5ndGhUeXBlIGJ5dGVP
ZmZzZXQ7CiAgICAgICAgIGlmICghcmVhZChieXRlT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgYnl0ZUxlbmd0aDsKKyAgICAgICAgTGVuZ3RoVHlw
ZSBieXRlTGVuZ3RoOwogICAgICAgICBpZiAoIXJlYWQoYnl0ZUxlbmd0aCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlck9iaiA9IGFzT2Jq
ZWN0KHJlYWRUZXJtaW5hbCgpKTsKQEAgLTI1ODcsNyArMjYwNiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gdHlwZWRBcnJheUVsZW1lbnRTaXplKGFycmF5QnVm
ZmVyVmlld1N1YnRhZyk7CiAgICAgICAgIGlmICghZWxlbWVudFNpemUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBlbGVt
ZW50U2l6ZTsKKyAgICAgICAgTGVuZ3RoVHlwZSBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVu
dFNpemU7CiAgICAgICAgIGlmIChsZW5ndGggKiBlbGVtZW50U2l6ZSAhPSBieXRlTGVuZ3RoKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNjM0LDYgKzI2NTMsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlldyhWTSYg
dm0sIEpTVmFsdWUmIGFycmF5QnVmZmVyVmlldykKKyAgICB7CisgICAgICAgIGlmIChtX3ZlcnNp
b24gPCAxMCkKKyAgICAgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbDx1aW50
MzJfdD4odm0sIGFycmF5QnVmZmVyVmlldyk7CisgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZm
ZXJWaWV3SW1wbDx1aW50NjRfdD4odm0sIGFycmF5QnVmZmVyVmlldyk7CisgICAgfQorCiAgICAg
Ym9vbCByZWFkKFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KHJlc3VsdC5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBmYjc1N2E0ZDc0ZjYuLmQ5Y2QyNWMwOWJjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgaWYgKGhhc0FycmF5KSB7CiAgICAgICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fYXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5LT5zaXplKCkpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmFycmF5QnVmZmVyQ29udGVu
dHMgOiAqbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpIHsKLSAgICAgICAgICAgIGVuY29kZXIg
PDwgYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpOworICAgICAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRl
cygpKTsKICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlckNvbnRlbnRzLmRhdGEoKSksIGFycmF5QnVm
ZmVyQ29udGVudHMuc2l6ZUluQnl0ZXMoKSwgMSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTks
NyArMTk5LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAgICAgICBhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAg
ICAgICAgd2hpbGUgKGFycmF5TGVuZ3RoLS0pIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ1ZmZl
clNpemU7CisgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplOwogICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi5iYWYxYWJhZDY3YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNjgs
NyArNjgsOSBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29yZTo6QmxvYiYg
YmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwogICAgIGlmICghYnl0
ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSgwVSwg
MSksIDAsIDApOworICAgICAgICAvLyBUaGUgY2FzdCBsb29rcyB3ZWlyZCwgYnV0IGlzIHJlcXVp
cmVkIGZvciB0aGUgb3ZlcmxvYWRpbmcgcmVzb2x1dGlvbiB0byBzdWNjZWVkLgorICAgICAgICAv
LyBXaXRob3V0IGl0LCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkgd2hlcmUgQXJyYXlCdWZmZXI6OmNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKSBjb3VsZCBi
ZSBjYWxsZWQgaW5zdGVhZC4KKyAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPigwVSksIDEpLCAwLCAwKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlUmVmPEJsb2JMb2Fk
ZXI+KFt0aGlzXShCbG9iTG9hZGVyJikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IDg3MGJkYzgwZjM1NS4uMWJhMzIyYzEwYmFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3Rz
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjMsNyArNjQsMTAgQEAgcHJvdGVjdGVkOgogICAg
IHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFImIHJldHVyblZhbHVlLCBWJiB2aWV3LCB1bnNpZ25l
ZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5lc3MpCiAgICAgewogICAgICAgICBib29sIHJl
YWRTdGF0dXMgPSBmYWxzZTsKLSAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxU
PihvZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAg
ICAgIFVDUFVSZWdpc3RlciBhY3R1YWxPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIFQgdmFsdWUg
PSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4oYWN0dWFsT2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRs
ZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0luQm91bmRz
PHVpbnQzMl90PihhY3R1YWxPZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0ID0gYWN0dWFsT2Zmc2V0
OwogICAgICAgICBpZiAoIXJlYWRTdGF0dXMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
</data>
<flag name="commit-queue"
          id="465258"
          type_id="3"
          status="-"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441154</attachid>
            <date>2021-10-13 16:03:28 -0700</date>
            <delta_ts>2021-10-13 16:27:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>269899</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi4zNzliYzNjYTY4MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBicmFu
Y2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZh
bCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pTVmFs
dWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1h
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwppbmRl
eCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRt
ZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9v
KG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQgbWF4
U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3
MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAgIHZh
ciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwICsg
MSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
ZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYg
KGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cgZXhw
ZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjog
ZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAog
ZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJh
eSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTogMHg4
MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNpemUg
PSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAgIG1l
bW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAtIDB4
MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4uODBm
ZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBAQAot
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9y
ICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikK
Ky8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1LDIx
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIpKTsK
KyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
Zm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBtYXhT
aXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9
PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikpOwog
ICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0
cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUudG9T
dHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAg
IGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKwor
ZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0
aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlW
YWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJh
eVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2Eg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0
aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFj
dHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsg
bCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0
ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmlu
Zyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdp
Z3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRocmVl
R2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBm
b3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0
aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCww
ICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVl
ICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Cisg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTUzOWI1MGQyZTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxs
eS1vb2IuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3Ig
KCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQor
Ly9AIHJ1bkRlZmF1bHQoKQorZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0
aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSkKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9
Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0
OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJy
YXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAg
ICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
ICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAg
IHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0
QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IGFjdHVhbExlbmd0aCArIDEwOworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAg
IGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAoIkluIG91dC1vZi1ib3Vu
ZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10
aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpp
bmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0
ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYsMTMg
QEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAgICAg
dmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRNZW1v
cnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1vZHVs
ZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAK
LWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAoZXhj
ZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBpbnZh
bGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIoKSkn
KSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUt
dGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNt
LW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwppbmRl
eCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3Jl
Z3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJ
WkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZhciBl
eGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7CiB9
IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAhPSAi
UmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAoZXhj
ZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2FzOiAi
ICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZGU0Yjk1NDQzNC4uNzNmYmU1NThkN2Y5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFJlYmFzZWxpbmVkIHRocmVlIGZvbGxvd2luZyB0ZXN0cyBhcyBkaWZmZXJlbnQgb3Ig
ZmV3ZXIgZXJyb3IgbWVzc2FnZXMgYXBwZWFyIG9uIHRoZSBjb25zb2xlLgorICAgICAgICBBbHNv
IGNoYW5nZWQgY3VycmVudFZlcnNpb24gaW4gc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBm
cm9tIDkgdG8gMTAuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWludmFsaWQtcmVzdWx0LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisgICAgICAgICogd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0xMiAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRob3V0LWlu
dGVyYWN0aW9uLnB5IGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQtYnVmZmVyLWNy
YXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFn
ZURhdGEtaW52YWxpZC1yZXN1bHQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA1NzQ1
OTEyZmYwNzkuLjQ4ZWVmOTNjNDYyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWdldEltYWdlRGF0YS1pbnZhbGlkLXJlc3VsdC1idWZmZXItY3Jhc2gtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEt
aW52YWxpZC1yZXN1bHQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAK
LUNPTlNPTEUgTUVTU0FHRTogVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzLiBS
ZXF1ZXN0ZWQgc2l6ZSB3YXMgMzgxMDAwMDAwIHggMgotQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlk
U3RhdGVFcnJvcjogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLgogUEFTU0VEIChJ
ZiB0aGlzIHBhZ2UgZGlkIG5vdCBjcmFzaC4pCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNj
cmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2Ny
aXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5o
dG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0PgogCi1jb25z
dCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MGE7CiAK
IC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVl
ZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gt
ZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jh
c2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Nv
bnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05T
T0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0
aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUz
Njg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBl
Y3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRl
eHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09M
RSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVmZmVyIHdpdGgg
MSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0aCBvZiA1MzY4
NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9mZmxpbmVBdWRp
b0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5kZXJpbmcgYnVm
ZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpp
bmRleCAwYWM3NWM5NzQ3OWQuLjc1OTNmYmE5ZTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3Nl
dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAg
ICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Ig
d2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8g
Z2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4g
YSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRB
cnJheS9ldGMuLiB0byBiZWluZyBVQ1BVUmVnaXN0ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJl
cXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RG
Ry9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRlciB0
byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9u
IGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRB
cnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0
SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2Vy
IG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZH
L0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFkIHRv
IGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3QgYWNj
ZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAgLSBJ
IG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwvRGF0
YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGluZGlj
ZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11bSBz
aXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEgIm1h
eUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQcm9m
aWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBpbmRl
eCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0aW9u
IG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBkYXRl
ZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3JyZWN0
bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRpbWUg
dG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMuCisg
ICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVw
IHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBh
dGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGlu
ZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBo
aWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBw
YXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBjdXJy
ZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZv
cm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBh
dGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRy
ICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisg
ICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMg
Y2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2gg
aXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRp
ZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBv
ZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkK
KyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQg
d2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50
cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6
OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6
YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0
aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJM
ZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGlu
ZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29kZS9B
cnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdl
VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVk
QXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5saW5r
ZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBk
YXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9k
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6
QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VU
eXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6
d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFz
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVy
KToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6REZH
OjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50
cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
Ojpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR2Vu
ZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5o
OgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9y
YWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZElu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRB
cnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJp
bmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHND
aGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVk
QXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZs
b2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VU
eXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lz
dGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChK
U0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNo
ZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0lu
Qm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMT3V0
cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6Cisg
ICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZl
ckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2Nh
dGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcEluZGV4
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRl
eCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVm
ZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6
c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUlt
cGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3KToK
KyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3
KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
VW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAgICAg
ICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZm
ZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZl
clZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmll
d0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpz
ZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6Cisg
ICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlND
OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lm
aWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJ
bmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhR
dWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdU
eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6
CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21Q
YWdlQ291bnQuaDoKKwogMjAyMS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2luIG1pZ3JhdGlvbiBmcm9tIFdURjo6VmFyaWFu
dCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4u
NTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2Fh
MGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUs
OSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3Ry
dWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVz
ZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0
IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAg
Ci0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAg
ICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQog
ICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3
OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
ZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAg
ICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNv
bnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAg
ICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRy
IDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIo
Y29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29u
c3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRy
KCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNU
cnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3Rl
ZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQ
VShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0
cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRy
IHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewog
ICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJ
bW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50
MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFs
dWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAg
ICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9Owog
ICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1w
bGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAg
ICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3Rl
ZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1
c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQo
aW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChp
bnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQp
Ci0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAg
ICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9
CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2
YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2
YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAj
aWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhw
bGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0
cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNv
bnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1
cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJs
ZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0
UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQz
Ml90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdp
c3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFi
YmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQ
VShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQp
CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBD
UFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5k
aWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMy
KCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BV
KFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0
KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYg
Ly8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2
b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsx
ODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJp
Z2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8g
T3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFu
Y2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVm
aW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRS
b2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUg
YW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91
bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9y
QmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFu
dChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGlu
ZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRj
aFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3
ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4K
KyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAg
ICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1
c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBj
b21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMy
IHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQo
cmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThmZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8g
RklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZm
OyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNo
KHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZh
bHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9w
ZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZElt
bTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2Fk
NjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIuLjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUu
aApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwg
UmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFy
Z2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0g
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2Fk
MzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIp
OwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1
bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBlNjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVn
aXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGlu
ZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNp
ZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQot
ICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVl
KSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAz
OTc5OTJhM2E3NTAuLmZjM2U5MDY2NGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2Fz
ZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVy
OgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNl
dHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICBjYXNlIEluSGl0OgogICAgIGNh
c2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDgg
QEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5Rmxv
YXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAg
Ly8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBw
cm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQgYXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJp
bnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEyICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3Rh
dGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAKICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2Ny
YXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
dHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkpOwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5n
dGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlH
UFIsIHNjcmF0Y2hHUFIpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICAvLyBUaGUgbGVu
Z3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcg
b24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNz
T2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChq
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUu
bWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkg
KzEyMDMsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9
IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAg
IGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFT
cGFjZSk7CiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChhZGRyZXNz
T2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgaml0LmxvYWQzMihhZGRyZXNz
T2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2VuZGlmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0
b3IoKSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50
YWcoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hH
UFIsIGZhbHNlKTsKLQogICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIs
IHNjcmF0Y2hHUFIpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKICAgICAgICAgICAgIHN3
aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKQEAgLTE1OTUsOSArMTYwNSwxNCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgcmVhZHkubGluaygmaml0
KTsKICAgICAgICAgfQogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQ
Uik7Ci0gICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBz
ZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KLSAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0
Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVy
dHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3NPZkxlbmd0aCA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSk7CisgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8v
IFRoZSBsZW5ndGggaXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRl
cGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFw
cGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIs
IGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2gu
YXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlH
UFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3Ig
PSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAg
LTE2MDUsOSArMTYyMCwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
ICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZl
ZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAg
ICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6
Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBqaXQubG9hZDY0
KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMy
KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFs
bHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwg
c2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9w
ZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAg
ICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uYmVlN2E5ZmNkYzkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEg
Yml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2Vz
cyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0
IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRh
a2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBl
cyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJh
eU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRo
aW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0K
LSAgICAKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIC8vIEFjY2Vzc2luZyB0eXBlZCBhcnJh
eXMgbGFyZ2VyIHRoYW4gdGhhdCB0ZW5kcyB0byBiZSBtb3JlIGNvbXBsaWNhdGVkIGFzIHdlIGNh
bid0IGZvcmNlIGNvbnZlcnQgZXZlcnl0aGluZyB0byBpbnQzMl90LgorICAgIC8vIFdlIG9ubHkg
c3VwcG9ydCBzdWNoIGxhcmdlIHR5cGVkIGFycmF5cyBvbiA2NC1iaXQgcGxhdGZvcm1zLgorICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICB2b2lkIHNldE1heUJlTGFy
Z2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsgfQorICAgIGJv
b2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3Qg
eyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorI2Vsc2UKKyAgICBib29sIG1heUJl
TGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisjZW5kaWYKKwogICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2VlblN0
cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFycmF5
TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9k
ZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21h
eVN0b3JlVG9Ib2xlOyB9CkBAIC0yNDQsNiArMjU0LDkgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1
cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9I
b2xlIHsgZmFsc2UgfTsgLy8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRp
Y2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJy
YXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJl
bnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMg
b2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdo
YXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9Owor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7IGZh
bHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDog
MTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29s
IG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY2LDEzIEBAIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxpbmtl
ZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRl
ZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1f
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAg
ICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7
CkBAIC0yODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3Vz
ZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAg
ICBpZiAobV9tYXlCZUxhcmdlVHlwZWRBcnJheSkKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5t
X21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFy
cmF5OworI2VuZGlmCiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjkwLDcgKzMxNiwxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX291
dE9mQm91bmRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIHsg
dHJ1ZSB9OworICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOworI2lm
IENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7Cisj
ZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5UHJvZmlsZSkgPD0g
OCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDJiMmY1ZTAz
MDE5Zi4uMWE2M2QyYzExN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDYzLDcgKzM0NjMs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsK
ICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxl
VmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUt
PmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgaWYgKHZpZXcgJiYg
aXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRy
eUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJ
bnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAg
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3
KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBpZiAodmlldykgewot
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7Cisg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXct
PmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0ICYm
IGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0g
bV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1
ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVS
ZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAg
ICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAt
NDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUg
Q2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0
IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
ICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1
MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICsz
MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5j
aGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBu
b3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAg
ICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAg
ICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5
YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkp
OwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAg
aWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgp
KQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3Qg
YmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDgg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRB
cnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVz
ZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3Qg
R2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkg
ewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNi
Li5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24g
YWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0
aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5
TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNw
ZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAg
IHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJy
YXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNw
ZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAg
ICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlC
ZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYz
LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJy
YXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247
CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRl
cy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3Bl
Y3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNp
b24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlv
bik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5h
c0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3Jk
KCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9u
KEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJz
aW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3Mo
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZl
cnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
cywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRp
b247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAg
IH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxl
LCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAg
ICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3Jl
VG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBi
b29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlD
bGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9m
aWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMg
PSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0g
ICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNw
ZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBB
cnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAg
QXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJv
b2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2Vy
KTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJh
eSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51
c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAg
ICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAg
JiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBj
b252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVy
c2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3
OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwog
ICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29u
dmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBl
ZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7
CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLjAzNGJkZDY2MTUxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgw
NywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxU
YXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVy
YW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50
JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogeworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHN0YXRpY19hc3NlcnQoZW5hYmxlSW50
NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAg
IGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxs
TmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIUNQVShSRUdJU1RFUjY0KQorICAgICAgICBp
ZiAod2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBl
ZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFz
c0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzgyMiwyNiArMzgzMSwzMCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBB
cnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIE5vZGUqIGxlbmd0aE5vZGUg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBOb2RlVHlwZSBvcCA9
IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPyBHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MiA6IEdldEFycmF5TGVuZ3RoOworICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRk
VG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKICAgICAgICAgLy8gT3VyIEFycmF5TW9kZSBzaG91bGRuJ3QgY2F1
c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0byBleGl0IHdpdGhvdXQgZWZm
ZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBhZGRUb0dyYXBoKEV4aXRP
Syk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAgICAgICAgIHNldChyZXN1bHQs
IGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMg
d2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAvLyB0aGF0IG92ZXJmbG93cyBp
bnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25zdGFudChqc051bWJlcihsb2dT
aXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhCaXRMU2hpZnQsIGxl
bmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBjYW5ub3QgdXNlIGEgQml0TFNo
aWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUgYSBieXRlTGVuZ3RoIHRoYXQg
b3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6ZSA9IGpzQ29uc3RhbnQoanNO
dW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJp
dGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisgICAgICAgIGJv
b2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA9ICFpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpOworI2lmICFDUFUoUkVHSVNURVI2NCkKKyAg
ICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAg
ICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigp
KS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYs
MTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5
cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3Ag
PSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFw
aChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSks
IHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9CiAKICAgICBjYXNl
IFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGlm
ICh3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBU
eXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5j
bGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0g
QXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlw
ZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUg
b3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJy
YXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4
ZGQzZmRlOTc3OS4uOWFkNWMyNzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVG
dQogICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdl
dFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5
VmFsRGlyZWN0OgpAQCAtMjM5LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBUb0Jvb2xlYW46CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJl
cDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEz
MzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBk
ZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMs
IG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAg
ICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBu
b2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBl
ZEFycmF5VmlldygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
Y2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5h
cnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxp
bmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5h
YmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUz
NGUuLmZhMTdiZjExNDE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRC
eVZhbDoKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcu
LjQwMjg0Y2ZhMjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApA
QCAtMTg1LDYgKzE4NSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2Fz
ZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2Ug
Q29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tW
YXJhcmdzOgpAQCAtMTk3LDEwICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
CiAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRC
eU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IDhlMWI5M2VlZTZjYS4uNTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1
bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNp
ZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5k
cygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRl
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3
ICsxMDc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0
OiB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBv
bmx5IHNlZW4gT3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ug
c2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlw
ZShBcnJheTo6R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsx
MTM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1Vz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJB
cnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBj
YXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVp
bnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYg
KzExOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2Rl
LT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5h
cnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYm
ICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKApAQCAtMTcxNywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdB
QmFkVGltZShub2RlKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUy
KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0g
bm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5w
cmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAg
ICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAg
ICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0Fy
cmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5n
dGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1
Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25D
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiAr
MjIxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoK
ICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFu
dFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNh
c2UgVmFsdWVUb0ludDMyOgpAQCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAg
ICAKLSAgICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5v
ZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3Rv
cmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5n
dGhOZWVkc1N0b3JhZ2UpOwotICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxl
bmd0aCwgb3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVk
Z2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZv
aWQgY29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlh
Nzg2MC4uMmQ4NmViNzU3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRpb25JbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
ZW5lcmF0aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0
dXMgb2YgbGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRl
IGluZm9ybWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVy
cywgYW5kIGlmIHNvIHdoaWNoLAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQg
dG8gdGhlIFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8v
IGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQg
aW4gYSBib3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBl
IG9mIGJveCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVl
IHJlbWFpbiwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3Mg
aG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQg
d2Uga25vdyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMg
YXNzb2NpYXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9u
SW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAK
aW5kZXggMmJiOWQ0YmVhODAwLi4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAg
ICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsK
IAorICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKwor
ICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5
cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFBy
b3RvdHlwZUxvYzoKICAgICAgICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5k
ZXggMjY5MTcxY2IzNDFkLi40MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2lu
ZCB7CiAgICAgU2V0dGVyTG9jLAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0
ZU9mZnNldExvYywKKyAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVk
QXJyYXlMZW5ndGhJbnQ1MkxvYywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAg
ICAgU3RhY2tQYXlsb2FkTG9jLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFh
MWM4YmNmNTEuLjZkZWRhMDM3ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAg
LTEzMzUsNyArMTMzNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChub25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRz
Q2hlY2tFbGltaW5hdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjp2YWxpZGF0ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3Ao
KSA9PSBDaGVja0luQm91bmRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5v
ZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUt
cHJvZHVjaW5nIG5vZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eU9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAg
ICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JO
ZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIw
MDQsNiArMjAwNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVk
UHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
b3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlW
YWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgs
IE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlw
ZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0
aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIgYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2Ug
dG8gcmV0dXJuaW5nIEludDUyIGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlk
YXRpb24gZmFpbHVyZXMuICovIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0
SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdElu
dDMyKSBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
U2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRh
a2VzIGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9c
CiAgICAgbWFjcm8oQ2hlY2tKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhl
IHNhbWUgYXMganNDYXN0IGJ1dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlv
biAqL1wKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4
IGU1MDdmMWU4MGFjMC4uYjNmMmJiN2E5MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBK
U1ZhbHVlCiAgICAgfQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVj
dC0+Y2FuU2V0SW5kZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVj
dC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0
LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAg
ICByZXR1cm47CkBAIC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBw
dXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhT
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdp
dGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNo
YXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0
aCBpcyBuZWdhdGl2ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
CisKKyAgICBVQ1BVUmVnaXN0ZXIgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lz
dGVyPihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9y
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVj
dG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJp
dHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25l
ZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlND
ZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5
MjQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
SW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
UFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3Rl
ciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4
Q2xhbXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIw
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0yMDM2LDcgKzIwMzYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIw
NTIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
RmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcu
LjhmOTZlYzBiMDdlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBT
dHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBC
dXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4
Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciop
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJl
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwg
SlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAy
MGQwNDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4
Niw2ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rp
b24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAg
ICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0
OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2
ICsxMzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVy
OgogICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cAppbmRleCBlM2EyMzlhMzNlMzAuLmM0MmIxZDA4MGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwx
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5
cGVkQXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAg
ICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5n
dGgsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5h
cnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVu
Z3RoLCBLbm93bkludDMyVXNlKTsKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1v
ZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpIHx8IG1fZ3JhcGguaGFzRXhpdFNpdGUobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgeworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQ1MkFueSwgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9k
ZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEludDUy
UmVwVXNlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25v
ZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5
TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNl
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzNywxMiArMTQzLDI1IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIE5vZGUqIGxlbmd0aCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0lu
dDMyT25seSwgb3AsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+
YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBz
dG9yYWdlKTsKLSAgICAgICAgTm9kZSogY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJ
bkJvdW5kcywgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgs
IEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgTm9kZSogY2hlY2tJbkJvdW5kczsKKyAgICAgICAg
aWYgKChvcCA9PSBHZXRBcnJheUxlbmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVM
YXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBPdmVyZmxvdykpKSB7CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFz
ZS5ub2RlKCksIEtub3duQ2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgbGVuZ3RoLT5z
ZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlw
ZSBpcyBhIGR1bW15IHNpbmNlIHRoaXMgbm9kZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55
dGhpbmcuCisgICAgICAgICAgICBjaGVja0luQm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJ
bkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRn
ZShsZW5ndGgsIEludDUyUmVwVXNlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBO
b2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uu
bm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3Vu
ZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUlu
ZGV4LCBTcGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAg
fQorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGphY2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5
VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
LmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlwZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdm
NTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBD
aGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29u
c3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJh
cmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2Fz
ZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBT
dHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
IAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICBy
ZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBl
ZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NDc5NjM4NDQ5NDRhLi5kOTllNzhmYWNkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4ICszMjM4LDQyIEBAIHN0YXRp
YyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcg
cmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVK
SVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpq
dW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewogICAgIGlmIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwog
ICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJs
ZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUs
IDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAg
ICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIFVDUFVSZWdpc3Rl
ciBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9q
aXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUt
PmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAg
ICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNV
SW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgp
OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihp
bmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2ppdC5i
cmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisKKyNp
ZiBDUFUoUkVHSVNURVI2NCkKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwg
c2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vu
ZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2so
Tm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7Ci0gICAgSklUQ29t
cGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFz
ZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlw
ZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoR1BSKTsK
ICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwpAQCAtMzM4
MCwxMCArMzM5NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbklu
dFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5
UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wOwogICAgIEZQUlJlZyByZXN1bHRGUFIgPSBJ
bnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4KERhdGFGb3JtYXRJ
bnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZvcm1hdEpTOwogCi0g
ICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7
CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJl
Zywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAgICAgY29uc3RleHBy
IGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFycmF5TG9hZFJlc3Vs
dChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3VsZEJveCwgcmVzdWx0
RlBSKTsKQEAgLTM1NTUsNiArMzU3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAg
QVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRo
aXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsK
ICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2Rl
LCAyKTsKQEAgLTM1ODcsNyArMzYwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAg
QVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVydHkpOwogICAgIEFTU0VS
VCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJv
cGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkg
ewogICAgIGNhc2UgMToKQEAgLTM2NDUsMTAgKzM2NjIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJh
eVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFu
ZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigp
OwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBz
dG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAgIERhdGFGb3JtYXQg
Zm9ybWF0OwpAQCAtMzY1Niw3ICszNjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKIAog
ICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJl
c3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcs
IHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VS
ZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5
cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBtX2ppdC5sb2FkRmxvYXQoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjkwLDEwICszNzA5LDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwg
R1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywg
dmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBv
cmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWVPcC5mcHIo
KTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJv
cGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5
cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwgc2NyYXRjaEdQUik7CiAg
ICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDogewpAQCAt
Nzk2Nyw3ICs3OTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9y
YWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVu
dGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50
YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRo
KTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3Rv
cmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxp
ZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MDM5LDkgKzgw
NjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKICAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEu
Z3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKLSAgICBBU1NFUlQoYmFz
ZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRhdGFHUFIpOwogCiAg
ICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKIApAQCAtODA4Myw2ICs4MTAxLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChO
b2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwogI2VuZGlmCiAKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhh
dCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0
b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
KTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0K
IApAQCAtODM0OSwxMiArODM3MiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBDUFUoUkVHSVNURVI2
NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworI2Vsc2UKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgogICAgICAg
ICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2Rl
KiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZ09yU3ltYm9sKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTE5LDEwICsxMTE0OCwyNCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYXV0
byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlw
ZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgCisKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93
IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRmb3Jt
cworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNp
emUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIG1f
aml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNjcmF0Y2hHUFIpOworICAgIGVtaXROZXdU
eXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1
cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwot
ICAgIAorICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVk
QXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
ICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKQEAgLTExMTM2LDggKzExMTc5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICAKICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHN0b3JhZ2VHUFIpOwogCisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZp
ZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qg
b2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBz
dGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNB
cnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2pp
dC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJ
bW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTEx
MTkzLDkgKzExMjQzLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3Rv
cmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIENQVShSRUdJU1RFUjY0KQor
ICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgc2l6ZUdQUiwKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAg
VHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAg
LTE0MTY3LDYgKzE0MjIzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY29tcGlsZU5l
d1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7CisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2Ug
VW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50
LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggMDdiNTYzYjM0ODNhLi4zMzlmNWQxNDdiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3Ry
aW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAg
IAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lmIENQ
VShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXpl
KE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50
NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAj
aWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlM
ZW5ndGgoTm9kZSopOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxl
Q2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5v
ZGUqKTsKQEAgLTE0MzEsMTAgKzE0MzgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUFy
aXRoTWluTWF4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVy
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUq
KTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5v
ZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAgSklUQ29tcGlsZXI6Okp1
bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFjaGVkSWZPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzKTsKLSAgICB2b2lkIGVtaXRU
eXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgIHZvaWQgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOwor
I2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5
cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywg
RGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2
b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZh
bE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFt
YmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVy
cmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAg
IEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJ
bnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBH
aXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIs
IGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZh
dGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3Ry
aWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAx
NiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAo
aS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUg
c2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmEwZjI1MjBl
YTM3Li4yMmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVu
dHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAg
ICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAg
ICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlw
ZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNv
bXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0
eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2Fz
ZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBl
T2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTQzOTgsNiArNDQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5k
czoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6
CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNh
c2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNiMzkzZjUyNzVmNy4uMzEwZWRhMjJlMTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiU3BpbGxSZWdpc3RlcnNNb2RlLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKKyNp
bmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCkBAIC0yNjk0LDYgKzI2OTUsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9
IH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50
NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFy
cmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBT
cGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlX
aXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQ
Uik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9k
ZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUg
PCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVk
IGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVj
dG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7
CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5QnVm
ZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9mZnNl
dCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJy
YXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRDb21w
aWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmlldzo6
bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIpOwor
ICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BS
KTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOworCisg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJm
bHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRhdGFH
UFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0YUdQ
Uik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShBUk02
NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5dGVP
ZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJNNjRF
KQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7CisgICAg
bnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVzdWx0
KHZlY3RvckdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC0zNjQ0LDExICsz
NzIzLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgYmFzZUVkZ2UpOwog
ICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgaW5kZXhFZGdl
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2g7CiAKICAgICAgICAgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CiAgICAgICAgIAotICAg
ICAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsK
KyAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQ
Uiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIAogICAgICAgICBHUFJUZW1wb3JhcnkgYXJnc1sy
XTsKICAgICAgICAgCkBAIC00MzgxLDYgKzQ0NjEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworICAgICAg
ICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRl
QnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDk5LDYgKzQ1ODMsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVH
ZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTg2LDEwICs1Njc1LDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBE
YXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVz
dGVkSW1tMzIoMCkpKTsKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BS
LCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0
LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9q
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5k
cywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCkBAIC01Nzg3LDEwICs1ODc4LDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5lbXBsYWNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMykpOwogICAgICAgICBHUFJSZWcgaXNMaXR0bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVu
ZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJhbmQtPmdwcigpIDogSW52YWxpZEdQUlJl
ZzsKIAorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygp
LCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NU
aGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CiAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEp
CiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEp
LCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRh
Vmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAg
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApA
QCAtNjA0Miw2ICs2MTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBBc3NlcnRJbkJv
dW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50
NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAg
IGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4u
ZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNl
IFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNo
ZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAgICAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAg
ICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0
QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAg
ICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYg
KzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAg
ICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNl
IFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5l
cmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
UmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRC
dXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgog
ICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0xOTksNiAr
MjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBD
aGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29u
c3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJh
cmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAg
ICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgog
ICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNhOGY1Y2ZjNzk1
ZS4uZDFjZTIzNzQxNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSk7
CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAg
ICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAg
ICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUNoZWNr
SW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlW
YWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmlzTnVs
bChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkp
OwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAg
ICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgp
CiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00
ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAgICAgTFZhbHVl
IHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291
dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksIAorICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihK
U0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAgICB1bnN1cmUo
Y29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRU
byhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw3ICs0ODc3LDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIobV9vdXQuY2Fz
dFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVs
T3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0
b3JPdXQsIHdhc3RlZnVsT3V0KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICAvLyBBSSBw
cm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBi
ZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgICAgIHNw
ZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShyZXN1bHQs
IG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7
CisgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgewor
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0
U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwogICAgIH0K
IAogICAgIHZvaWQgY29tcGlsZUdldFByb3RvdHlwZU9mKCkKQEAgLTUwNTQsOCArNTA3OSw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlm
IChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAg
ICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVn
YXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d19sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0
Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9W
YWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0
SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYgKzUwOTAsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJy
YXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUy
KG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVh
cHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAtNTEwOCw3ICs1MTQxLDE5IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9k
ZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAogICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVt
LgogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpCisg
ICAgeworICAgICAgICAvLyBTaWduLWV4dGVuZGVkIHRvIGFsc28gY2F0Y2ggbmVnYXRpdmUgaW5k
aWNlcworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGxvd1N0cmljdElu
dDUyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5v
VmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVxdWFsKGluZGV4LCBsZW5ndGgpKTsKKwor
ICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBu
byB1c2VyIG9mIHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2Vy
cyBvZiB0aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2Ug
ZG9taW5hdGUgdGhlbS4KKyAgICB9CisKICAgICBMVmFsdWUgY29tcGlsZUdldEJ5VmFsSW1wbCgp
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNjAwOCwxMSArNjA1MywxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0luQm91bmRzID0g
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNPdXRP
ZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZCb3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5k
cykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICBMVmFsdWUg
aXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkNS51
c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0
T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92ZU9yRXF1YWwobV9vdXQuc2lnbkV4dDMyVG82
NChpbmRleCksIGxvd1N0cmljdEludDUyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoaWxkNS51c2VLaW5kKCkg
PT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgaXNPdXRPZkJvdW5kc0NvbmRp
dGlvbiA9IG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3V0
T2ZCb3VuZHNDb25kaXRpb24sIHVuc3VyZShpc091dE9mQm91bmRzKSwgdW5zdXJlKGlzSW5Cb3Vu
ZHMpKTsKKwogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGlzT3V0T2ZCb3VuZHMpOwogICAgICAgICAgICAgICAgICAg
ICBtX291dC5zdG9yZSh2YWx1ZVRvU3RvcmUsIHBvaW50ZXIsIHN0b3JlVHlwZSh0eXBlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTgxNjksOTUg
KzgyMTksMTggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFy
cmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0
KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTEJhc2ljQmxvY2sg
c21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJa
ZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1fb3V0
LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXpl
TGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxs
RW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFs
dWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRy
KHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkp
OwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAg
ICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5
dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRl
SGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAgICAgICAgICAgICAgICBt
X291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQu
bFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAgICAgICAgICAgICAgICBt
X291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVy
dGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsKLSAgICAgICAgICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRl
clR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0
ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0
ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAg
ICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1z
WzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdl
ID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAg
ICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3
aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5h
bWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAg
ZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1
cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9W
SUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UK
LSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1
bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291
dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBt
X291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1
ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKyAg
ICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlw
ZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAg
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRW
YWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVj
dG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0
b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhT
aXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xv
YmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFs
dWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAg
TFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlU
eXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtODI3Nyw3ICs4MjUwLDEwMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlw
ZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVl
IHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAg
ICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVz
dWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8g
V2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXpl
IGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGlu
dDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisKKyAgICAgICAgTFZh
bHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChzaXplNjRCaXRzLCBtX291dC5j
b25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBpZiAo
ZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNpemUg
PSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291
dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0
YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGFs
bG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFs
bG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRXb3Jk
cygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCisg
ICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5j
b25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAgICAg
ICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAg
ICAgICB7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFw
cGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBw
ZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0
ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRo
ZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhh
dmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0
UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7
CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlw
ZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVj
dDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2Up
OyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQ
RV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBF
RF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAg
ICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3Rv
cmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7
CisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9v
dXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFs
dWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdl
VmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7
CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1
bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0
b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRv
cj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwK
KyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlw
ZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0
LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2
b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFs
dWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE0NjU2LDYgKzE0NzIy
LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIGJhc2UgYW5kIHZhbHVl
IGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRzCisgICAgLy8gc3RvcmVzIHZh
bHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2UrYmVnaW4qOCBhbmQgYmFzZStl
bmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwgTFZhbHVlIGJlZ2luLCBMVmFs
dWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCkKICAgICB7CiAg
ICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0ID0gMTA7CkBAIC0xNTU5MSw3ICsx
NTY1OSw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUt
PmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0
UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZm
ZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsK
KyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRl
eFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0
ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9D
aGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyAr
MTU4MDMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2Rl
LT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4
dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVl
KCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7
CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmll
dywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBMVmFsdWUgaW5k
ZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5
dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRv
Q2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcg
KzE3MzA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBkb1VudGFnQXJyYXlQdHIgPSBbJl0o
TFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02NEUpCiAgICAgICAgICAgICBpZiAoa2lu
ZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemUg
PSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdW50YWdB
cnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IGE5NDIwMDkz
ZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgK
QEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZh
bHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZh
bHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2Fk
MzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2Us
IGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7
IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3Ry
YWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExW
YWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwg
TFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2lj
RW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwCmluZGV4IDI1MjBmOGNjNDQ1Ni4uODcyMzAyMmU5YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MywyMyArODMsMzIgQEAg
dm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAg
ICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAg
ICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3Rh
dGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVn
cyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewogICAgICAg
ICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFy
cmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGUpID4gMSkKKyAgICAgICAgICAgIGppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxl
bWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQ
UiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UK
ICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4g
dXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3ZSBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRl
TGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgotICAgICAgICAgICAgaml0LmxzaGlmdDMy
KHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0
Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBh
biBpbnQzMi4KKyAgICAgICAgICAgIGppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVu
dFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAgICAgICAgIH0KLQogICAgICAgICBqaXQuYm94SW50
MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwLDggKzEzOSwxMiBAQCB2b2lkIEludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2
YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAor
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFs
dWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAg
ICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0
YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDRhNWMwODBjMDYwYy4uZmFjOGUwYWM2
NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3UKICAgICAgICAgdWludDMy
X3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpIHsKLSAgICAgICAg
ICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUpOworICAgICAgICAg
ICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9m
aWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRP
dXRPZkJvdW5kcygpOwpAQCAtMjM0MiwyMSArMjM0MCwyMiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4g
aW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9
ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3Jp
cHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7
CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChp
ID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRl
eChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAg
ICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVs
c2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdl
dEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKQotICAgICAgICAgICAgICAg
IHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1Zh
bHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lw
TWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmlu
ZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA+PSAwICYmIHN0YXRpY19j
YXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7
CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250
aWd1b3VzCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2Jq
ZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJs
ZToKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyOTQwCiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0
LT5nbG9iYWxPYmplY3Qodm0pOwpAQCAtMjM3Miw4ICsyMzcxLDcgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpID49IDAp
Ci0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xv
YmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0g
ZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFy
cmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgKaW5kZXggNDFjNzFiNjAwNDRlLi4zYWMyZjAxMGM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsx
NDksMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgT0ZGTElORV9BU01fUkVHSVNURVI2NCAxCisjZWxzZQor
I2RlZmluZSBPRkZMSU5FX0FTTV9SRUdJU1RFUjY0IDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJF
U1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1NjgxMzc3YmI5
ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3LDggKzEwNDcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAg
ICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3Qt
PmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmpl
Y3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0ICsxMTcwLDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIAogICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkp
IHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2
YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZh
bHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghb2JqZWN0LT50cnlTZXRJ
bmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKQogICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5U
X0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjQyMWE3ZmE0MTBlLi5mYzE2ZWViNGVkZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgU3Ry
dWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2Vu
dHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQKIAoraWYgUkVHSVNURVI2NAor
ICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVByb2Zp
bGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFIG9yIFJJU0NW
NjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxB
bmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6bV9p
bmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNybyBnZXRC
eVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3Vi
bGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBpbmRleCBpcyBhbHJlYWR5IHNpZ24t
ZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21hY3JvIGdldEJ5VmFsVHlwZWRBcnJh
eShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBz
ZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3
ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxh
dGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQyCiAgICAgc3Vi
aSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwxMyArMTMyNiwyMiBAQCBtYWNybyBn
ZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBjb25zdCBsZW5ndGggPSB0
NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0
aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jh
c2VdLCBsZW5ndGgKKyAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICBl
bHNpZiBSRUdJU1RFUjY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRp
b25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2Vk
IG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJW
aWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3Ro
IGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBi
ZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlh
ZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAg
ICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAgICAgYnFiZXEgaW5kZXgsIFNtYWxsVHlw
ZWRBcnJheU1heExlbmd0aCwgLnNtYWxsVHlwZWRBcnJheQorICAgICAgICBzZXRMYXJnZVR5cGVk
QXJyYXkoKQorLnNtYWxsVHlwZWRBcnJheToKKyAgICBlbmQKKwogICAgIGxvYWRwIEpTQXJyYXlC
dWZmZXJWaWV3OjptX3ZlY3RvcltiYXNlXSwgdDMKICAgICBjYWdlZFByaW1pdGl2ZSh0MywgbGVu
Z3RoLCBiYXNlLCBzY3JhdGNoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDUwZDVkYmRmNjAyYS4u
Njc4ZWM2NGM2NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5k
ZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0
QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCBtYWNybyAoKSBlbmQsIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93Ogog
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmlu
ZGV4IGQ4NGI2ZWFkMzdmZC4uNDg1NDcwMWQ4ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsx
NzEzLDE2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFs
KHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAg
ICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgICAgIHN0b3JlYiAxLCBPcEdl
dEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheVt0
NV0KKyAgICAgICAgZW5kCisgICAgZWxzZQorICAgICAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJy
YXkoKQorICAgICAgICAgICAgY3Jhc2goKQorICAgICAgICBlbmQKKyAgICBlbmQKKwogICAgIG1l
dGFkYXRhKHQ1LCB0MikKIAogICAgIGdldChtX2Jhc2UsIHQyKQpAQCAtMTcyMyw3ICsxNzMzLDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogICAgIGdldChtX3Byb3BlcnR5LCB0MykKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNs
b3cpCi0gICAgc3hpMnEgdDEsIHQxCisgICAgc3hpMnEgdDEsIHQxICMgVGhpcyBzaWduLWV4dGVu
dGlvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdldEJ5VmFsVHlwZWRBcnJheSB3b3Jr
IGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCiAgICAgbW92ZSBUYWdOdW1iZXIsIG51
bWJlclRhZwpAQCAtMTc2Myw3ICsxNzczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAg
ICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmlu
aXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXks
IC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFlLi5mOGU0YWMzYTRlNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnBy
aW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCku
Y29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIHNpemUsIEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShk
YXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAg
LCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29udGVu
dHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQogICAg
IG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRz
OjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBzaXplSW5CeXRl
cywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9k
YXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykK
IHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQo
KQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50
czo6dHJ5QWxsb2NhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3Qg
YWxsb3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVt
ZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1l
bnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1l
bnRCeXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAg
ICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVj
a2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IHNpemVJbkJ5dGVzID0gbnVtRWxlbWVu
dHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXplSW5C
eXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9C
VUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVudHMp
ICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgVUNQVVJlZ2lzdGVyIGFsbG9jYXRpb25T
aXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAg
ICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxs
b2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0
aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9k
YXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBl
KGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBy
ZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBt
ZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNp
emVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsK
ICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVj
dG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpz
aGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQo
b3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0K
IAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJj
ZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAg
IGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFi
dWZmZXIpCkBAIC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBp
cyBvbmx5IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2
ZSBhbHJlYWR5IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdh
Y2FnZTo6aXNFbmFibGVkKCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2Fn
ZTo6Y29udGFpbnMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0
aCAtIDEpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIx
OCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2Ug
Y291bGQgaW50cm9kdWNlIGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1
bmNhZ2VkIGFuZCBnZXQgYWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2Vt
Ymx5LiBXYXNtIHNob3VsZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikK
K1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lk
KiBkYXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdl
ZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQ
cmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5
LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShB
cnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90
aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNv
bnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29u
dGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVV
bmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUo
bnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udElu
aXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3
IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUlu
dGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNl
LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwg
c291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RG
TW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0
ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7
CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkK
K1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVu
dHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJy
YXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25l
ZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWdu
ZWQgcmlnaHQpCitVQ1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgs
IFVDUFVSZWdpc3RlciBsZWZ0LCBVQ1BVUmVnaXN0ZXIgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxl
ZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNp
Z25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5z
aWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpj
bGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKK1VDUFVSZWdpc3RlciBBcnJheUJ1ZmZlcjo6
Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExl
bmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgY3VycmVudExlbmd0aCA9IGJ5
dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBpbmRleCA9IGN1cnJlbnRM
ZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExl
bmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVk
SW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdp
biwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
c2xpY2VXaXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVyIGVu
ZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVn
aW4gOiAwOworICAgIFVDUFVSZWdpc3RlciBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVn
aW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0
KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJh
Li5iMGFlNTZiZTU4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hh
cmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYg
Q1BVKFJFR0lTVEVSNjQpCisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAz
MikKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVDUFVSZWdpc3RlcikgPT0gc2l6ZW9mKHVpbnQ2NF90
KSk7CisjZWxzZQorLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBVQ1BVUmVnaXN0ZXIgdG8gc3Rv
cmUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQg
NEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBp
biBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBo
YXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3
aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRv
ICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpA
QCAtNTEsNyArNjAsNyBAQCB1c2luZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJl
Z2lzdGVyLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0ZXMpOyB9CkBAIC02MCwxNCArNjksMTQg
QEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFj
a2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2ln
bmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9Owog
CiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
cnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJh
eUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250
ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50
cyh2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVy
Q29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKQEAg
LTc5LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJl
dHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAgVUNQVVJlZ2lzdGVy
IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIAogICAg
IGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApAQCAtOTQs
NyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9OwogCi0g
ICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxvY2F0ZShV
Q1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlh
bGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQg
dHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExNCwyOCBAQCBw
cml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cisg
ICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6
IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3Rl
ciBieXRlTGVuZ3RoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBk
YXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVD
UFVSZWdpc3RlciBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0
ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIAog
ICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5p
bml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGlu
ZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdDsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsK
ICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2lu
LCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlC
dWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5
QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoVUNQVVJlZ2lzdGVyIGJlZ2luLCBVQ1BVUmVn
aXN0ZXIgZW5kKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxp
bmUgdm9pZCB1bnBpbigpOwpAQCAtMTYxLDEyICsxNzAsMTIgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2
ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYm
LCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlC
dWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgVUNQVVJlZ2lzdGVyKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0
aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAg
IGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1
bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBjbGFtcEluZGV4KGRvdWJs
ZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBWYWx1
ZShkb3VibGUgeCwgVUNQVVJlZ2lzdGVyIGxlZnQsIFVDUFVSZWdpc3RlciByaWdodCk7CiAKICAg
ICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMjAxLDcgQEAgY29uc3Qg
dm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRh
dGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQ
VVJlZ2lzdGVyIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jb250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxNCw3IEBAIGJvb2wgQXJy
YXlCdWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0
aW1hdGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0
byBzY2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICBy
ZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0
aCgpKTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0K
IAogdm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uZWIwNTA5ZWNk
Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQ
VVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogICAgICAgICA6
IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUp
CiAgICAgICAgICwgbV9ieXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxv
dz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOworICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBDcmFzaE9u
T3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsK
ICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBt
X2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3Nzhh
OS4uMDBlZGNkMzg0N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5
VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3QKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNl
dCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIFVD
UFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9v
bCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIs
MTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJh
eUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMg
c2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQo
dW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5
Qnl0ZU9mZnNldEFsaWdubWVudChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVy
IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChzaXpl
IC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRTaXplIC0gMSkp
OwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5n
ZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAgICBzdGF0aWMg
Ym9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAg
Ly8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVm
ZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0
aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQ
VVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBV
Q1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlm
IChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZz
ZXQpIC8gc2l6ZTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5
dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZWxlbWVu
dFNpemUpOwogICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMg
KzExMyw0OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChK
U0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxp
bmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwor
ICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgVUNQVVJlZ2lzdGVyIGJ5
dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5s
aW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVM
ZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1w
bChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVz
dGluYXRpb24sIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBj
YWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5z
aWduZWQgYXJyYXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVu
Z3RoKTsKKyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgcmFuZ2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNl
dCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAv
LyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5n
IGJ1ZmZlcidzIHZpZXcuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZv
aWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXIm
IGJ1ZmZlciwKLSAgICAgICAgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNp
Z25lZCAqb2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIFVD
UFVSZWdpc3RlciBhcnJheUJ5dGVPZmZzZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciAqb2Zmc2V0
LAorICAgICAgICBVQ1BVUmVnaXN0ZXIgKm51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5z
aWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihU
KTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG1heE9mZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRz
PFVDUFVSZWdpc3Rlcj46Om1heCgpIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAg
ICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZzZXQgPSBi
dWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zm
c2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1
ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdF
bGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7Cisg
ICAgICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gYWRqdXN0ZWRPZmZz
ZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAg
ICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVz
dGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVm
ZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0
aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQu
dmFsdWUoKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZl
ci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1l
bnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQog
Ci0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgdWludDY0X3QgbV9ieXRlT2Zmc2V0IDogNjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0
ZU9mZnNldCA6IDMxOworI2VuZGlmCiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAg
dW5zaWduZWQgbV9ieXRlTGVuZ3RoOworICAgIFVDUFVSZWdpc3RlciBtX2J5dGVMZW5ndGg7CiAK
ICAgICB1c2luZyBCYXNlQWRkcmVzcyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZv
aWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJh
eUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUs
NDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAot
Ym9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5z
aWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVm
ZmVyVmlldyogYXJyYXksIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0
ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+
Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zm
c2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zm
c2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBh
cnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCog
ZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBB
cnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0
ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChi
eXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0
ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVM
ZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Ig
b3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRh
dGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQogCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVz
cygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0
aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQg
Ynl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVz
dGluYXRpb24sIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0
IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9y
RXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGlu
YXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6
emVyb1JhbmdlSW1wbChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIHJhbmdl
Qnl0ZUxlbmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAg
IC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxl
clRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2Ug
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2Ug
KyBieXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGlu
dCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1
bnNpZ25lZCogbGVuZ3RoKQotewotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9
IGFycmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAg
aWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDAp
Ci0gICAgICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4g
YXJyYXlTaXplKQotICAgICAgICBlbmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0
KQotICAgICAgICBlbmQgPSBzdGFydDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0
YXJ0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJW
aWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNw
cAppbmRleCA2ODgzYTE3YzQ3MmQuLmQzNjI0NTBhMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBz
dGF0aWMgdW5zaWduZWQgdmFsaWRhdGVBdG9taWNBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBKU0FycgogICAgICAgICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4
VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJhY2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVk
QXJyYXlWaWV3LT5sZW5ndGgoKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOwor
CiAgICAgaWYgKGFjY2Vzc0luZGV4ID49IHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBv
dXQgb2YgYm91bmRzIGZvciBhdG9taWMgYWNjZXNzLiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2
NGFmMi4uN2IxZWQ3Y2Y1NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDIwICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0
YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBieXRlTGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwg
Ynl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6
Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0
ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgg
PSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVy
KSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uZGU3MTRiNjI1MDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewog
cHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRl
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJy
YXlCdWZmZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBm
aW5hbApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdy
YXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRs
ZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdldChVQ1BVUmVnaXN0ZXIg
b2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7
CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2Yo
VCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0
LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQo
VUNQVVJlZ2lzdGVyJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4o
b2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpz
dGF0dXMpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJv
b2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KFVD
UFVSZWdpc3RlciBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0
dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAg
aWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAg
RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uYjI4NzliM2RmMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNCAr
MzMsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xh
c3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBj
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShVQ1BVUmVn
aXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVh
dGUoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRl
T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
VUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
PihiYXNlQWRkcmVzcygpKTsgfQogICAgIAotICAgIGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldChHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIGFycmF5LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXksIG9mZnNldCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0UmFuZ2UoY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBv
ZmZzZXQpCisgICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBk
YXRhLCBVQ1BVUmVnaXN0ZXIgY291bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAg
ICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksCkBAIC01OCwzOSArNTgsMzkgQEAgcHVibGljOgogICAgICAgICAg
ICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpCisgICAg
Ym9vbCB6ZXJvUmFuZ2UoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHplcm9SYW5nZUltcGwob2Zmc2V0ICogc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpLCBjb3VudCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgemVyb0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5n
dGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIFVDUFVSZWdp
c3RlciBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGl0ZW0oVUNQVVJlZ2lzdGVyIGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAg
ICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNp
Z25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3Rl
ciBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRh
dGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0K
IAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKFVDUFVSZWdpc3RlciBpbmRleCwg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAg
ICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRSYW5nZSh0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNl
dCkKKyAgICBib29sIGdldFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIFVDUFVS
ZWdpc3RlciBjb3VudCwgVUNQVVJlZ2lzdGVyIG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVy
biBnZXRSYW5nZUltcGwoCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRh
KSwKQEAgLTk4LDE4ICs5OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KIAotICAgIGJvb2wgY2hlY2tJbmJv
dW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKKyAgICBib29sIGNo
ZWNrSW5ib3VuZERhdGEoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KSBj
b25zdAogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0g
ICAgICAgIHJldHVybiAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsg
Y291bnQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21h
bGxlclRoYW5PckVxdWFsKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAg
ICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUo
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsK
QEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAo
SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKaW5kZXggYWU1YmRkOGM2YTMxLi41OWM2OWUzMTIyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmlj
VHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IEFy
cmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdp
c3Rlcj46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKFVDUFVSZWdpc3Rl
ciBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUo
Ci0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZShVQ1BVUmVn
aXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZm
ZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewog
ICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5n
dGgpOwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxl
bmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
KTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwpAQCAtMTE4LDI1ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0
cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAot
ewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4K
LUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAotewotICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0
ZU9mZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxl
bmd0aCk7Ci0gICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7
Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFw
dG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAg
IHJldHVybiB0cnlDcmVhdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp3cmFwKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4u
MjdhOTc3OWY0OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBK
U0FycmF5QnVmZmVyVmlldzo6c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0
cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAs
IG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxl
bWVudFNpemUsCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUsCiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1v
ZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpA
QCAtNjMsNyArNjMsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBpZiAobGVuZ3RoIDw9IGZhc3RTaXplTGltaXQpIHsK
ICAgICAgICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwot
ICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKKyAgICAg
ICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7CiAgICAg
ICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9u
VmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5O
dWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODEsMTgg
KzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxs
b3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpIC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tl
ZDxVQ1BVUmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93PiBzaXplID0gbGVuZ3RoOworICAgIHNpemUg
Kj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUgPiBN
QVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qg
c2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4o
ZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFs
bG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3Ig
PSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6
ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwg
c2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0
dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEw
MCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQs
NyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0
OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1
Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoRGF0YVZpZXdNb2Rl
KQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShK
U1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJyYXlU
eXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25z
dAorVUNQVVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBs
ZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICByZXR1cm4g
cmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlz
IGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4
dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0dXJuIGxl
bmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1ZmZlciog
SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3
NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1l
bW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwog
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IHRo
aXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0
VHlwZWRBcnJheTogewpAQCAtMzE1LDggKzMyMiw4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIEFycmF5QnVmZmVy
KiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0
ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOworICAgIFVDUFVSZWdp
c3RlciBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2Rl
ZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRl
eCBkZDAxZjdmODJhNTMuLjQ2NzBiNDZkOGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVi
bGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBVQ1BVUmVnaXN0ZXIgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNp
bmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQs
IHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTEx
NywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBVQ1BVUmVnaXN0ZXIgc2l6ZU9mKFVDUFVS
ZWdpc3RlciBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKTsKKyAgICAgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXI+IHJlc3VsdCA9IGxlbmd0aDsK
KyAgICAgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSAtIDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4o
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1
ICsxMzgsMjUgQEAgcHJvdGVjdGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFs
aXphdGlvbk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUq
LCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1v
ZGUgPSBaZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNv
bnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVt
ZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAg
ICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0
J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250
ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAg
Q29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lk
KiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0
aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICAgICAgICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9Owog
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0
ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAg
ICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAg
ICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0
b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAg
dXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRh
Z0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMy
X3QgbV9sZW5ndGg7CisgICAgICAgIFVDUFVSZWdpc3RlciBtX2xlbmd0aDsKICAgICAgICAgVHlw
ZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAg
IH07CkBAIC0xOTAsMTEgKzE5MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCogdmVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0aCgpKTsgfQogICAgIHZvaWQq
IHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0
VW5zYWZlKCk7IH0KICAgICAKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwotICAg
IGlubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7
CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KCk7CisgICAgaW5saW5lIHN0ZDo6
b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0Owog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAog
ICAgIFZlY3RvclB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBVQ1BV
UmVnaXN0ZXIgbV9sZW5ndGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
d0lubGluZXMuaAppbmRleCAxZDA3MmI3MWFjYjcuLjYzMTgxNTVlNjQwYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxp
bmVzLmgKQEAgLTk5LDcgKzk5LDcgQEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZp
ZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICBwdHJkaWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3
aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWx0YSk7CisgICAgVUNQVVJlZ2lzdGVyIHJlc3VsdCA9
IHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZGVsdGEpOwogICAgIGlmIChyZXF1ZXN0ZXIgPT0g
TXV0YXRvcikKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSA9
PSBkZWx0YSk7CiAgICAgZWxzZSB7CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBpbmxpbmUgUmVzdWx0
VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgp
CitpbmxpbmUgVUNQVVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsK
LSAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgdW5zaWduZWQ+KCk7CisgICAgcmV0
dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIFVDUFVSZWdpc3Rlcj4oKTsKIH0KIAotaW5saW5l
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29u
Y3VycmVudGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gSlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQogewotICAgIHJldHVybiBieXRlT2Zm
c2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAg
ICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDxV
Q1BVUmVnaXN0ZXI+PigpOwogfQogCiBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNB
cnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggYjFlYTlkYTBmZTRjLi5l
NWJkZmM2ODc4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKQEAgLTI5OCw2ICsyOTksNyBAQCBwdWJsaWM6CiAg
ICAgaW50MzJfdCB0b0ludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3Qg
dG9VSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b0luZGV4KEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAgICBVQ1BVUmVn
aXN0ZXIgdG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJv
ck5hbWUpIGNvbnN0OwogICAgIGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi44MGMyM2Y2YzY5NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjks
MTQgKzY5LDQ3IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpIHsKKworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMy
KCk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJv
ck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworfQorCitpbmxpbmUg
VUNQVVJlZ2lzdGVyIEpTVmFsdWU6OnRvVHlwZWRBcnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKKyAgICBpZiAoZCA8PSAtMSkgeworICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikp
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAg
ICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6
dG9JbnQzMihkKSk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUs
ICIgdG9vIGxhcmdlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxs
IG9mIHRoaXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBv
biAxPDwzMi4KKyAgICBVQ1BVUmVnaXN0ZXIgb3V0cHV0T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUg
aW5wdXRPZmZzZXQgPSAwOworICAgIFVDUFVSZWdpc3RlciBpbnQzMk1heCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihpbnQzMk1heCkpIHsKKyAgICAgICAgb3V0cHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgICAg
IGlucHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgfQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgb3V0cHV0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSlNDOjp0b0ludDMyKGQgLSBpbnB1dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjku
Ljk4NWQ5ZTI0NDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZt
LCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZlciogYnVmZmVyCiAKIEpT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0Rh
dGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZp
ZXc6OnNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciwgSlNPYmplY3QqLCBVQ1BVUmVn
aXN0ZXIsIFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpTVmFsdWUpCiB7CiAgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJjNzg1ZTQ3NjExYS4uNWVlMWQ4NjE5ZTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYs
MTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwKKyAgICAg
ICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMs
IHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCiAg
ICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3aGVy
ZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNp
Z25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmlu
aXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0
KiwgVUNQVVJlZ2lzdGVyLCBKU09iamVjdCosIFVDUFVSZWdpc3RlciwgVUNQVVJlZ2lzdGVyIGxl
bmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3Rlciwg
SlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBBcnJheUJ1ZmZlciogdW5zaGFyZWRCdWZm
ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkwNjI0N2VhNjUuLmQ4Yzk5YzNjNjhhNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlm
ICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3
Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1
bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAg
ICBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFy
cmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBi
eXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9m
IGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIsNyArMTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
c2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUg
YSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgo
Z2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVk
IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIFVDUFVS
ZWdpc3RlciBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAg
ICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMp
IHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgy
KS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZm
ZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVu
Z3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5n
dGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRz
IGFjY2VzcyJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4uMDU2ODM4Yzll
NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2
ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0
IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1
cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAgICAvLyBmcm9t
IEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJfdCBMCisvLyAg
ICAgVUNQVVJlZ2lzdGVyIEwKIC8vICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2Ug
ZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1F
OiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13
aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBC
IGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZs
b3ciIGRhdGEgZm9yCkBAIC0xMDMsMTUgKzEwNCwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYg
aW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0
dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9Ci0gICAgc2l6ZV90
IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQor
ICAgIFVDUFVSZWdpc3RlciBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0
aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQogICAgIAogICAgIGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVjdG9yKCkgY29uc3QKICAgICB7CkBAIC0xMjIs
NDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsKICAgICB9CiAKLSAgICBib29sIGluQm91bmRz
KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBpbkJvdW5kcyhVQ1BVUmVnaXN0ZXIgaSkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0
aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFu
Y3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBi
b29sIGNhbkdldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7
CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGks
IEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
ICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5Owog
ICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHR5cGVkVmVj
dG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGkp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIs
IGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoVUNQ
VVJlZ2lzdGVyIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVl
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpLCBKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxB
ZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBi
b29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBp
LCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC0xNzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZl
RnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMg
RWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2
ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21W
YWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29l
cmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJv
bVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZv
aWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoVUNQVVJl
Z2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBt
X2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9m
ZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFu
T3JFcXVhbChvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBM
aWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0
aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0
ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBv
ZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1
Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8v
IHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNl
cnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBvZmZz
ZXQsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxl
bmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAgICAKICAgICBSZWZQ
dHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7
CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1w
bCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJvdyBvbiBlcnJvci4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAgICAgYm9vbCBzZXRXaXRoU3Bl
Y2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0gICAgICAgIHVuc2lnbmVkIG9i
amVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3Ro
ZXJBZGFwdG9yPiosCisgICAgICAgIFVDUFVSZWdpc3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMg
dGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2lu
ZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBl
ZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkr
KykKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQog
ICAgICAgICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggZDI1ODQw
NjdlODNmLi5lZWRhNTVlM2NhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVy
KiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLWlubGluZSBKU09iamVjdCog
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmly
c3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsZW5n
dGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIFVDUFVSZWdpc3RlciBvZmZzZXQs
IHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5ndGhPcHQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGxl
bmd0aE9wdCkKICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAg
ICBlbHNlIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAg
IC8vIC0gQSBwcmltaXRpdmUuIFRoaXMgY3JlYXRlcyBhIG5ldyB0eXBlZCBhcnJheSBvZiB0aGF0
IGxlbmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBpdC4KIAogICAgIGlmIChKU09iamVjdCogb2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBmaXJzdFZhbHVlKSkgewotICAgICAg
ICB1bnNpZ25lZCBsZW5ndGg7CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGg7CiAgICAgICAg
IEpTQXJyYXlCdWZmZXIqIGN1c3RvbUJ1ZmZlciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKGlz
VHlwZWRWaWV3KG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkg
ewpAQCAtMjUwLDcgKzI1MCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZmlyc3RWYWx1ZS50
b0luZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOworICAgIFVDUFVSZWdpc3RlciBsZW5ndGgg
PSBmaXJzdFZhbHVlLnRvVHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGxlbmd0aCkpOwogfQpAQCAtMjc1LDggKzI3NSw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoK
ICAgICB9CiAKICAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwotICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OworICAgIFVDUFVSZWdpc3RlciBvZmZzZXQg
PSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5ndGggPSBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVl
KSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgxKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODUs
NyArMjg1LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgLy8gSWYgdGhl
IGxlbmd0aCB2YWx1ZSBpcyBwcmVzZW50IGJ1dCB1bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3Np
bmcuCiAgICAgICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgyKTsKICAgICAgICAgICAgIGlmICghbGVuZ3RoVmFsdWUuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvSW5kZXgoZ2xvYmFs
T2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcg
PyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVu
Z3RoVmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVk
QXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3Ro
Iik7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwLi4wNTNjZmI1MWUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaCIKICNpbmNsdWRlICJUeXBlRXJyb3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5
cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3
LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVu
c2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2
ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENvbnN0cnVj
dGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKQEAgLTc4LDcg
Kzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC05OSwxMSArMTAwLDExIEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgc2l6ZV90IHNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgaWYgKCFBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwg
c2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZl
ciIpKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
PiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFw
dG9yPiogb3RoZXIsCisgICAgVUNQVVJlZ2lzdGVyIG90aGVyT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyAr
MjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNw
ZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3Rp
bmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAm
JiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5
cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAg
ICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFk
YXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRp
dmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAg
IC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBj
b3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKFVD
UFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRv
cjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhl
ci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0y
MzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
ZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJt
ZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBs
ZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJhbnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6
OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxl
bmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQg
KyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAs
MTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRX
aXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQg
b2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNPYmplY3QqIG9i
amVjdCwgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29w
eVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZv
KiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZh
c3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisg
ICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ug
d2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90
aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAg
bGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAg
LTMxMiw5ICszMTMsMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ugd29uJ3QgZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkg
d2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBtb3JlCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpKTsKICAgICAgICAgLy8gV2Ug
Y291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0
KTsKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9
IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNGMwZWJkMWY2MTY1Li5hOTc0
NzM3M2M0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAt
NjAsNiArNjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIEV4
Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEludGVybmFsRnVuY3Rpb247CkBA
IC0yMTEsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJ
bmRleElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewogICAgICAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlj
a2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBzZXRJbmRleFF1aWNrbHko
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICBpZiAodHJ5U2V0SW5kZXhRdWlja2x5
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQog
CkBAIC0yODksNyArMjg4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgY2FuR2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEFycmF5UHJvZmlsZSogPSBudWxs
cHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
KSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAotICAgIEpTVmFs
dWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisKKyAgICAvLyBVc2VzIHRo
ZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFy
cmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5z
aWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHko
KTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9C
TEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGlmIChjYW5HZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGkpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGksIGFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgYnJlYWs7
CkBAIC00MTEsMzUgKzQxMSw3MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXQoZ2xvYmFs
T2JqZWN0LCBpKTsKICAgICB9CiAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0OwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSk7Ci0gICAgICAgIAotICAgIGJvb2wgY2Fu
U2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mLCB1bnNpZ25lZCwgSlNW
YWx1ZSk7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRpY2F0ZSBzdWNjZXNzCisgICAgLy8g
VXNlIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VU
eXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKKyAgICBib29s
IHRyeVNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGlu
Z01vZGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAg
ICAgICAgIHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHYs
IGFycmF5UHJvZmlsZSk7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBF
UzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVf
SU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9J
TkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRF
WElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQ
RVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIo
KSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hp
bGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogewor
ICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYpOworICAgICAgICAgICAgaWYg
KGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJm
bHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcih0aGlzLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAg
ICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNOdW1iZXIoKSkgeworICAgICAgICAg
ICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2
bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBpZiAo
dmFsdWUgIT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1
b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1
dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQ
dWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJy
YXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBzZXRJbmRl
eFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAg
ICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgo
KQotICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0
b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoaXNDb3B5T25Xcml0ZShp
bmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92
ZWN0b3JbaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZv
ckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29w
eU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgIH0KLSAgICAgICAgCisKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYg
dm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0
dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDZlMWJiMWI1OWYxZS4uZWEzMDg4OWY1OTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aApAQCAtNDY1LDIxICs0NjUsMTUgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGlu
ZSBib29sIEpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJv
ZmlsZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVE
X0FSUkFZX1RZUEUobmFtZSkgXAotICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5T
ZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOwotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9U
WVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENB
U0VfVFlQRURfQVJSQVlfVFlQRQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6
OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFycmF5UHJvZmlsZSkKKyAgICAgICAgYXJy
YXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oYXJyYXlQcm9maWxlKTsKKyNlbmRpZgogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3
aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAg
ICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtcCkBAIC01MTIsNyArNTA2LDUwIEBAIGlubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGks
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiB9Ci0gICAgCisKK2lubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5
cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBz
dG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xk
ID0geC5nZXQoKTsKKyAgICB4LnNldCh2bSwgdGhpcywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAg
ICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOworICAgICAgICBpZiAoaSA+PSBz
dG9yYWdlLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7
CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9m
aWxlKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVm
aW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAg
IGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFy
cmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBl
ZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FS
UkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJy
YXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9U
WVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBc
CisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAq
Pih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGks
IHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNl
dEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFy
cmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNI
X1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZ
UEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BS
T0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBp
bmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXgg
Y2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhR
dWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
b2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2Up
ICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3
LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05
Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFn
ZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdl
U2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGU1YjdjZDQ2NjE4Ny4uZTZhYTdhMjBlYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEw
LTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBNYWRlIHNvbWUgb2YgQ2hl
Y2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVh
c3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAgICogd3RmL0No
ZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAo
V1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwpOgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG5vbi1IQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05f
U1RSSUNUUlVTVEVWQUxVQVRFKSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRl
eCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBS
ZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBz
aXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRh
cmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdl
dCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQg
dHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3Qg
dHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0
Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3
YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2Us
IGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
ICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewog
ICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1
ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAg
Ly8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNv
dXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxU
YXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFu
IHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAg
IHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRl
ciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Up
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAg
ICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2ln
bmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwg
aXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihT
b3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5z
aWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7
CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRT
YWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252
ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0lu
Qm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiAr
OTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJv
ZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+
KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVj
a2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVy
biAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQog
CiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2lu
ZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2lu
ZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5n
IFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM2ZDE1ZWRkMTNj
Li45M2Y2MjNkY2Q3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0xMC0xMyAg
Um9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdB
U00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgU29tZSBwYXJ0cyBvZiBXZWJDb3Jl
IHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5vdCBidWlsZCBhZnRlciBJIG1hZGUgdGhlIGxl
bmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5cyByZXR1cm4gVUNQVVJlZ2lzdGVyIGluc3Rl
YWQgb2YgdWludDMyX3QuCisgICAgICAgIE1vc3QgZml4ZXMgd2VyZSB0cml2aWFsLCB0aGUgb25s
eSBleGNlcHRpb24gaXMgU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCwgd2hlcmUgSSBoYWQgdG8g
aW5jcmVtZW50IHRoZSB2ZXJzaW9uIG51bWJlciwgYXMgQXJyYXlCdWZmZXIgKGFuZCBBcnJheUJ1
ZmZlclZpZXdzLCBhbmQgSW1hZ2VCaXRtYXApIG5vdyB3cml0ZS9yZWFkIHRoZWlyIGxlbmd0aCBp
biBhIDY0LWJpdCBmaWVsZCAoYW5kIHNhbWUgZm9yIHRoZSBieXRlT2Zmc2V0IG9mIEFycmF5QnVm
ZmVyVmlldykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUgY29kZSBpcyBhbHJlYWR5
IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBJIGltcGxlbWVudGVk
IG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEltYWdlQml0bWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlckltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlld0ltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZpZXcpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorICAgICAgICAqIGZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1ZXVl
OjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisK
IDIwMjEtMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGF2ZSB0aGUgU2Nyb2xsaW5nVHJlZSB0cmFjayBub2RlcyB3aXRoIGFuaW1hdGVkIHNj
cm9sbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5j
cHAKaW5kZXggY2I3ZTg0ZDQ1MzgzLi4yZGI0OWNhMjRhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTMsMTIgKzE5MywxMiBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9h
dDMyQXJyYXk+JiYgZGVzdGluYXRpb24sCiAgICAgCiAgICAgRmxvYXQzMkFycmF5KiBjaGFubmVs
RGF0YSA9IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0gICAgc2l6ZV90
IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGRh
dGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlck9m
ZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2ln
bmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BVUmVnaXN0ZXIg
Y291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4o
ZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9h
dCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyMSwxMiArMjIxLDEyIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+
JiYgc291cmNlLCB1bnNpZ25lCiAgICAgCiAgICAgRmxvYXQzMkFycmF5KiBjaGFubmVsRGF0YSA9
IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0gICAgc2l6ZV90IGRhdGFM
ZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGRhdGFMZW5n
dGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+
PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNv
dW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BVUmVnaXN0ZXIgY291bnQg
PSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oc291cmNl
LmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IHNv
dXJjZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5hYzg5Y2FlYmVjZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcApAQCAtMTk2LDggKzE5Niw4IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0
ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAgICBkb0ZGVEFu
YWx5c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGZyb20gbGluZWFyIG1h
Z25pdHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVuc2lnbmVkIHNvdXJjZUxl
bmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3Rk
OjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXpl
X3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNp
emVfdCBsZW5ndGggPSBzdGQ6Om1pbihtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCksIGRlc3RpbmF0
aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUg
cmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAx
IC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91Ymxl
IG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjcsOSBAQCB2b2lkIFJl
YWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0
aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAg
dW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0g
c3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90
IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXpl
X3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjpt
aW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAg
ICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJ
bnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAg
ICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Miw5IEBAIHZvaWQgUmVh
bHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0
aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVk
IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWlu
KGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5h
dGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNp
emUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNp
emUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBi
b29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZm
ZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJU
KGlzSW5wdXRCdWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uYTM4ZTFjYmY2
Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9XYXNtTW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAj
aW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Miw4ICszNDMsOSBAQCBzdGF0aWMg
dW5zaWduZWQgY291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVy
c2lvbiA3LiBhZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4K
ICAqIFZlcnNpb24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBh
dHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlQml0bWFwIGNv
bG9yIHNwYWNlLgorICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVuZ3RoIChhbmQgb2Zmc2V0
cykgb2YgQXJyYXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgZnJvbSAzMiB0byA2NCBi
aXRzCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSAxMDsKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBUZXJtaW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb25JbmRl
eFByb3BlcnRpZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMzk5LDcgKzQwMSw3IEBAIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8
IE9iamVjdFJlZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6
dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFycmF5QnVmZmVyVmlld1Rh
ZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3Ro
OnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5
QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0X3Q+
IDxieXRlTGVuZ3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCiAg
KiAgICB8IENyeXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3Rvcjpi
eXRle3dyYXBwZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0
CkBAIC00MDcsNyArNDA5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhC
aXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIHwgRE9NUXVhZAogICogICAgfCBJbWFnZUJpdG1h
cFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgUlRDQ2VydGlmaWNhdGVUYWcK
LSAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFuOnVpbnQ4X3Q+IDxsb2dpY2FsV2lk
dGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4gPHJlc29sdXRpb25TY2FsZTpkb3Vi
bGU+IERlc3RpbmF0aW9uQ29sb3JTcGFjZSA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4oPGltYWdlQnl0
ZURhdGE6dWludDhfdD4pCisgKiAgICB8IEltYWdlQml0bWFwVGFnIDxvcmlnaW5DbGVhbjp1aW50
OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+IDxsb2dpY2FsSGVpZ2h0OmludDMyX3Q+IDxyZXNv
bHV0aW9uU2NhbGU6ZG91YmxlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgPGJ5dGVMZW5ndGg6dWlu
dDY0X3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+KQogICogICAgfCBPZmZzY3JlZW5DYW52YXNU
cmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IFdhc21NZW1vcnlUYWcgPHZhbHVl
OnVpbnQzMl90PgogICogICAgfCBSVENEYXRhQ2hhbm5lbFRyYW5zZmVyVGFnIDxwcm9jZXNzSWRl
bnRpZmllcjp1aW50NjRfdD48cnRjRGF0YUNoYW5uZWxJZGVudGlmaWVyOnVpbnQ2NF90PjxsYWJl
bDpTdHJpbmc+CkBAIC00NjMsNyArNDY1LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmlu
Z0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIE9iamVjdFJlZmVyZW5jZVRhZyA8
b3BJbmRleDpJbmRleFR5cGU+CiAgKgogICogQXJyYXlCdWZmZXIgOi0KLSAqICAgIEFycmF5QnVm
ZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBB
cnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQ2NF90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9Pgog
ICogICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICBTaGFy
ZWRBcnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAtOTk4LDggKzEwMDAsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlC
dWZmZXJWaWV3KHZtLCBvYmopOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YXJyYXlCdWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIHVp
bnQ2NF90IGJ5dGVPZmZzZXQgPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKTsKKyAgICAg
ICAgd3JpdGUoYnl0ZU9mZnNldCk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVMZW5ndGggPSBhcnJh
eUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CiAg
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXct
PnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAg
ICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9y
OwpAQCAtMTEzMSw3ICsxMTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGUoc3RhdGljX2Nh
c3Q8ZG91YmxlPihidWZmZXItPnJlc29sdXRpb25TY2FsZSgpKSk7CiAgICAgICAgIHdyaXRlKGJ1
ZmZlci0+Y29sb3JTcGFjZSgpKTsKIAotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkpOworICAgICAgICB3cml0ZShzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkpOwogICAgICAgICB3cml0ZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIH0KIApAQCAtMTI2Myw4ICsxMjY3LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoSW1hZ2VEYXRhVGFnKTsKICAgICAgICAgICAgICAg
ICB3cml0ZShkYXRhLT53aWR0aCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWln
aHQoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKLSAg
ICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVu
Z3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNrZWRVaW50MzIgZGF0YUxlbmd0aCA9IGRhdGEt
PmRhdGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aC5oYXNPdmVy
Zmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwog
ICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzExLDggKzEzMjAsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICB3cml0ZShBcnJheUJ1ZmZlclRhZyk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXIt
PmRhdGEoKSksIGJ5dGVMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZp
ZXc+KHZtKSkgewpAQCAtMjU1NSw5ICsyNTY1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mIGFycmF5QnVmZmVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExlbmd0aFR5cGU+Cisg
ICAgYm9vbCByZWFkQXJyYXlCdWZmZXJJbXBsKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVm
ZmVyKQogICAgIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoOworICAgICAgICBMZW5ndGhUeXBl
IGxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChtX3B0ciArIGxlbmd0aCA+IG1fZW5kKQpAQCAtMjU2OSwxNSAr
MjU4MCwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBi
b29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcp
CisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZm
ZXIpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1
cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJfdD4oYXJyYXlCdWZmZXIpOworICAgICAgICBy
ZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50NjRfdD4oYXJyYXlCdWZmZXIpOworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZW5ndGhUeXBlPgorICAgIGJvb2wgcmVhZEFycmF5
QnVmZmVyVmlld0ltcGwoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgewog
ICAgICAgICBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgYXJyYXlCdWZmZXJWaWV3U3VidGFnOwogICAg
ICAgICBpZiAoIXJlYWRBcnJheUJ1ZmZlclZpZXdTdWJ0YWcoYXJyYXlCdWZmZXJWaWV3U3VidGFn
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgYnl0ZU9mZnNl
dDsKKyAgICAgICAgTGVuZ3RoVHlwZSBieXRlT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWQoYnl0
ZU9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5
dGVMZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZUxlbmd0aDsKICAgICAgICAgaWYgKCFy
ZWFkKGJ5dGVMZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09i
amVjdCogYXJyYXlCdWZmZXJPYmogPSBhc09iamVjdChyZWFkVGVybWluYWwoKSk7CkBAIC0yNTg3
LDcgKzI2MDYsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHR5
cGVkQXJyYXlFbGVtZW50U2l6ZShhcnJheUJ1ZmZlclZpZXdTdWJ0YWcpOwogICAgICAgICBpZiAo
IWVsZW1lbnRTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNpemU7CisgICAgICAgIExlbmd0aFR5cGUg
bGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOwogICAgICAgICBpZiAobGVuZ3RoICog
ZWxlbWVudFNpemUgIT0gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMjYzNCw2ICsyNjUzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBi
b29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcp
CisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1cm4g
cmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDMyX3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOwor
ICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDY0X3Q+KHZtLCBhcnJh
eUJ1ZmZlclZpZXcpOworICAgIH0KKwogICAgIGJvb2wgcmVhZChWZWN0b3I8dWludDhfdD4mIHJl
c3VsdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXgg
ZmI3NTdhNGQ3NGY2Li41MDI2MWEzNmUyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9p
ZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGlmIChoYXNBcnJheSkgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheS0+c2l6ZSgpKTsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvICZhcnJheUJ1ZmZlckNvbnRlbnRzIDogKm1fYXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5KSB7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IGFycmF5QnVmZmVyQ29udGVudHMuc2l6ZUlu
Qnl0ZXMoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFy
cmF5QnVmZmVyQ29udGVudHMuc2l6ZUluQnl0ZXMoKSk7CiAgICAgICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZm
ZXJDb250ZW50cy5kYXRhKCkpLCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCksIDEp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTk5LDkgKzE5OSwxMiBAQCBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogCiAgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkg
ewotICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIHVpbnQ2NF90
IGJ1ZmZlclNpemU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUp
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgQ2hlY2tlZDxV
Q1BVUmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQnVmZmVyU2l6ZSA9IGJ1ZmZlclNp
emU7CisgICAgICAgICAgICBpZiAoY2hlY2tlZEJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6
ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFkNjg2ZC4uYmFmMWFiYWQ2
N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAg
LTY4LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKFdlYkNvcmU6OkJs
b2ImIGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNpemUoKTsKICAgICBpZiAo
IWJ5dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUo
MFUsIDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mgd2VpcmQsIGJ1dCBpcyBy
ZXF1aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8gc3VjY2VlZC4KKyAgICAg
ICAgLy8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdoZXJlIEFycmF5QnVmZmVy
OjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkgY291
bGQgYmUgY2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oMFUpLCAxKSwgMCwgMCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxCbG9i
TG9hZGVyPihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUuLjFiYTMyMmMxMGJhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVD
YXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYzLDcgKzY0LDEwIEBAIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1cm5WYWx1ZSwgViYgdmlldywgdW5z
aWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNzKQogICAgIHsKICAgICAgICAgYm9v
bCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJl
YWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOwor
ICAgICAgICBVQ1BVUmVnaXN0ZXIgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBUIHZh
bHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFubmVzcyA9PSBM
aXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbkJv
dW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9IGFjdHVhbE9m
ZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCg==
</data>
<flag name="commit-queue"
          id="465303"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441157</attachid>
            <date>2021-10-13 16:27:59 -0700</date>
            <delta_ts>2021-10-13 17:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>270364</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi4zNzliYzNjYTY4MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBicmFu
Y2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZh
bCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pTVmFs
dWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1h
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwppbmRl
eCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRt
ZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9v
KG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQgbWF4
U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3
MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAgIHZh
ciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwICsg
MSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
ZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYg
KGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cgZXhw
ZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjog
ZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAog
ZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJh
eSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTogMHg4
MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNpemUg
PSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAgIG1l
bW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAtIDB4
MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4uODBm
ZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBAQAot
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9y
ICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikK
Ky8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1LDIx
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIpKTsK
KyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
Zm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBtYXhT
aXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9
PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikpOwog
ICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0
cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUudG9T
dHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAg
IGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKwor
ZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0
aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlW
YWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJh
eVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2Eg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0
aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFj
dHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsg
bCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0
ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmlu
Zyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdp
Z3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRocmVl
R2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBm
b3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0
aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCww
ICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVl
ICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Cisg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTUzOWI1MGQyZTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxs
eS1vb2IuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3Ig
KCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQor
Ly9AIHJ1bkRlZmF1bHQoKQorZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0
aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSkKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9
Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0
OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJy
YXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAg
ICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
ICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAg
IHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0
QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IGFjdHVhbExlbmd0aCArIDEwOworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAg
IGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAoIkluIG91dC1vZi1ib3Vu
ZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10
aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpp
bmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0
ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYsMTMg
QEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAgICAg
dmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRNZW1v
cnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1vZHVs
ZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAK
LWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAoZXhj
ZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBpbnZh
bGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIoKSkn
KSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUt
dGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNt
LW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwppbmRl
eCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3Jl
Z3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJ
WkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZhciBl
eGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7CiB9
IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAhPSAi
UmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAoZXhj
ZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2FzOiAi
ICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZGU0Yjk1NDQzNC4uNzNmYmU1NThkN2Y5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFJlYmFzZWxpbmVkIHRocmVlIGZvbGxvd2luZyB0ZXN0cyBhcyBkaWZmZXJlbnQgb3Ig
ZmV3ZXIgZXJyb3IgbWVzc2FnZXMgYXBwZWFyIG9uIHRoZSBjb25zb2xlLgorICAgICAgICBBbHNv
IGNoYW5nZWQgY3VycmVudFZlcnNpb24gaW4gc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBm
cm9tIDkgdG8gMTAuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWludmFsaWQtcmVzdWx0LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisgICAgICAgICogd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0xMiAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRob3V0LWlu
dGVyYWN0aW9uLnB5IGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQtYnVmZmVyLWNy
YXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFn
ZURhdGEtaW52YWxpZC1yZXN1bHQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA1NzQ1
OTEyZmYwNzkuLjQ4ZWVmOTNjNDYyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWdldEltYWdlRGF0YS1pbnZhbGlkLXJlc3VsdC1idWZmZXItY3Jhc2gtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEt
aW52YWxpZC1yZXN1bHQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAK
LUNPTlNPTEUgTUVTU0FHRTogVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzLiBS
ZXF1ZXN0ZWQgc2l6ZSB3YXMgMzgxMDAwMDAwIHggMgotQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlk
U3RhdGVFcnJvcjogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLgogUEFTU0VEIChJ
ZiB0aGlzIHBhZ2UgZGlkIG5vdCBjcmFzaC4pCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNj
cmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2Ny
aXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5o
dG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0PgogCi1jb25z
dCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MGE7CiAK
IC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVl
ZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gt
ZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jh
c2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Nv
bnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05T
T0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0
aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUz
Njg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBl
Y3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRl
eHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09M
RSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVmZmVyIHdpdGgg
MSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0aCBvZiA1MzY4
NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9mZmxpbmVBdWRp
b0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5kZXJpbmcgYnVm
ZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpp
bmRleCAwYWM3NWM5NzQ3OWQuLjc1OTNmYmE5ZTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3Nl
dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAg
ICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Ig
d2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8g
Z2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4g
YSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRB
cnJheS9ldGMuLiB0byBiZWluZyBVQ1BVUmVnaXN0ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJl
cXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RG
Ry9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRlciB0
byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9u
IGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRB
cnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0
SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2Vy
IG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZH
L0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFkIHRv
IGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3QgYWNj
ZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAgLSBJ
IG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwvRGF0
YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGluZGlj
ZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11bSBz
aXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEgIm1h
eUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQcm9m
aWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBpbmRl
eCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0aW9u
IG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBkYXRl
ZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3JyZWN0
bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRpbWUg
dG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMuCisg
ICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVw
IHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBh
dGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGlu
ZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBo
aWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBw
YXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBjdXJy
ZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZv
cm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBh
dGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRy
ICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisg
ICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMg
Y2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2gg
aXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRp
ZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBv
ZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkK
KyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQg
d2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50
cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6
OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6
YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0
aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJM
ZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGlu
ZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29kZS9B
cnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdl
VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVk
QXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5saW5r
ZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBk
YXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9k
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6
QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VU
eXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6
d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFz
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVy
KToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6REZH
OjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50
cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
Ojpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR2Vu
ZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5o
OgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9y
YWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZElu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRB
cnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJp
bmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHND
aGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVk
QXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZs
b2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VU
eXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lz
dGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChK
U0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNo
ZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0lu
Qm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMT3V0
cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6Cisg
ICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZl
ckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2Nh
dGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcEluZGV4
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRl
eCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVm
ZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6
c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUlt
cGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3KToK
KyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3
KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
VW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAgICAg
ICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZm
ZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZl
clZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmll
d0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpz
ZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6Cisg
ICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlND
OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lm
aWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJ
bmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhR
dWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdU
eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6
CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21Q
YWdlQ291bnQuaDoKKwogMjAyMS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2luIG1pZ3JhdGlvbiBmcm9tIFdURjo6VmFyaWFu
dCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4u
NTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2Fh
MGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUs
OSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3Ry
dWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVz
ZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0
IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAg
Ci0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAg
ICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQog
ICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3
OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
ZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAg
ICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNv
bnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAg
ICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRy
IDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIo
Y29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29u
c3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRy
KCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNU
cnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3Rl
ZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQ
VShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0
cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRy
IHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewog
ICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJ
bW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50
MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFs
dWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAg
ICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9Owog
ICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1w
bGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAg
ICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3Rl
ZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1
c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQo
aW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChp
bnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQp
Ci0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAg
ICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9
CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2
YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2
YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAj
aWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhw
bGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0
cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNv
bnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1
cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJs
ZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0
UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQz
Ml90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdp
c3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFi
YmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQ
VShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQp
CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBD
UFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5k
aWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMy
KCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BV
KFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0
KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYg
Ly8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2
b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsx
ODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJp
Z2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8g
T3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFu
Y2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVm
aW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRS
b2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUg
YW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91
bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9y
QmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFu
dChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGlu
ZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRj
aFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3
ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4K
KyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAg
ICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1
c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBj
b21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMy
IHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQo
cmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThmZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8g
RklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZm
OyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNo
KHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZh
bHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9w
ZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZElt
bTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2Fk
NjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIuLjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUu
aApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwg
UmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFy
Z2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0g
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2Fk
MzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIp
OwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1
bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBlNjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVn
aXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGlu
ZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNp
ZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQot
ICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVl
KSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAz
OTc5OTJhM2E3NTAuLmZjM2U5MDY2NGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2Fz
ZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVy
OgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNl
dHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICBjYXNlIEluSGl0OgogICAgIGNh
c2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDgg
QEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5Rmxv
YXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAg
Ly8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBw
cm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQgYXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJp
bnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEyICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3Rh
dGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAKICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2Ny
YXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
dHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkpOwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5n
dGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlH
UFIsIHNjcmF0Y2hHUFIpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICAvLyBUaGUgbGVu
Z3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcg
b24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNz
T2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChq
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUu
bWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkg
KzEyMDMsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9
IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAg
IGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFT
cGFjZSk7CiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChhZGRyZXNz
T2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgaml0LmxvYWQzMihhZGRyZXNz
T2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2VuZGlmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0
b3IoKSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50
YWcoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hH
UFIsIGZhbHNlKTsKLQogICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIs
IHNjcmF0Y2hHUFIpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKICAgICAgICAgICAgIHN3
aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKQEAgLTE1OTUsOSArMTYwNSwxNCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgcmVhZHkubGluaygmaml0
KTsKICAgICAgICAgfQogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQ
Uik7Ci0gICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBz
ZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KLSAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0
Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVy
dHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3NPZkxlbmd0aCA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSk7CisgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8v
IFRoZSBsZW5ndGggaXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRl
cGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFw
cGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIs
IGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2gu
YXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlH
UFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3Ig
PSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAg
LTE2MDUsOSArMTYyMCwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
ICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZl
ZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAg
ICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6
Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBqaXQubG9hZDY0
KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMy
KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFs
bHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwg
c2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9w
ZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAg
ICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uYmVlN2E5ZmNkYzkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEg
Yml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2Vz
cyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0
IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRh
a2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBl
cyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJh
eU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRo
aW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0K
LSAgICAKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIC8vIEFjY2Vzc2luZyB0eXBlZCBhcnJh
eXMgbGFyZ2VyIHRoYW4gdGhhdCB0ZW5kcyB0byBiZSBtb3JlIGNvbXBsaWNhdGVkIGFzIHdlIGNh
bid0IGZvcmNlIGNvbnZlcnQgZXZlcnl0aGluZyB0byBpbnQzMl90LgorICAgIC8vIFdlIG9ubHkg
c3VwcG9ydCBzdWNoIGxhcmdlIHR5cGVkIGFycmF5cyBvbiA2NC1iaXQgcGxhdGZvcm1zLgorICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICB2b2lkIHNldE1heUJlTGFy
Z2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsgfQorICAgIGJv
b2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3Qg
eyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorI2Vsc2UKKyAgICBib29sIG1heUJl
TGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisjZW5kaWYKKwogICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2VlblN0
cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFycmF5
TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9k
ZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21h
eVN0b3JlVG9Ib2xlOyB9CkBAIC0yNDQsNiArMjU0LDkgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1
cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9I
b2xlIHsgZmFsc2UgfTsgLy8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRp
Y2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJy
YXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJl
bnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMg
b2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdo
YXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9Owor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7IGZh
bHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDog
MTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29s
IG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY2LDEzIEBAIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxpbmtl
ZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRl
ZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1f
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAg
ICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7
CkBAIC0yODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3Vz
ZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAg
ICBpZiAobV9tYXlCZUxhcmdlVHlwZWRBcnJheSkKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5t
X21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFy
cmF5OworI2VuZGlmCiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjkwLDcgKzMxNiwxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX291
dE9mQm91bmRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIHsg
dHJ1ZSB9OworICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOworI2lm
IENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7Cisj
ZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5UHJvZmlsZSkgPD0g
OCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDJiMmY1ZTAz
MDE5Zi4uMWE2M2QyYzExN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDYzLDcgKzM0NjMs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsK
ICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxl
VmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUt
PmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgaWYgKHZpZXcgJiYg
aXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRy
eUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJ
bnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAg
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3
KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBpZiAodmlldykgewot
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7Cisg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXct
PmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0ICYm
IGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0g
bV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1
ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVS
ZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAg
ICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAt
NDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUg
Q2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0
IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
ICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1
MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICsz
MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5j
aGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBu
b3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAg
ICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAg
ICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5
YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkp
OwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAg
aWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgp
KQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3Qg
YmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDgg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRB
cnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVz
ZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3Qg
R2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkg
ewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNi
Li5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24g
YWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0
aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5
TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNw
ZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAg
IHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJy
YXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNw
ZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAg
ICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlC
ZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYz
LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJy
YXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247
CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRl
cy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3Bl
Y3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNp
b24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlv
bik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5h
c0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3Jk
KCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9u
KEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJz
aW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3Mo
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZl
cnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
cywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRp
b247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAg
IH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxl
LCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAg
ICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3Jl
VG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBi
b29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlD
bGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9m
aWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMg
PSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0g
ICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNw
ZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBB
cnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAg
QXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJv
b2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2Vy
KTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJh
eSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51
c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAg
ICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAg
JiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBj
b252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVy
c2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3
OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwog
ICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29u
dmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBl
ZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7
CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLjAzNGJkZDY2MTUxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgw
NywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxU
YXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVy
YW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50
JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogeworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHN0YXRpY19hc3NlcnQoZW5hYmxlSW50
NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAg
IGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxs
TmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIUNQVShSRUdJU1RFUjY0KQorICAgICAgICBp
ZiAod2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBl
ZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFz
c0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzgyMiwyNiArMzgzMSwzMCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBB
cnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIE5vZGUqIGxlbmd0aE5vZGUg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBOb2RlVHlwZSBvcCA9
IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPyBHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MiA6IEdldEFycmF5TGVuZ3RoOworICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRk
VG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKICAgICAgICAgLy8gT3VyIEFycmF5TW9kZSBzaG91bGRuJ3QgY2F1
c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0byBleGl0IHdpdGhvdXQgZWZm
ZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBhZGRUb0dyYXBoKEV4aXRP
Syk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAgICAgICAgIHNldChyZXN1bHQs
IGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMg
d2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAvLyB0aGF0IG92ZXJmbG93cyBp
bnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25zdGFudChqc051bWJlcihsb2dT
aXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhCaXRMU2hpZnQsIGxl
bmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBjYW5ub3QgdXNlIGEgQml0TFNo
aWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUgYSBieXRlTGVuZ3RoIHRoYXQg
b3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6ZSA9IGpzQ29uc3RhbnQoanNO
dW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJp
dGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisgICAgICAgIGJv
b2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA9ICFpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpOworI2lmICFDUFUoUkVHSVNURVI2NCkKKyAg
ICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAg
ICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigp
KS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYs
MTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5
cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3Ag
PSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFw
aChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSks
IHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9CiAKICAgICBjYXNl
IFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGlm
ICh3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBU
eXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5j
bGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0g
QXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlw
ZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUg
b3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJy
YXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4
ZGQzZmRlOTc3OS4uOWFkNWMyNzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVG
dQogICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdl
dFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5
VmFsRGlyZWN0OgpAQCAtMjM5LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBUb0Jvb2xlYW46CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJl
cDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEz
MzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBk
ZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMs
IG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAg
ICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBu
b2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBl
ZEFycmF5VmlldygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
Y2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5h
cnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxp
bmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5h
YmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUz
NGUuLmZhMTdiZjExNDE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRC
eVZhbDoKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcu
LjQwMjg0Y2ZhMjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApA
QCAtMTg1LDYgKzE4NSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2Fz
ZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2Ug
Q29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tW
YXJhcmdzOgpAQCAtMTk3LDEwICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
CiAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRC
eU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IDhlMWI5M2VlZTZjYS4uNTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1
bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNp
ZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5k
cygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRl
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3
ICsxMDc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0
OiB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBv
bmx5IHNlZW4gT3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ug
c2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlw
ZShBcnJheTo6R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsx
MTM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1Vz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJB
cnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBj
YXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVp
bnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYg
KzExOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2Rl
LT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5h
cnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYm
ICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKApAQCAtMTcxNywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdB
QmFkVGltZShub2RlKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUy
KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0g
bm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5w
cmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAg
ICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAg
ICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0Fy
cmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5n
dGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1
Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25D
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiAr
MjIxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoK
ICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFu
dFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNh
c2UgVmFsdWVUb0ludDMyOgpAQCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAg
ICAKLSAgICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5v
ZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3Rv
cmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5n
dGhOZWVkc1N0b3JhZ2UpOwotICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxl
bmd0aCwgb3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVk
Z2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZv
aWQgY29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlh
Nzg2MC4uMmQ4NmViNzU3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRpb25JbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
ZW5lcmF0aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0
dXMgb2YgbGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRl
IGluZm9ybWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVy
cywgYW5kIGlmIHNvIHdoaWNoLAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQg
dG8gdGhlIFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8v
IGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQg
aW4gYSBib3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBl
IG9mIGJveCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVl
IHJlbWFpbiwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3Mg
aG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQg
d2Uga25vdyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMg
YXNzb2NpYXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9u
SW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAK
aW5kZXggMmJiOWQ0YmVhODAwLi4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAg
ICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsK
IAorICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKwor
ICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5
cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFBy
b3RvdHlwZUxvYzoKICAgICAgICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5k
ZXggMjY5MTcxY2IzNDFkLi40MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2lu
ZCB7CiAgICAgU2V0dGVyTG9jLAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0
ZU9mZnNldExvYywKKyAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVk
QXJyYXlMZW5ndGhJbnQ1MkxvYywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAg
ICAgU3RhY2tQYXlsb2FkTG9jLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFh
MWM4YmNmNTEuLjZkZWRhMDM3ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAg
LTEzMzUsNyArMTMzNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChub25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRz
Q2hlY2tFbGltaW5hdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjp2YWxpZGF0ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3Ao
KSA9PSBDaGVja0luQm91bmRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5v
ZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUt
cHJvZHVjaW5nIG5vZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eU9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAg
ICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JO
ZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIw
MDQsNiArMjAwNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVk
UHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
b3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlW
YWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgs
IE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlw
ZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0
aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIgYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2Ug
dG8gcmV0dXJuaW5nIEludDUyIGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlk
YXRpb24gZmFpbHVyZXMuICovIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0
SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdElu
dDMyKSBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
U2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRh
a2VzIGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9c
CiAgICAgbWFjcm8oQ2hlY2tKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhl
IHNhbWUgYXMganNDYXN0IGJ1dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlv
biAqL1wKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4
IGU1MDdmMWU4MGFjMC4uYjNmMmJiN2E5MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBK
U1ZhbHVlCiAgICAgfQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVj
dC0+Y2FuU2V0SW5kZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVj
dC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0
LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAg
ICByZXR1cm47CkBAIC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBw
dXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhT
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdp
dGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNo
YXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0
aCBpcyBuZWdhdGl2ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
CisKKyAgICBVQ1BVUmVnaXN0ZXIgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lz
dGVyPihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9y
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVj
dG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJp
dHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25l
ZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlND
ZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5
MjQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
SW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
UFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3Rl
ciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4
Q2xhbXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIw
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0yMDM2LDcgKzIwMzYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIw
NTIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
RmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcu
LjhmOTZlYzBiMDdlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBT
dHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBC
dXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4
Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciop
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJl
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwg
SlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAy
MGQwNDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4
Niw2ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rp
b24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAg
ICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0
OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2
ICsxMzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVy
OgogICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cAppbmRleCBlM2EyMzlhMzNlMzAuLmM0MmIxZDA4MGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwx
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5
cGVkQXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAg
ICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5n
dGgsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5h
cnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVu
Z3RoLCBLbm93bkludDMyVXNlKTsKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1v
ZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpIHx8IG1fZ3JhcGguaGFzRXhpdFNpdGUobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgeworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQ1MkFueSwgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9k
ZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEludDUy
UmVwVXNlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25v
ZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5
TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNl
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzNywxMiArMTQzLDI1IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIE5vZGUqIGxlbmd0aCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0lu
dDMyT25seSwgb3AsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+
YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBz
dG9yYWdlKTsKLSAgICAgICAgTm9kZSogY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJ
bkJvdW5kcywgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgs
IEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgTm9kZSogY2hlY2tJbkJvdW5kczsKKyAgICAgICAg
aWYgKChvcCA9PSBHZXRBcnJheUxlbmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVM
YXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBPdmVyZmxvdykpKSB7CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFz
ZS5ub2RlKCksIEtub3duQ2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgbGVuZ3RoLT5z
ZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlw
ZSBpcyBhIGR1bW15IHNpbmNlIHRoaXMgbm9kZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55
dGhpbmcuCisgICAgICAgICAgICBjaGVja0luQm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJ
bkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRn
ZShsZW5ndGgsIEludDUyUmVwVXNlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBO
b2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uu
bm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3Vu
ZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUlu
ZGV4LCBTcGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAg
fQorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGphY2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5
VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
LmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlwZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdm
NTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBD
aGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29u
c3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJh
cmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2Fz
ZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBT
dHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
IAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICBy
ZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBl
ZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NDc5NjM4NDQ5NDRhLi5kOTllNzhmYWNkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4ICszMjM4LDQyIEBAIHN0YXRp
YyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcg
cmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVK
SVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpq
dW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewogICAgIGlmIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwog
ICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJs
ZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUs
IDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAg
ICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIFVDUFVSZWdpc3Rl
ciBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9q
aXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUt
PmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAg
ICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNV
SW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgp
OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihp
bmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2ppdC5i
cmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisKKyNp
ZiBDUFUoUkVHSVNURVI2NCkKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwg
c2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vu
ZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2so
Tm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7Ci0gICAgSklUQ29t
cGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFz
ZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlw
ZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoR1BSKTsK
ICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwpAQCAtMzM4
MCwxMCArMzM5NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbklu
dFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5
UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wOwogICAgIEZQUlJlZyByZXN1bHRGUFIgPSBJ
bnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4KERhdGFGb3JtYXRJ
bnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZvcm1hdEpTOwogCi0g
ICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7
CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJl
Zywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAgICAgY29uc3RleHBy
IGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFycmF5TG9hZFJlc3Vs
dChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3VsZEJveCwgcmVzdWx0
RlBSKTsKQEAgLTM1NTUsNiArMzU3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAg
QVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRo
aXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsK
ICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2Rl
LCAyKTsKQEAgLTM1ODcsNyArMzYwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAg
QVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVydHkpOwogICAgIEFTU0VS
VCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJv
cGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkg
ewogICAgIGNhc2UgMToKQEAgLTM2NDUsMTAgKzM2NjIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJh
eVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFu
ZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigp
OwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBz
dG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAgIERhdGFGb3JtYXQg
Zm9ybWF0OwpAQCAtMzY1Niw3ICszNjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKIAog
ICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJl
c3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcs
IHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VS
ZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5
cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBtX2ppdC5sb2FkRmxvYXQoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjkwLDEwICszNzA5LDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwg
R1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywg
dmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBv
cmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWVPcC5mcHIo
KTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJv
cGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5
cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwgc2NyYXRjaEdQUik7CiAg
ICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDogewpAQCAt
Nzk2Nyw3ICs3OTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9y
YWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVu
dGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50
YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRo
KTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3Rv
cmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxp
ZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MDM5LDkgKzgw
NjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKICAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEu
Z3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKLSAgICBBU1NFUlQoYmFz
ZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRhdGFHUFIpOwogCiAg
ICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKIApAQCAtODA4Myw2ICs4MTAxLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChO
b2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwogI2VuZGlmCiAKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhh
dCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0
b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
KTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0K
IApAQCAtODM0OSwxMiArODM3MiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBDUFUoUkVHSVNURVI2
NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworI2Vsc2UKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgogICAgICAg
ICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2Rl
KiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZ09yU3ltYm9sKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTE5LDEwICsxMTE0OCwyNCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYXV0
byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlw
ZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgCisKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93
IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRmb3Jt
cworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNp
emUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIG1f
aml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNjcmF0Y2hHUFIpOworICAgIGVtaXROZXdU
eXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1
cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwot
ICAgIAorICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVk
QXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
ICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKQEAgLTExMTM2LDggKzExMTc5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICAKICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHN0b3JhZ2VHUFIpOwogCisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZp
ZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qg
b2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBz
dGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNB
cnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2pp
dC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJ
bW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTEx
MTkzLDkgKzExMjQzLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3Rv
cmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIENQVShSRUdJU1RFUjY0KQor
ICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgc2l6ZUdQUiwKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAg
VHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAg
LTE0MTY3LDYgKzE0MjIzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY29tcGlsZU5l
d1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7CisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2Ug
VW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50
LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggMDdiNTYzYjM0ODNhLi4zMzlmNWQxNDdiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3Ry
aW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAg
IAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lmIENQ
VShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXpl
KE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50
NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAj
aWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlM
ZW5ndGgoTm9kZSopOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxl
Q2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5v
ZGUqKTsKQEAgLTE0MzEsMTAgKzE0MzgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUFy
aXRoTWluTWF4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVy
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUq
KTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5v
ZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAgSklUQ29tcGlsZXI6Okp1
bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFjaGVkSWZPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzKTsKLSAgICB2b2lkIGVtaXRU
eXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgIHZvaWQgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOwor
I2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5
cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywg
RGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2
b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZh
bE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFt
YmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVy
cmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAg
IEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJ
bnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBH
aXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIs
IGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZh
dGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3Ry
aWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAx
NiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAo
aS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUg
c2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmEwZjI1MjBl
YTM3Li4yMmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVu
dHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAg
ICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAg
ICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlw
ZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNv
bXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0
eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2Fz
ZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBl
T2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTQzOTgsNiArNDQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5k
czoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6
CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNh
c2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNiMzkzZjUyNzVmNy4uMzEwZWRhMjJlMTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiU3BpbGxSZWdpc3RlcnNNb2RlLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKKyNp
bmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCkBAIC0yNjk0LDYgKzI2OTUsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9
IH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50
NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFy
cmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBT
cGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlX
aXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQ
Uik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9k
ZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUg
PCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVk
IGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVj
dG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7
CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5QnVm
ZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9mZnNl
dCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJy
YXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRDb21w
aWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmlldzo6
bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIpOwor
ICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BS
KTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOworCisg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJm
bHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRhdGFH
UFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0YUdQ
Uik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShBUk02
NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5dGVP
ZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJNNjRF
KQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7CisgICAg
bnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVzdWx0
KHZlY3RvckdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC0zNjQ0LDExICsz
NzIzLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgYmFzZUVkZ2UpOwog
ICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgaW5kZXhFZGdl
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2g7CiAKICAgICAgICAgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CiAgICAgICAgIAotICAg
ICAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsK
KyAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQ
Uiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIAogICAgICAgICBHUFJUZW1wb3JhcnkgYXJnc1sy
XTsKICAgICAgICAgCkBAIC00MzgxLDYgKzQ0NjEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworICAgICAg
ICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRl
QnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDk5LDYgKzQ1ODMsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVH
ZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTg2LDEwICs1Njc1LDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBE
YXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVz
dGVkSW1tMzIoMCkpKTsKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BS
LCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0
LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9q
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5k
cywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCkBAIC01Nzg3LDEwICs1ODc4LDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5lbXBsYWNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMykpOwogICAgICAgICBHUFJSZWcgaXNMaXR0bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVu
ZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJhbmQtPmdwcigpIDogSW52YWxpZEdQUlJl
ZzsKIAorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygp
LCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NU
aGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CiAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEp
CiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEp
LCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRh
Vmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAg
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApA
QCAtNjA0Miw2ICs2MTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBBc3NlcnRJbkJv
dW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50
NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAg
IGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4u
ZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNl
IFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNo
ZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAgICAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAg
ICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0
QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAg
ICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYg
KzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAg
ICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNl
IFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5l
cmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
UmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRC
dXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgog
ICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0xOTksNiAr
MjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBD
aGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29u
c3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJh
cmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAg
ICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgog
ICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNhOGY1Y2ZjNzk1
ZS4uZDFjZTIzNzQxNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSk7
CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAg
ICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAg
ICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUNoZWNr
SW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlW
YWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmlzTnVs
bChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkp
OwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAg
ICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgp
CiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00
ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAgICAgTFZhbHVl
IHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291
dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksIAorICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihK
U0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAgICB1bnN1cmUo
Y29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRU
byhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw3ICs0ODc3LDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIobV9vdXQuY2Fz
dFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVs
T3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0
b3JPdXQsIHdhc3RlZnVsT3V0KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICAvLyBBSSBw
cm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBi
ZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgICAgIHNw
ZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShyZXN1bHQs
IG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7
CisgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgewor
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0
U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwogICAgIH0K
IAogICAgIHZvaWQgY29tcGlsZUdldFByb3RvdHlwZU9mKCkKQEAgLTUwNTQsOCArNTA3OSw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlm
IChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAg
ICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVn
YXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d19sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0
Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9W
YWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0
SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYgKzUwOTAsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJy
YXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUy
KG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVh
cHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAtNTEwOCw3ICs1MTQxLDE5IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9k
ZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAogICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVt
LgogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpCisg
ICAgeworICAgICAgICAvLyBTaWduLWV4dGVuZGVkIHRvIGFsc28gY2F0Y2ggbmVnYXRpdmUgaW5k
aWNlcworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGxvd1N0cmljdElu
dDUyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5v
VmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVxdWFsKGluZGV4LCBsZW5ndGgpKTsKKwor
ICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBu
byB1c2VyIG9mIHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2Vy
cyBvZiB0aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2Ug
ZG9taW5hdGUgdGhlbS4KKyAgICB9CisKICAgICBMVmFsdWUgY29tcGlsZUdldEJ5VmFsSW1wbCgp
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNjAwOCwxMSArNjA1MywxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0luQm91bmRzID0g
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNPdXRP
ZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZCb3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5k
cykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICBMVmFsdWUg
aXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkNS51
c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0
T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92ZU9yRXF1YWwobV9vdXQuc2lnbkV4dDMyVG82
NChpbmRleCksIGxvd1N0cmljdEludDUyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoaWxkNS51c2VLaW5kKCkg
PT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgaXNPdXRPZkJvdW5kc0NvbmRp
dGlvbiA9IG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3V0
T2ZCb3VuZHNDb25kaXRpb24sIHVuc3VyZShpc091dE9mQm91bmRzKSwgdW5zdXJlKGlzSW5Cb3Vu
ZHMpKTsKKwogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGlzT3V0T2ZCb3VuZHMpOwogICAgICAgICAgICAgICAgICAg
ICBtX291dC5zdG9yZSh2YWx1ZVRvU3RvcmUsIHBvaW50ZXIsIHN0b3JlVHlwZSh0eXBlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTgxNjksOTUg
KzgyMTksMTggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFy
cmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0
KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTEJhc2ljQmxvY2sg
c21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJa
ZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1fb3V0
LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXpl
TGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxs
RW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFs
dWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRy
KHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkp
OwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAg
ICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5
dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRl
SGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAgICAgICAgICAgICAgICBt
X291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQu
bFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAgICAgICAgICAgICAgICBt
X291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVy
dGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsKLSAgICAgICAgICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRl
clR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0
ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0
ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAg
ICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1z
WzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdl
ID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAg
ICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3
aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5h
bWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAg
ZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1
cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9W
SUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UK
LSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1
bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291
dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBt
X291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1
ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKyAg
ICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlw
ZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAg
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRW
YWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVj
dG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0
b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhT
aXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xv
YmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFs
dWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAg
TFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlU
eXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtODI3Nyw3ICs4MjUwLDEwMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlw
ZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVl
IHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAg
ICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVz
dWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8g
V2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXpl
IGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGlu
dDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisKKyAgICAgICAgTFZh
bHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChzaXplNjRCaXRzLCBtX291dC5j
b25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBpZiAo
ZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNpemUg
PSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291
dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0
YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGFs
bG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFs
bG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRXb3Jk
cygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCisg
ICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5j
b25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAgICAg
ICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAg
ICAgICB7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFw
cGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBw
ZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0
ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRo
ZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhh
dmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0
UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7
CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlw
ZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVj
dDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2Up
OyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQ
RV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBF
RF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAg
ICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3Rv
cmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7
CisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9v
dXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFs
dWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdl
VmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7
CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1
bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0
b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRv
cj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwK
KyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlw
ZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0
LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2
b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFs
dWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE0NjU2LDYgKzE0NzIy
LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIGJhc2UgYW5kIHZhbHVl
IGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRzCisgICAgLy8gc3RvcmVzIHZh
bHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2UrYmVnaW4qOCBhbmQgYmFzZStl
bmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwgTFZhbHVlIGJlZ2luLCBMVmFs
dWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCkKICAgICB7CiAg
ICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0ID0gMTA7CkBAIC0xNTU5MSw3ICsx
NTY1OSw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUt
PmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0
UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZm
ZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsK
KyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRl
eFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0
ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9D
aGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyAr
MTU4MDMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2Rl
LT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4
dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVl
KCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7
CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmll
dywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBMVmFsdWUgaW5k
ZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5
dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRv
Q2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcg
KzE3MzA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBkb1VudGFnQXJyYXlQdHIgPSBbJl0o
TFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02NEUpCiAgICAgICAgICAgICBpZiAoa2lu
ZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemUg
PSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdW50YWdB
cnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IGE5NDIwMDkz
ZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgK
QEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZh
bHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZh
bHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2Fk
MzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2Us
IGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7
IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3Ry
YWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExW
YWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwg
TFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2lj
RW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwCmluZGV4IDI1MjBmOGNjNDQ1Ni4uODcyMzAyMmU5YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MywyMyArODMsMzIgQEAg
dm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAg
ICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAg
ICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3Rh
dGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVn
cyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewogICAgICAg
ICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFy
cmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGUpID4gMSkKKyAgICAgICAgICAgIGppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxl
bWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQ
UiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UK
ICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4g
dXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3ZSBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRl
TGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgotICAgICAgICAgICAgaml0LmxzaGlmdDMy
KHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0
Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBh
biBpbnQzMi4KKyAgICAgICAgICAgIGppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVu
dFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAgICAgICAgIH0KLQogICAgICAgICBqaXQuYm94SW50
MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwLDggKzEzOSwxMiBAQCB2b2lkIEludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2
YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAor
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFs
dWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAg
ICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0
YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDRhNWMwODBjMDYwYy4uZmFjOGUwYWM2
NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3UKICAgICAgICAgdWludDMy
X3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpIHsKLSAgICAgICAg
ICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUpOworICAgICAgICAg
ICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9m
aWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRP
dXRPZkJvdW5kcygpOwpAQCAtMjM0MiwyMSArMjM0MCwyMiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4g
aW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9
ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3Jp
cHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7
CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChp
ID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRl
eChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAg
ICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVs
c2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdl
dEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKQotICAgICAgICAgICAgICAg
IHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1Zh
bHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lw
TWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmlu
ZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA+PSAwICYmIHN0YXRpY19j
YXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7
CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250
aWd1b3VzCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2Jq
ZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJs
ZToKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyOTQwCiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0
LT5nbG9iYWxPYmplY3Qodm0pOwpAQCAtMjM3Miw4ICsyMzcxLDcgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpID49IDAp
Ci0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xv
YmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0g
ZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFy
cmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgKaW5kZXggNDFjNzFiNjAwNDRlLi4zYWMyZjAxMGM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsx
NDksMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgT0ZGTElORV9BU01fUkVHSVNURVI2NCAxCisjZWxzZQor
I2RlZmluZSBPRkZMSU5FX0FTTV9SRUdJU1RFUjY0IDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJF
U1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1NjgxMzc3YmI5
ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3LDggKzEwNDcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAg
ICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3Qt
PmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmpl
Y3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0ICsxMTcwLDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIAogICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkp
IHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2
YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZh
bHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghb2JqZWN0LT50cnlTZXRJ
bmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKQogICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5U
X0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjQyMWE3ZmE0MTBlLi5mYzE2ZWViNGVkZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgU3Ry
dWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2Vu
dHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQKIAoraWYgUkVHSVNURVI2NAor
ICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVByb2Zp
bGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFIG9yIFJJU0NW
NjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxB
bmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6bV9p
bmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNybyBnZXRC
eVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3Vi
bGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBpbmRleCBpcyBhbHJlYWR5IHNpZ24t
ZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21hY3JvIGdldEJ5VmFsVHlwZWRBcnJh
eShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBz
ZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3
ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxh
dGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQyCiAgICAgc3Vi
aSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwxMyArMTMyNiwyMiBAQCBtYWNybyBn
ZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBjb25zdCBsZW5ndGggPSB0
NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0
aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jh
c2VdLCBsZW5ndGgKKyAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICBl
bHNpZiBSRUdJU1RFUjY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRp
b25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2Vk
IG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJW
aWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3Ro
IGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBi
ZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlh
ZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAg
ICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAgICAgYnFiZXEgaW5kZXgsIFNtYWxsVHlw
ZWRBcnJheU1heExlbmd0aCwgLnNtYWxsVHlwZWRBcnJheQorICAgICAgICBzZXRMYXJnZVR5cGVk
QXJyYXkoKQorLnNtYWxsVHlwZWRBcnJheToKKyAgICBlbmQKKwogICAgIGxvYWRwIEpTQXJyYXlC
dWZmZXJWaWV3OjptX3ZlY3RvcltiYXNlXSwgdDMKICAgICBjYWdlZFByaW1pdGl2ZSh0MywgbGVu
Z3RoLCBiYXNlLCBzY3JhdGNoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDUwZDVkYmRmNjAyYS4u
Njc4ZWM2NGM2NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5k
ZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0
QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCBtYWNybyAoKSBlbmQsIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93Ogog
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmlu
ZGV4IGQ4NGI2ZWFkMzdmZC4uNDg1NDcwMWQ4ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsx
NzEzLDE2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFs
KHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAg
ICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgICAgIHN0b3JlYiAxLCBPcEdl
dEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheVt0
NV0KKyAgICAgICAgZW5kCisgICAgZWxzZQorICAgICAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJy
YXkoKQorICAgICAgICAgICAgY3Jhc2goKQorICAgICAgICBlbmQKKyAgICBlbmQKKwogICAgIG1l
dGFkYXRhKHQ1LCB0MikKIAogICAgIGdldChtX2Jhc2UsIHQyKQpAQCAtMTcyMyw3ICsxNzMzLDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogICAgIGdldChtX3Byb3BlcnR5LCB0MykKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNs
b3cpCi0gICAgc3hpMnEgdDEsIHQxCisgICAgc3hpMnEgdDEsIHQxICMgVGhpcyBzaWduLWV4dGVu
dGlvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdldEJ5VmFsVHlwZWRBcnJheSB3b3Jr
IGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCiAgICAgbW92ZSBUYWdOdW1iZXIsIG51
bWJlclRhZwpAQCAtMTc2Myw3ICsxNzczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAg
ICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmlu
aXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXks
IC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFlLi5mOGU0YWMzYTRlNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnBy
aW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCku
Y29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIHNpemUsIEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShk
YXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAg
LCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29udGVu
dHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQogICAg
IG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRz
OjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBzaXplSW5CeXRl
cywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9k
YXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykK
IHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQo
KQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50
czo6dHJ5QWxsb2NhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3Qg
YWxsb3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVt
ZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1l
bnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1l
bnRCeXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAg
ICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVj
a2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IHNpemVJbkJ5dGVzID0gbnVtRWxlbWVu
dHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXplSW5C
eXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9C
VUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVudHMp
ICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgVUNQVVJlZ2lzdGVyIGFsbG9jYXRpb25T
aXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAg
ICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxs
b2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0
aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9k
YXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBl
KGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBy
ZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBt
ZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNp
emVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsK
ICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVj
dG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpz
aGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQo
b3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0K
IAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJj
ZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAg
IGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFi
dWZmZXIpCkBAIC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBp
cyBvbmx5IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2
ZSBhbHJlYWR5IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdh
Y2FnZTo6aXNFbmFibGVkKCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2Fn
ZTo6Y29udGFpbnMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0
aCAtIDEpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIx
OCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2Ug
Y291bGQgaW50cm9kdWNlIGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1
bmNhZ2VkIGFuZCBnZXQgYWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2Vt
Ymx5LiBXYXNtIHNob3VsZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikK
K1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lk
KiBkYXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdl
ZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQ
cmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5
LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShB
cnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90
aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNv
bnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29u
dGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVV
bmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUo
bnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udElu
aXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3
IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUlu
dGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNl
LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwg
c291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RG
TW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0
ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7
CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkK
K1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVu
dHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJy
YXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25l
ZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWdu
ZWQgcmlnaHQpCitVQ1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgs
IFVDUFVSZWdpc3RlciBsZWZ0LCBVQ1BVUmVnaXN0ZXIgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxl
ZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNp
Z25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5z
aWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpj
bGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKK1VDUFVSZWdpc3RlciBBcnJheUJ1ZmZlcjo6
Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExl
bmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgY3VycmVudExlbmd0aCA9IGJ5
dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBpbmRleCA9IGN1cnJlbnRM
ZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExl
bmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVk
SW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdp
biwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
c2xpY2VXaXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVyIGVu
ZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVn
aW4gOiAwOworICAgIFVDUFVSZWdpc3RlciBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVn
aW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0
KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJh
Li5iMGFlNTZiZTU4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hh
cmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYg
Q1BVKFJFR0lTVEVSNjQpCisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAz
MikKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVDUFVSZWdpc3RlcikgPT0gc2l6ZW9mKHVpbnQ2NF90
KSk7CisjZWxzZQorLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBVQ1BVUmVnaXN0ZXIgdG8gc3Rv
cmUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQg
NEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBp
biBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBo
YXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3
aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRv
ICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpA
QCAtNTEsNyArNjAsNyBAQCB1c2luZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJl
Z2lzdGVyLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0ZXMpOyB9CkBAIC02MCwxNCArNjksMTQg
QEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFj
a2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2ln
bmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9Owog
CiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
cnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJh
eUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250
ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50
cyh2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVy
Q29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKQEAg
LTc5LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJl
dHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAgVUNQVVJlZ2lzdGVy
IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIAogICAg
IGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApAQCAtOTQs
NyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9OwogCi0g
ICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxvY2F0ZShV
Q1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlh
bGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQg
dHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExNCwyOCBAQCBw
cml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cisg
ICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6
IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3Rl
ciBieXRlTGVuZ3RoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBk
YXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVD
UFVSZWdpc3RlciBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0
ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIAog
ICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5p
bml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGlu
ZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdDsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsK
ICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2lu
LCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlC
dWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5
QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoVUNQVVJlZ2lzdGVyIGJlZ2luLCBVQ1BVUmVn
aXN0ZXIgZW5kKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxp
bmUgdm9pZCB1bnBpbigpOwpAQCAtMTYxLDEyICsxNzAsMTIgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2
ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYm
LCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlC
dWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgVUNQVVJlZ2lzdGVyKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0
aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAg
IGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1
bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBjbGFtcEluZGV4KGRvdWJs
ZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBWYWx1
ZShkb3VibGUgeCwgVUNQVVJlZ2lzdGVyIGxlZnQsIFVDUFVSZWdpc3RlciByaWdodCk7CiAKICAg
ICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMjAxLDcgQEAgY29uc3Qg
dm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRh
dGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQ
VVJlZ2lzdGVyIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jb250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxNCw3IEBAIGJvb2wgQXJy
YXlCdWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0
aW1hdGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0
byBzY2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICBy
ZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0
aCgpKTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0K
IAogdm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uZWIwNTA5ZWNk
Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQ
VVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogICAgICAgICA6
IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUp
CiAgICAgICAgICwgbV9ieXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxv
dz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOworICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBDcmFzaE9u
T3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsK
ICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBt
X2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3Nzhh
OS4uMDBlZGNkMzg0N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5
VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3QKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNl
dCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIFVD
UFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9v
bCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIs
MTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJh
eUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMg
c2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQo
dW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5
Qnl0ZU9mZnNldEFsaWdubWVudChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVy
IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChzaXpl
IC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRTaXplIC0gMSkp
OwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5n
ZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAgICBzdGF0aWMg
Ym9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAg
Ly8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVm
ZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0
aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQ
VVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBV
Q1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlm
IChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZz
ZXQpIC8gc2l6ZTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5
dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZWxlbWVu
dFNpemUpOwogICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMg
KzExMyw0OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChK
U0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxp
bmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwor
ICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgVUNQVVJlZ2lzdGVyIGJ5
dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5s
aW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVM
ZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1w
bChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVz
dGluYXRpb24sIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBj
YWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5z
aWduZWQgYXJyYXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVu
Z3RoKTsKKyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgcmFuZ2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNl
dCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAv
LyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5n
IGJ1ZmZlcidzIHZpZXcuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZv
aWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXIm
IGJ1ZmZlciwKLSAgICAgICAgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNp
Z25lZCAqb2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIFVD
UFVSZWdpc3RlciBhcnJheUJ5dGVPZmZzZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciAqb2Zmc2V0
LAorICAgICAgICBVQ1BVUmVnaXN0ZXIgKm51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5z
aWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihU
KTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG1heE9mZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRz
PFVDUFVSZWdpc3Rlcj46Om1heCgpIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAg
ICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZzZXQgPSBi
dWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zm
c2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1
ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdF
bGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7Cisg
ICAgICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gYWRqdXN0ZWRPZmZz
ZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAg
ICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVz
dGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVm
ZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0
aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQu
dmFsdWUoKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZl
ci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1l
bnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQog
Ci0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgdWludDY0X3QgbV9ieXRlT2Zmc2V0IDogNjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0
ZU9mZnNldCA6IDMxOworI2VuZGlmCiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAg
dW5zaWduZWQgbV9ieXRlTGVuZ3RoOworICAgIFVDUFVSZWdpc3RlciBtX2J5dGVMZW5ndGg7CiAK
ICAgICB1c2luZyBCYXNlQWRkcmVzcyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZv
aWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJh
eUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUs
NDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAot
Ym9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5z
aWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVm
ZmVyVmlldyogYXJyYXksIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0
ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+
Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zm
c2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zm
c2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBh
cnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCog
ZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBB
cnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0
ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChi
eXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0
ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVM
ZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Ig
b3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRh
dGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQogCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVz
cygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0
aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQg
Ynl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVz
dGluYXRpb24sIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0
IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9y
RXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGlu
YXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6
emVyb1JhbmdlSW1wbChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIHJhbmdl
Qnl0ZUxlbmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAg
IC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxl
clRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2Ug
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2Ug
KyBieXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGlu
dCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1
bnNpZ25lZCogbGVuZ3RoKQotewotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9
IGFycmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAg
aWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDAp
Ci0gICAgICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4g
YXJyYXlTaXplKQotICAgICAgICBlbmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0
KQotICAgICAgICBlbmQgPSBzdGFydDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0
YXJ0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJW
aWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNw
cAppbmRleCA2ODgzYTE3YzQ3MmQuLmQzNjI0NTBhMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBz
dGF0aWMgdW5zaWduZWQgdmFsaWRhdGVBdG9taWNBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBKU0FycgogICAgICAgICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4
VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJhY2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVk
QXJyYXlWaWV3LT5sZW5ndGgoKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOwor
CiAgICAgaWYgKGFjY2Vzc0luZGV4ID49IHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBv
dXQgb2YgYm91bmRzIGZvciBhdG9taWMgYWNjZXNzLiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2
NGFmMi4uN2IxZWQ3Y2Y1NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDIwICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0
YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBieXRlTGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwg
Ynl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6
Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0
ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgg
PSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVy
KSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uZGU3MTRiNjI1MDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewog
cHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRl
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJy
YXlCdWZmZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBm
aW5hbApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdy
YXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRs
ZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdldChVQ1BVUmVnaXN0ZXIg
b2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7
CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2Yo
VCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0
LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQo
VUNQVVJlZ2lzdGVyJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4o
b2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpz
dGF0dXMpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJv
b2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KFVD
UFVSZWdpc3RlciBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0
dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAg
aWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAg
RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uYjI4NzliM2RmMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNCAr
MzMsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xh
c3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBj
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShVQ1BVUmVn
aXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVh
dGUoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRl
T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
VUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
PihiYXNlQWRkcmVzcygpKTsgfQogICAgIAotICAgIGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldChHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIGFycmF5LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXksIG9mZnNldCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0UmFuZ2UoY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBv
ZmZzZXQpCisgICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBk
YXRhLCBVQ1BVUmVnaXN0ZXIgY291bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAg
ICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksCkBAIC01OCwzOSArNTgsMzkgQEAgcHVibGljOgogICAgICAgICAg
ICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpCisgICAg
Ym9vbCB6ZXJvUmFuZ2UoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHplcm9SYW5nZUltcGwob2Zmc2V0ICogc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpLCBjb3VudCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgemVyb0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5n
dGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIFVDUFVSZWdp
c3RlciBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGl0ZW0oVUNQVVJlZ2lzdGVyIGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAg
ICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNp
Z25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3Rl
ciBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRh
dGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0K
IAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKFVDUFVSZWdpc3RlciBpbmRleCwg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAg
ICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRSYW5nZSh0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNl
dCkKKyAgICBib29sIGdldFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIFVDUFVS
ZWdpc3RlciBjb3VudCwgVUNQVVJlZ2lzdGVyIG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVy
biBnZXRSYW5nZUltcGwoCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRh
KSwKQEAgLTk4LDE4ICs5OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KIAotICAgIGJvb2wgY2hlY2tJbmJv
dW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKKyAgICBib29sIGNo
ZWNrSW5ib3VuZERhdGEoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KSBj
b25zdAogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0g
ICAgICAgIHJldHVybiAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsg
Y291bnQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21h
bGxlclRoYW5PckVxdWFsKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAg
ICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUo
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsK
QEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAo
SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKaW5kZXggYWU1YmRkOGM2YTMxLi41OWM2OWUzMTIyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmlj
VHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IEFy
cmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdp
c3Rlcj46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKFVDUFVSZWdpc3Rl
ciBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUo
Ci0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZShVQ1BVUmVn
aXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZm
ZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewog
ICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5n
dGgpOwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxl
bmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
KTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwpAQCAtMTE4LDI1ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0
cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAot
ewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4K
LUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAotewotICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0
ZU9mZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxl
bmd0aCk7Ci0gICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7
Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFw
dG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAg
IHJldHVybiB0cnlDcmVhdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp3cmFwKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4u
MjdhOTc3OWY0OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBK
U0FycmF5QnVmZmVyVmlldzo6c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0
cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAs
IG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxl
bWVudFNpemUsCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUsCiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1v
ZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpA
QCAtNjMsNyArNjMsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBpZiAobGVuZ3RoIDw9IGZhc3RTaXplTGltaXQpIHsK
ICAgICAgICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwot
ICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKKyAgICAg
ICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7CiAgICAg
ICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9u
VmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5O
dWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODEsMTgg
KzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxs
b3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpIC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tl
ZDxVQ1BVUmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93PiBzaXplID0gbGVuZ3RoOworICAgIHNpemUg
Kj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUgPiBN
QVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qg
c2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4o
ZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFs
bG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3Ig
PSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6
ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwg
c2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0
dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEw
MCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQs
NyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0
OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1
Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoRGF0YVZpZXdNb2Rl
KQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShK
U1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJyYXlU
eXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25z
dAorVUNQVVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBs
ZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICByZXR1cm4g
cmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlz
IGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4
dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0dXJuIGxl
bmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1ZmZlciog
SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3
NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1l
bW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwog
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IHRo
aXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0
VHlwZWRBcnJheTogewpAQCAtMzE1LDggKzMyMiw4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIEFycmF5QnVmZmVy
KiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0
ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOworICAgIFVDUFVSZWdp
c3RlciBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2Rl
ZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRl
eCBkZDAxZjdmODJhNTMuLjQ2NzBiNDZkOGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVi
bGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBVQ1BVUmVnaXN0ZXIgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNp
bmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQs
IHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTEx
NywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBVQ1BVUmVnaXN0ZXIgc2l6ZU9mKFVDUFVS
ZWdpc3RlciBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKTsKKyAgICAgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXI+IHJlc3VsdCA9IGxlbmd0aDsK
KyAgICAgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSAtIDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4o
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1
ICsxMzgsMjUgQEAgcHJvdGVjdGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFs
aXphdGlvbk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUq
LCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1v
ZGUgPSBaZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNv
bnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVt
ZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAg
ICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0
J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250
ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAg
Q29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lk
KiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0
aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICAgICAgICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9Owog
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0
ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAg
ICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAg
ICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0
b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAg
dXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRh
Z0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMy
X3QgbV9sZW5ndGg7CisgICAgICAgIFVDUFVSZWdpc3RlciBtX2xlbmd0aDsKICAgICAgICAgVHlw
ZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAg
IH07CkBAIC0xOTAsMTEgKzE5MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCogdmVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0aCgpKTsgfQogICAgIHZvaWQq
IHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0
VW5zYWZlKCk7IH0KICAgICAKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwotICAg
IGlubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7
CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KCk7CisgICAgaW5saW5lIHN0ZDo6
b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0Owog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAog
ICAgIFZlY3RvclB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBVQ1BV
UmVnaXN0ZXIgbV9sZW5ndGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
d0lubGluZXMuaAppbmRleCAxZDA3MmI3MWFjYjcuLjYzMTgxNTVlNjQwYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxp
bmVzLmgKQEAgLTk5LDcgKzk5LDcgQEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZp
ZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICBwdHJkaWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3
aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWx0YSk7CisgICAgVUNQVVJlZ2lzdGVyIHJlc3VsdCA9
IHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZGVsdGEpOwogICAgIGlmIChyZXF1ZXN0ZXIgPT0g
TXV0YXRvcikKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSA9
PSBkZWx0YSk7CiAgICAgZWxzZSB7CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBpbmxpbmUgUmVzdWx0
VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgp
CitpbmxpbmUgVUNQVVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsK
LSAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgdW5zaWduZWQ+KCk7CisgICAgcmV0
dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIFVDUFVSZWdpc3Rlcj4oKTsKIH0KIAotaW5saW5l
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29u
Y3VycmVudGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gSlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQogewotICAgIHJldHVybiBieXRlT2Zm
c2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAg
ICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDxV
Q1BVUmVnaXN0ZXI+PigpOwogfQogCiBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNB
cnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggYjFlYTlkYTBmZTRjLi5l
NWJkZmM2ODc4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKQEAgLTI5OCw2ICsyOTksNyBAQCBwdWJsaWM6CiAg
ICAgaW50MzJfdCB0b0ludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3Qg
dG9VSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b0luZGV4KEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAgICBVQ1BVUmVn
aXN0ZXIgdG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJv
ck5hbWUpIGNvbnN0OwogICAgIGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi44MGMyM2Y2YzY5NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjks
MTQgKzY5LDQ3IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpIHsKKworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMy
KCk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJv
ck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworfQorCitpbmxpbmUg
VUNQVVJlZ2lzdGVyIEpTVmFsdWU6OnRvVHlwZWRBcnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKKyAgICBpZiAoZCA8PSAtMSkgeworICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikp
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAg
ICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6
dG9JbnQzMihkKSk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUs
ICIgdG9vIGxhcmdlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxs
IG9mIHRoaXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBv
biAxPDwzMi4KKyAgICBVQ1BVUmVnaXN0ZXIgb3V0cHV0T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUg
aW5wdXRPZmZzZXQgPSAwOworICAgIFVDUFVSZWdpc3RlciBpbnQzMk1heCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihpbnQzMk1heCkpIHsKKyAgICAgICAgb3V0cHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgICAg
IGlucHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgfQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgb3V0cHV0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSlNDOjp0b0ludDMyKGQgLSBpbnB1dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjku
Ljk4NWQ5ZTI0NDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZt
LCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZlciogYnVmZmVyCiAKIEpT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0Rh
dGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZp
ZXc6OnNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciwgSlNPYmplY3QqLCBVQ1BVUmVn
aXN0ZXIsIFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpTVmFsdWUpCiB7CiAgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJjNzg1ZTQ3NjExYS4uNWVlMWQ4NjE5ZTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYs
MTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwKKyAgICAg
ICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMs
IHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCiAg
ICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3aGVy
ZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNp
Z25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmlu
aXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0
KiwgVUNQVVJlZ2lzdGVyLCBKU09iamVjdCosIFVDUFVSZWdpc3RlciwgVUNQVVJlZ2lzdGVyIGxl
bmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3Rlciwg
SlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBBcnJheUJ1ZmZlciogdW5zaGFyZWRCdWZm
ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkwNjI0N2VhNjUuLmQ4Yzk5YzNjNjhhNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlm
ICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3
Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1
bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAg
ICBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFy
cmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBi
eXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9m
IGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIsNyArMTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
c2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUg
YSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgo
Z2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVk
IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIFVDUFVS
ZWdpc3RlciBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAg
ICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMp
IHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgy
KS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZm
ZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVu
Z3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5n
dGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRz
IGFjY2VzcyJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4uMDU2ODM4Yzll
NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2
ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0
IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1
cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAgICAvLyBmcm9t
IEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJfdCBMCisvLyAg
ICAgVUNQVVJlZ2lzdGVyIEwKIC8vICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2Ug
ZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1F
OiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13
aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBC
IGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZs
b3ciIGRhdGEgZm9yCkBAIC0xMDMsMTUgKzEwNCwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYg
aW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0
dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9Ci0gICAgc2l6ZV90
IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQor
ICAgIFVDUFVSZWdpc3RlciBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0
aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQogICAgIAogICAgIGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVjdG9yKCkgY29uc3QKICAgICB7CkBAIC0xMjIs
NDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsKICAgICB9CiAKLSAgICBib29sIGluQm91bmRz
KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBpbkJvdW5kcyhVQ1BVUmVnaXN0ZXIgaSkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0
aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFu
Y3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBi
b29sIGNhbkdldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7
CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGks
IEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
ICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5Owog
ICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHR5cGVkVmVj
dG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGkp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIs
IGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoVUNQ
VVJlZ2lzdGVyIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVl
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpLCBKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxB
ZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBi
b29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBp
LCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC0xNzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZl
RnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMg
RWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2
ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21W
YWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29l
cmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJv
bVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZv
aWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoVUNQVVJl
Z2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBt
X2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9m
ZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFu
T3JFcXVhbChvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBM
aWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0
aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0
ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBv
ZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1
Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8v
IHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNl
cnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBvZmZz
ZXQsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxl
bmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAgICAKICAgICBSZWZQ
dHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7
CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1w
bCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJvdyBvbiBlcnJvci4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAgICAgYm9vbCBzZXRXaXRoU3Bl
Y2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0gICAgICAgIHVuc2lnbmVkIG9i
amVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3Ro
ZXJBZGFwdG9yPiosCisgICAgICAgIFVDUFVSZWdpc3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMg
dGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2lu
ZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBl
ZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkr
KykKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQog
ICAgICAgICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggZDI1ODQw
NjdlODNmLi5lZWRhNTVlM2NhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVy
KiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLWlubGluZSBKU09iamVjdCog
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmly
c3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsZW5n
dGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIFVDUFVSZWdpc3RlciBvZmZzZXQs
IHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5ndGhPcHQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGxl
bmd0aE9wdCkKICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAg
ICBlbHNlIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAg
IC8vIC0gQSBwcmltaXRpdmUuIFRoaXMgY3JlYXRlcyBhIG5ldyB0eXBlZCBhcnJheSBvZiB0aGF0
IGxlbmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBpdC4KIAogICAgIGlmIChKU09iamVjdCogb2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBmaXJzdFZhbHVlKSkgewotICAgICAg
ICB1bnNpZ25lZCBsZW5ndGg7CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGg7CiAgICAgICAg
IEpTQXJyYXlCdWZmZXIqIGN1c3RvbUJ1ZmZlciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKGlz
VHlwZWRWaWV3KG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkg
ewpAQCAtMjUwLDcgKzI1MCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZmlyc3RWYWx1ZS50
b0luZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOworICAgIFVDUFVSZWdpc3RlciBsZW5ndGgg
PSBmaXJzdFZhbHVlLnRvVHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGxlbmd0aCkpOwogfQpAQCAtMjc1LDggKzI3NSw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoK
ICAgICB9CiAKICAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwotICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OworICAgIFVDUFVSZWdpc3RlciBvZmZzZXQg
PSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5ndGggPSBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVl
KSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgxKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODUs
NyArMjg1LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgLy8gSWYgdGhl
IGxlbmd0aCB2YWx1ZSBpcyBwcmVzZW50IGJ1dCB1bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3Np
bmcuCiAgICAgICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgyKTsKICAgICAgICAgICAgIGlmICghbGVuZ3RoVmFsdWUuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvSW5kZXgoZ2xvYmFs
T2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcg
PyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVu
Z3RoVmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVk
QXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3Ro
Iik7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwLi4wNTNjZmI1MWUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaCIKICNpbmNsdWRlICJUeXBlRXJyb3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5
cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3
LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVu
c2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2
ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENvbnN0cnVj
dGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKQEAgLTc4LDcg
Kzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC05OSwxMSArMTAwLDExIEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgc2l6ZV90IHNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgaWYgKCFBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwg
c2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZl
ciIpKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
PiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFw
dG9yPiogb3RoZXIsCisgICAgVUNQVVJlZ2lzdGVyIG90aGVyT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyAr
MjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNw
ZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3Rp
bmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAm
JiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5
cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAg
ICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFk
YXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRp
dmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAg
IC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBj
b3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKFVD
UFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRv
cjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhl
ci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0y
MzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
ZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJt
ZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBs
ZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJhbnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6
OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxl
bmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQg
KyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAs
MTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRX
aXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQg
b2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNPYmplY3QqIG9i
amVjdCwgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29w
eVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZv
KiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZh
c3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisg
ICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ug
d2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90
aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAg
bGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAg
LTMxMiw5ICszMTMsMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ugd29uJ3QgZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkg
d2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBtb3JlCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpKTsKICAgICAgICAgLy8gV2Ug
Y291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0
KTsKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9
IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNGMwZWJkMWY2MTY1Li5hOTc0
NzM3M2M0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAt
NjAsNiArNjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIEV4
Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEludGVybmFsRnVuY3Rpb247CkBA
IC0yMTEsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJ
bmRleElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewogICAgICAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlj
a2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBzZXRJbmRleFF1aWNrbHko
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICBpZiAodHJ5U2V0SW5kZXhRdWlja2x5
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQog
CkBAIC0yODksNyArMjg4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgY2FuR2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEFycmF5UHJvZmlsZSogPSBudWxs
cHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
KSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAotICAgIEpTVmFs
dWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisKKyAgICAvLyBVc2VzIHRo
ZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFy
cmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5z
aWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHko
KTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9C
TEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGlmIChjYW5HZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGkpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGksIGFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgYnJlYWs7
CkBAIC00MTEsMzUgKzQxMSw3MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXQoZ2xvYmFs
T2JqZWN0LCBpKTsKICAgICB9CiAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0OwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSk7Ci0gICAgICAgIAotICAgIGJvb2wgY2Fu
U2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mLCB1bnNpZ25lZCwgSlNW
YWx1ZSk7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRpY2F0ZSBzdWNjZXNzCisgICAgLy8g
VXNlIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VU
eXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKKyAgICBib29s
IHRyeVNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGlu
Z01vZGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAg
ICAgICAgIHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHYs
IGFycmF5UHJvZmlsZSk7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBF
UzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVf
SU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9J
TkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRF
WElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQ
RVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIo
KSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hp
bGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogewor
ICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYpOworICAgICAgICAgICAgaWYg
KGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJm
bHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcih0aGlzLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAg
ICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNOdW1iZXIoKSkgeworICAgICAgICAg
ICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2
bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBpZiAo
dmFsdWUgIT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1
b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1
dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQ
dWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJy
YXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBzZXRJbmRl
eFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAg
ICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgo
KQotICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0
b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoaXNDb3B5T25Xcml0ZShp
bmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92
ZWN0b3JbaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZv
ckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29w
eU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgIH0KLSAgICAgICAgCisKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYg
dm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0
dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDZlMWJiMWI1OWYxZS4uZWEzMDg4OWY1OTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aApAQCAtNDY1LDIxICs0NjUsMTUgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGlu
ZSBib29sIEpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJv
ZmlsZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVE
X0FSUkFZX1RZUEUobmFtZSkgXAotICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5T
ZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOwotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9U
WVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENB
U0VfVFlQRURfQVJSQVlfVFlQRQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6
OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFycmF5UHJvZmlsZSkKKyAgICAgICAgYXJy
YXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oYXJyYXlQcm9maWxlKTsKKyNlbmRpZgogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3
aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAg
ICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtcCkBAIC01MTIsNyArNTA2LDUwIEBAIGlubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGks
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiB9Ci0gICAgCisKK2lubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5
cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBz
dG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xk
ID0geC5nZXQoKTsKKyAgICB4LnNldCh2bSwgdGhpcywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAg
ICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOworICAgICAgICBpZiAoaSA+PSBz
dG9yYWdlLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7
CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9m
aWxlKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVm
aW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAg
IGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFy
cmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBl
ZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FS
UkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJy
YXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9U
WVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBc
CisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAq
Pih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGks
IHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNl
dEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFy
cmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNI
X1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZ
UEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BS
T0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBp
bmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXgg
Y2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhR
dWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
b2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2Up
ICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3
LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05
Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFn
ZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdl
U2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGU1YjdjZDQ2NjE4Ny4uZTZhYTdhMjBlYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEw
LTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBNYWRlIHNvbWUgb2YgQ2hl
Y2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVh
c3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAgICogd3RmL0No
ZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAo
V1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwpOgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG5vbi1IQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05f
U1RSSUNUUlVTVEVWQUxVQVRFKSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRl
eCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBS
ZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBz
aXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRh
cmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdl
dCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQg
dHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3Qg
dHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0
Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3
YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2Us
IGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
ICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewog
ICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1
ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAg
Ly8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNv
dXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxU
YXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFu
IHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAg
IHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRl
ciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Up
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAg
ICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2ln
bmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwg
aXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihT
b3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5z
aWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7
CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRT
YWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252
ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0lu
Qm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiAr
OTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJv
ZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+
KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVj
a2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVy
biAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQog
CiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2lu
ZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2lu
ZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5n
IFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM2ZDE1ZWRkMTNj
Li45M2Y2MjNkY2Q3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0xMC0xMyAg
Um9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdB
U00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgU29tZSBwYXJ0cyBvZiBXZWJDb3Jl
IHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5vdCBidWlsZCBhZnRlciBJIG1hZGUgdGhlIGxl
bmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5cyByZXR1cm4gVUNQVVJlZ2lzdGVyIGluc3Rl
YWQgb2YgdWludDMyX3QuCisgICAgICAgIE1vc3QgZml4ZXMgd2VyZSB0cml2aWFsLCB0aGUgb25s
eSBleGNlcHRpb24gaXMgU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCwgd2hlcmUgSSBoYWQgdG8g
aW5jcmVtZW50IHRoZSB2ZXJzaW9uIG51bWJlciwgYXMgQXJyYXlCdWZmZXIgKGFuZCBBcnJheUJ1
ZmZlclZpZXdzLCBhbmQgSW1hZ2VCaXRtYXApIG5vdyB3cml0ZS9yZWFkIHRoZWlyIGxlbmd0aCBp
biBhIDY0LWJpdCBmaWVsZCAoYW5kIHNhbWUgZm9yIHRoZSBieXRlT2Zmc2V0IG9mIEFycmF5QnVm
ZmVyVmlldykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUgY29kZSBpcyBhbHJlYWR5
IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBJIGltcGxlbWVudGVk
IG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEltYWdlQml0bWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlckltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlld0ltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZpZXcpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorICAgICAgICAqIGZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1ZXVl
OjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisK
IDIwMjEtMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGF2ZSB0aGUgU2Nyb2xsaW5nVHJlZSB0cmFjayBub2RlcyB3aXRoIGFuaW1hdGVkIHNj
cm9sbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5j
cHAKaW5kZXggY2I3ZTg0ZDQ1MzgzLi4yZGI0OWNhMjRhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTMsMTIgKzE5MywxMiBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9h
dDMyQXJyYXk+JiYgZGVzdGluYXRpb24sCiAgICAgCiAgICAgRmxvYXQzMkFycmF5KiBjaGFubmVs
RGF0YSA9IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0gICAgc2l6ZV90
IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGRh
dGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlck9m
ZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2ln
bmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BVUmVnaXN0ZXIg
Y291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4o
ZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9h
dCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyMSwxMiArMjIxLDEyIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+
JiYgc291cmNlLCB1bnNpZ25lCiAgICAgCiAgICAgRmxvYXQzMkFycmF5KiBjaGFubmVsRGF0YSA9
IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0gICAgc2l6ZV90IGRhdGFM
ZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGRhdGFMZW5n
dGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+
PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNv
dW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BVUmVnaXN0ZXIgY291bnQg
PSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oc291cmNl
LmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IHNv
dXJjZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5hYzg5Y2FlYmVjZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcApAQCAtMTk2LDggKzE5Niw4IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0
ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAgICBkb0ZGVEFu
YWx5c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGZyb20gbGluZWFyIG1h
Z25pdHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVuc2lnbmVkIHNvdXJjZUxl
bmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3Rk
OjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXpl
X3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNp
emVfdCBsZW5ndGggPSBzdGQ6Om1pbihtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCksIGRlc3RpbmF0
aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUg
cmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAx
IC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91Ymxl
IG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjcsOSBAQCB2b2lkIFJl
YWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0
aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAg
dW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0g
c3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90
IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXpl
X3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjpt
aW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAg
ICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJ
bnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAg
ICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Miw5IEBAIHZvaWQgUmVh
bHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0
aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVk
IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWlu
KGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5h
dGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNp
emUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNp
emUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBi
b29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZm
ZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJU
KGlzSW5wdXRCdWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uYTM4ZTFjYmY2
Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9XYXNtTW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAj
aW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Miw4ICszNDMsOSBAQCBzdGF0aWMg
dW5zaWduZWQgY291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVy
c2lvbiA3LiBhZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4K
ICAqIFZlcnNpb24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBh
dHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlQml0bWFwIGNv
bG9yIHNwYWNlLgorICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVuZ3RoIChhbmQgb2Zmc2V0
cykgb2YgQXJyYXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgZnJvbSAzMiB0byA2NCBi
aXRzCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSAxMDsKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBUZXJtaW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb25JbmRl
eFByb3BlcnRpZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMzk5LDcgKzQwMSw3IEBAIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8
IE9iamVjdFJlZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6
dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFycmF5QnVmZmVyVmlld1Rh
ZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3Ro
OnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5
QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0X3Q+
IDxieXRlTGVuZ3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCiAg
KiAgICB8IENyeXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3Rvcjpi
eXRle3dyYXBwZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0
CkBAIC00MDcsNyArNDA5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhC
aXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIHwgRE9NUXVhZAogICogICAgfCBJbWFnZUJpdG1h
cFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgUlRDQ2VydGlmaWNhdGVUYWcK
LSAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFuOnVpbnQ4X3Q+IDxsb2dpY2FsV2lk
dGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4gPHJlc29sdXRpb25TY2FsZTpkb3Vi
bGU+IERlc3RpbmF0aW9uQ29sb3JTcGFjZSA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4oPGltYWdlQnl0
ZURhdGE6dWludDhfdD4pCisgKiAgICB8IEltYWdlQml0bWFwVGFnIDxvcmlnaW5DbGVhbjp1aW50
OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+IDxsb2dpY2FsSGVpZ2h0OmludDMyX3Q+IDxyZXNv
bHV0aW9uU2NhbGU6ZG91YmxlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgPGJ5dGVMZW5ndGg6dWlu
dDY0X3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+KQogICogICAgfCBPZmZzY3JlZW5DYW52YXNU
cmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IFdhc21NZW1vcnlUYWcgPHZhbHVl
OnVpbnQzMl90PgogICogICAgfCBSVENEYXRhQ2hhbm5lbFRyYW5zZmVyVGFnIDxwcm9jZXNzSWRl
bnRpZmllcjp1aW50NjRfdD48cnRjRGF0YUNoYW5uZWxJZGVudGlmaWVyOnVpbnQ2NF90PjxsYWJl
bDpTdHJpbmc+CkBAIC00NjMsNyArNDY1LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmlu
Z0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIE9iamVjdFJlZmVyZW5jZVRhZyA8
b3BJbmRleDpJbmRleFR5cGU+CiAgKgogICogQXJyYXlCdWZmZXIgOi0KLSAqICAgIEFycmF5QnVm
ZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBB
cnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQ2NF90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9Pgog
ICogICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICBTaGFy
ZWRBcnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAtOTk4LDggKzEwMDAsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlC
dWZmZXJWaWV3KHZtLCBvYmopOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YXJyYXlCdWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIHVp
bnQ2NF90IGJ5dGVPZmZzZXQgPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKTsKKyAgICAg
ICAgd3JpdGUoYnl0ZU9mZnNldCk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVMZW5ndGggPSBhcnJh
eUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CiAg
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXct
PnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAg
ICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9y
OwpAQCAtMTEzMSw3ICsxMTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGUoc3RhdGljX2Nh
c3Q8ZG91YmxlPihidWZmZXItPnJlc29sdXRpb25TY2FsZSgpKSk7CiAgICAgICAgIHdyaXRlKGJ1
ZmZlci0+Y29sb3JTcGFjZSgpKTsKIAotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkpOworICAgICAgICB3cml0ZShzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkpOwogICAgICAgICB3cml0ZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIH0KIApAQCAtMTI2Myw4ICsxMjY3LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoSW1hZ2VEYXRhVGFnKTsKICAgICAgICAgICAgICAg
ICB3cml0ZShkYXRhLT53aWR0aCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWln
aHQoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKLSAg
ICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVu
Z3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNrZWRVaW50MzIgZGF0YUxlbmd0aCA9IGRhdGEt
PmRhdGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aC5oYXNPdmVy
Zmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwog
ICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzExLDggKzEzMjAsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICB3cml0ZShBcnJheUJ1ZmZlclRhZyk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXIt
PmRhdGEoKSksIGJ5dGVMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZp
ZXc+KHZtKSkgewpAQCAtMjU1NSw5ICsyNTY1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mIGFycmF5QnVmZmVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExlbmd0aFR5cGU+Cisg
ICAgYm9vbCByZWFkQXJyYXlCdWZmZXJJbXBsKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVm
ZmVyKQogICAgIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoOworICAgICAgICBMZW5ndGhUeXBl
IGxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChtX3B0ciArIGxlbmd0aCA+IG1fZW5kKQpAQCAtMjU2OSwxNSAr
MjU4MCwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBi
b29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcp
CisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZm
ZXIpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1
cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJfdD4oYXJyYXlCdWZmZXIpOworICAgICAgICBy
ZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50NjRfdD4oYXJyYXlCdWZmZXIpOworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZW5ndGhUeXBlPgorICAgIGJvb2wgcmVhZEFycmF5
QnVmZmVyVmlld0ltcGwoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgewog
ICAgICAgICBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgYXJyYXlCdWZmZXJWaWV3U3VidGFnOwogICAg
ICAgICBpZiAoIXJlYWRBcnJheUJ1ZmZlclZpZXdTdWJ0YWcoYXJyYXlCdWZmZXJWaWV3U3VidGFn
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgYnl0ZU9mZnNl
dDsKKyAgICAgICAgTGVuZ3RoVHlwZSBieXRlT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWQoYnl0
ZU9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5
dGVMZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZUxlbmd0aDsKICAgICAgICAgaWYgKCFy
ZWFkKGJ5dGVMZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09i
amVjdCogYXJyYXlCdWZmZXJPYmogPSBhc09iamVjdChyZWFkVGVybWluYWwoKSk7CkBAIC0yNTg3
LDcgKzI2MDYsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHR5
cGVkQXJyYXlFbGVtZW50U2l6ZShhcnJheUJ1ZmZlclZpZXdTdWJ0YWcpOwogICAgICAgICBpZiAo
IWVsZW1lbnRTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNpemU7CisgICAgICAgIExlbmd0aFR5cGUg
bGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOwogICAgICAgICBpZiAobGVuZ3RoICog
ZWxlbWVudFNpemUgIT0gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMjYzNCw2ICsyNjUzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBi
b29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcp
CisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1cm4g
cmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDMyX3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOwor
ICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDY0X3Q+KHZtLCBhcnJh
eUJ1ZmZlclZpZXcpOworICAgIH0KKwogICAgIGJvb2wgcmVhZChWZWN0b3I8dWludDhfdD4mIHJl
c3VsdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXgg
ZmI3NTdhNGQ3NGY2Li5hZmM3Y2MxZWY1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9p
ZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGlmIChoYXNBcnJheSkgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheS0+c2l6ZSgpKTsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvICZhcnJheUJ1ZmZlckNvbnRlbnRzIDogKm1fYXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5KSB7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IGFycmF5QnVmZmVyQ29udGVudHMuc2l6ZUlu
Qnl0ZXMoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFy
cmF5QnVmZmVyQ29udGVudHMuc2l6ZUluQnl0ZXMoKSk7CiAgICAgICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZm
ZXJDb250ZW50cy5kYXRhKCkpLCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCksIDEp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTk5LDkgKzE5OSwxMiBAQCBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogCiAgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkg
ewotICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIHVpbnQ2NF90
IGJ1ZmZlclNpemU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUp
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgQ2hlY2tlZDxV
Q1BVUmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQnVmZmVyU2l6ZSA9IGJ1ZmZlclNp
emU7CisgICAgICAgICAgICBpZiAoY2hlY2tlZEJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6
ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxMiw3ICsyMTUsNyBA
QCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkt
PmFwcGVuZCh7IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2Fj
YWdlRGVzdHJ1Y3RvcigpIH0pOworICAgICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
LT5hcHBlbmQoeyBidWZmZXIsIGNoZWNrZWRCdWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFkNjg2ZC4u
YmFmMWFiYWQ2N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5jcHAKQEAgLTY4LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKFdl
YkNvcmU6OkJsb2ImIGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNpemUoKTsK
ICAgICBpZiAoIWJ5dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVy
OjpjcmVhdGUoMFUsIDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mgd2VpcmQs
IGJ1dCBpcyByZXF1aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8gc3VjY2Vl
ZC4KKyAgICAgICAgLy8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdoZXJlIEFy
cmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxl
bmd0aCkgY291bGQgYmUgY2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oMFUpLCAxKSwgMCwgMCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1
ZVJlZjxCbG9iTG9hZGVyPihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUuLjFiYTMy
MmMxMGJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09C
b3guaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYzLDcgKzY0LDEwIEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1cm5WYWx1ZSwgViYg
dmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNzKQogICAgIHsKICAg
ICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFsdWUgPSB2aWV3LnRl
bXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlhbiwgJnJlYWRT
dGF0dXMpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0OworICAg
ICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFu
bmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9
IGFjdHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCg==
</data>
<flag name="commit-queue"
          id="465308"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441168</attachid>
            <date>2021-10-13 17:54:38 -0700</date>
            <delta_ts>2021-10-14 13:58:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>273610</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi4zNzliYzNjYTY4MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBicmFu
Y2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZh
bCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pTVmFs
dWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1h
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwppbmRl
eCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRt
ZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9v
KG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQgbWF4
U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3
MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAgIHZh
ciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwICsg
MSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
ZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYg
KGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cgZXhw
ZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjog
ZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAog
ZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJh
eSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTogMHg4
MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNpemUg
PSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAgIG1l
bW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAtIDB4
MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4uODBm
ZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBAQAot
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9y
ICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikK
Ky8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1LDIx
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIpKTsK
KyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
Zm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBtYXhT
aXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9
PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikpOwog
ICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0
cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUudG9T
dHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAg
IGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKwor
ZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0
aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlW
YWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJh
eVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2Eg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0
aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFj
dHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsg
bCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0
ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmlu
Zyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdp
Z3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRocmVl
R2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBm
b3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0
aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCww
ICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVl
ICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Cisg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTUzOWI1MGQyZTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxs
eS1vb2IuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3Ig
KCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQor
Ly9AIHJ1bkRlZmF1bHQoKQorZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0
aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSkKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9
Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0
OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJy
YXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAg
ICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
ICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAg
IHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0
QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IGFjdHVhbExlbmd0aCArIDEwOworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAg
IGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAoIkluIG91dC1vZi1ib3Vu
ZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10
aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpp
bmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0
ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYsMTMg
QEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAgICAg
dmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRNZW1v
cnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1vZHVs
ZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAK
LWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAoZXhj
ZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBpbnZh
bGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIoKSkn
KSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUt
dGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNt
LW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwppbmRl
eCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3Jl
Z3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJ
WkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZhciBl
eGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7CiB9
IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAhPSAi
UmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAoZXhj
ZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2FzOiAi
ICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZGU0Yjk1NDQzNC4uNzNmYmU1NThkN2Y5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFJlYmFzZWxpbmVkIHRocmVlIGZvbGxvd2luZyB0ZXN0cyBhcyBkaWZmZXJlbnQgb3Ig
ZmV3ZXIgZXJyb3IgbWVzc2FnZXMgYXBwZWFyIG9uIHRoZSBjb25zb2xlLgorICAgICAgICBBbHNv
IGNoYW5nZWQgY3VycmVudFZlcnNpb24gaW4gc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBm
cm9tIDkgdG8gMTAuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWludmFsaWQtcmVzdWx0LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisgICAgICAgICogd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0xMiAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRob3V0LWlu
dGVyYWN0aW9uLnB5IGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQtYnVmZmVyLWNy
YXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFn
ZURhdGEtaW52YWxpZC1yZXN1bHQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA1NzQ1
OTEyZmYwNzkuLjQ4ZWVmOTNjNDYyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWdldEltYWdlRGF0YS1pbnZhbGlkLXJlc3VsdC1idWZmZXItY3Jhc2gtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEt
aW52YWxpZC1yZXN1bHQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAK
LUNPTlNPTEUgTUVTU0FHRTogVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzLiBS
ZXF1ZXN0ZWQgc2l6ZSB3YXMgMzgxMDAwMDAwIHggMgotQ09OU09MRSBNRVNTQUdFOiBJbnZhbGlk
U3RhdGVFcnJvcjogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLgogUEFTU0VEIChJ
ZiB0aGlzIHBhZ2UgZGlkIG5vdCBjcmFzaC4pCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNj
cmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2Ny
aXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5o
dG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0PgogCi1jb25z
dCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MGE7CiAK
IC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVl
ZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gt
ZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jh
c2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Nv
bnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05T
T0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0
aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUz
Njg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBl
Y3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRl
eHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09M
RSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVmZmVyIHdpdGgg
MSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0aCBvZiA1MzY4
NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9mZmxpbmVBdWRp
b0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5kZXJpbmcgYnVm
ZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpp
bmRleCAwYWM3NWM5NzQ3OWQuLjc1OTNmYmE5ZTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3Nl
dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAg
ICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Ig
d2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8g
Z2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4g
YSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRB
cnJheS9ldGMuLiB0byBiZWluZyBVQ1BVUmVnaXN0ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJl
cXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RG
Ry9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRlciB0
byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9u
IGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRB
cnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0
SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2Vy
IG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZH
L0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFkIHRv
IGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3QgYWNj
ZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAgLSBJ
IG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwvRGF0
YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGluZGlj
ZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11bSBz
aXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEgIm1h
eUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQcm9m
aWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBpbmRl
eCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0aW9u
IG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBkYXRl
ZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3JyZWN0
bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRpbWUg
dG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMuCisg
ICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVw
IHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBh
dGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGlu
ZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBo
aWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBw
YXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlW
YWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBjdXJy
ZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZv
cm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBh
dGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRy
ICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisg
ICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMg
Y2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2gg
aXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRp
ZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBv
ZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkK
KyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQg
d2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50
cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6
OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6
YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0Fy
Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0
aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJM
ZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGlu
ZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29kZS9B
cnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdl
VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVk
QXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5saW5r
ZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBk
YXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9k
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6
QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VU
eXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6
d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFz
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVy
KToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6REZH
OjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50
cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
Ojpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR2Vu
ZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5o
OgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9y
YWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZElu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRB
cnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJp
bmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHND
aGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVk
QXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZs
b2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VU
eXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lz
dGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChK
U0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNo
ZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0lu
Qm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMT3V0
cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6Cisg
ICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZl
ckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2Nh
dGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcEluZGV4
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRl
eCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVm
ZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6
c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUlt
cGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgorICAg
ICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3KToK
KyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3
KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
VW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAgICAg
ICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZm
ZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZl
clZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmll
d0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpz
ZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6Cisg
ICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlND
OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lm
aWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJ
bmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhR
dWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdU
eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6
CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21Q
YWdlQ291bnQuaDoKKwogMjAyMS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2luIG1pZ3JhdGlvbiBmcm9tIFdURjo6VmFyaWFu
dCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4u
NTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2Fh
MGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUs
OSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3Ry
dWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVz
ZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0
IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAg
Ci0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAg
ICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQog
ICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3
OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
ZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAg
ICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNv
bnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAg
ICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRy
IDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIo
Y29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29u
c3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRy
KCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNU
cnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3Rl
ZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQ
VShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0
cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRy
IHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewog
ICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJ
bW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50
MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFs
dWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAg
ICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9Owog
ICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1w
bGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAg
ICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3Rl
ZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1
c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQo
aW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChp
bnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQp
Ci0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAg
ICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAg
ICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9
CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2
YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2
YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAg
ICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAj
aWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhw
bGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0
cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNv
bnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1
cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJs
ZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0
UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQz
Ml90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJj
aCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdp
c3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFi
YmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQ
VShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQp
CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBD
UFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5k
aWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMy
KCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BV
KFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0
KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYg
Ly8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2
b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsx
ODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJp
Z2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8g
T3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFu
Y2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVm
aW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRS
b2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUg
YW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91
bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9y
QmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFu
dChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGlu
ZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRj
aFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3
ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4K
KyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAg
ICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1
c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBj
b21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMy
IHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQo
cmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThmZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8g
RklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZm
OyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNo
KHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZh
bHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9w
ZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZElt
bTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2Fk
NjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIuLjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUu
aApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwg
UmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFy
Z2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0g
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2Fk
MzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIp
OwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1
bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBlNjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVn
aXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGlu
ZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNp
ZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQot
ICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVl
KSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZm
ZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAz
OTc5OTJhM2E3NTAuLmZjM2U5MDY2NGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2Fz
ZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVy
OgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNl
dHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICBjYXNlIEluSGl0OgogICAgIGNh
c2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDgg
QEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5Rmxv
YXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAg
Ly8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBw
cm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQgYXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJp
bnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEyICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3Rh
dGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAKICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2Ny
YXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
dHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkpOwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5n
dGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlH
UFIsIHNjcmF0Y2hHUFIpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICAvLyBUaGUgbGVu
Z3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcg
b24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNz
T2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChq
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUu
bWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkg
KzEyMDMsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9
IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAg
IGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFT
cGFjZSk7CiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChhZGRyZXNz
T2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgaml0LmxvYWQzMihhZGRyZXNz
T2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2VuZGlmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0
b3IoKSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50
YWcoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hH
UFIsIGZhbHNlKTsKLQogICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIs
IHNjcmF0Y2hHUFIpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKICAgICAgICAgICAgIHN3
aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKQEAgLTE1OTUsOSArMTYwNSwxNCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgcmVhZHkubGluaygmaml0
KTsKICAgICAgICAgfQogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQ
Uik7Ci0gICAgICAgIC8vIE91dE9mQm91bmRzIGJpdCBvZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBz
ZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4KLSAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0
Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVy
dHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3NPZkxlbmd0aCA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSk7CisgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8v
IFRoZSBsZW5ndGggaXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRl
cGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFw
cGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIs
IGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2gu
YXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlH
UFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3Ig
PSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAg
LTE2MDUsOSArMTYyMCwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
ICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZl
ZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAg
ICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6
Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBqaXQubG9hZDY0
KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMy
KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFs
bHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwg
c2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9w
ZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAg
ICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uYmVlN2E5ZmNkYzkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEg
Yml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2Vz
cyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0
IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRh
a2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBl
cyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJh
eU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRo
aW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0K
LSAgICAKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIC8vIEFjY2Vzc2luZyB0eXBlZCBhcnJh
eXMgbGFyZ2VyIHRoYW4gdGhhdCB0ZW5kcyB0byBiZSBtb3JlIGNvbXBsaWNhdGVkIGFzIHdlIGNh
bid0IGZvcmNlIGNvbnZlcnQgZXZlcnl0aGluZyB0byBpbnQzMl90LgorICAgIC8vIFdlIG9ubHkg
c3VwcG9ydCBzdWNoIGxhcmdlIHR5cGVkIGFycmF5cyBvbiA2NC1iaXQgcGxhdGZvcm1zLgorICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICB2b2lkIHNldE1heUJlTGFy
Z2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsgfQorICAgIGJv
b2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3Qg
eyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQorI2Vsc2UKKyAgICBib29sIG1heUJl
TGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisjZW5kaWYKKwogICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2VlblN0
cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFycmF5
TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9k
ZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21h
eVN0b3JlVG9Ib2xlOyB9CkBAIC0yNDQsNiArMjU0LDkgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1
cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9I
b2xlIHsgZmFsc2UgfTsgLy8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRp
Y2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJy
YXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJl
bnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMg
b2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdo
YXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9Owor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7IGZh
bHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDog
MTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29s
IG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY2LDEzIEBAIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxpbmtl
ZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRl
ZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1f
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAg
ICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7
CkBAIC0yODAsNiArMjk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3Vz
ZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAg
ICBpZiAobV9tYXlCZUxhcmdlVHlwZWRBcnJheSkKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5t
X21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFy
cmF5OworI2VuZGlmCiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjkwLDcgKzMxNiwxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX291
dE9mQm91bmRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIHsg
dHJ1ZSB9OworICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOworI2lm
IENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7Cisj
ZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5UHJvZmlsZSkgPD0g
OCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDJiMmY1ZTAz
MDE5Zi4uMWE2M2QyYzExN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDYzLDcgKzM0NjMs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsK
ICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxl
VmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUt
PmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgaWYgKHZpZXcgJiYg
aXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRy
eUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJ
bnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAg
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3
KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBpZiAodmlldykgewot
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7Cisg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXct
PmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0ICYm
IGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0g
bV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1
ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVS
ZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAg
ICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAt
NDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUg
Q2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0
IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
ICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1
MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICsz
MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5j
aGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBu
b3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAg
ICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAg
ICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5
YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkp
OwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAg
aWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgp
KQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3Qg
YmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDgg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRB
cnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVz
ZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3Qg
R2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkg
ewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNi
Li5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24g
YWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0
aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5
TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNw
ZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAg
IHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJy
YXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNw
ZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAg
ICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlC
ZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYz
LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJy
YXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247
CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRl
cy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3Bl
Y3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNp
b24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlv
bik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5h
c0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3Jk
KCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9u
KEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJz
aW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3Mo
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZl
cnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
cywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRp
b247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAg
IH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxl
LCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAg
ICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3Jl
VG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBi
b29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlD
bGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9m
aWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMg
PSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0g
ICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNw
ZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBB
cnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAg
QXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJv
b2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2Vy
KTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJh
eSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51
c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAg
ICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAg
JiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBj
b252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVy
c2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3
OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwog
ICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29u
dmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBl
ZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7
CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLjAzNGJkZDY2MTUxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgw
NywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxU
YXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVy
YW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50
JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogeworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHN0YXRpY19hc3NlcnQoZW5hYmxlSW50
NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAg
IGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxs
TmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIUNQVShSRUdJU1RFUjY0KQorICAgICAgICBp
ZiAod2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBl
ZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFz
c0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzgyMiwyNiArMzgzMSwzMCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBB
cnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIE5vZGUqIGxlbmd0aE5vZGUg
PSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOworICAgICAgICBOb2RlVHlwZSBvcCA9
IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPyBHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MiA6IEdldEFycmF5TGVuZ3RoOworICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRk
VG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dv
cmQoKSksIHRoaXNOb2RlKTsKICAgICAgICAgLy8gT3VyIEFycmF5TW9kZSBzaG91bGRuJ3QgY2F1
c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3VsZCBiZSBvayB0byBleGl0IHdpdGhvdXQgZWZm
ZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBhZGRUb0dyYXBoKEV4aXRP
Syk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUpIHsKICAgICAgICAgICAgIHNldChyZXN1bHQs
IGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMg
d2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAotICAgICAgICAvLyB0aGF0IG92ZXJmbG93cyBp
bnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2RlID0ganNDb25zdGFudChqc051bWJlcihsb2dT
aXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhCaXRMU2hpZnQsIGxl
bmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAgICAvLyBXZSBjYW5ub3QgdXNlIGEgQml0TFNo
aWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgbWF5IGhhdmUgYSBieXRlTGVuZ3RoIHRoYXQg
b3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2RlKiB0eXBlU2l6ZSA9IGpzQ29uc3RhbnQoanNO
dW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJp
dGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisgICAgICAgIGJv
b2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA9ICFpc0ludDMyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpOworI2lmICFDUFUoUkVHSVNURVI2NCkKKyAg
ICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAg
ICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigp
KS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYs
MTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5
cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3Ag
PSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFw
aChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSks
IHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9CiAKICAgICBjYXNl
IFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGlm
ICh3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBU
eXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5j
bGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0g
QXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlw
ZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUg
b3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJy
YXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4
ZGQzZmRlOTc3OS4uOWFkNWMyNzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVG
dQogICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdl
dFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5
VmFsRGlyZWN0OgpAQCAtMjM5LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBUb0Jvb2xlYW46CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJl
cDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEz
MzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBk
ZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMs
IG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAg
ICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBu
b2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBl
ZEFycmF5VmlldygpKTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
Y2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5h
cnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxp
bmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5h
YmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUz
NGUuLmZhMTdiZjExNDE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRC
eVZhbDoKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcu
LjQwMjg0Y2ZhMjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApA
QCAtMTg1LDYgKzE4NSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2Fz
ZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2Ug
Q29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tW
YXJhcmdzOgpAQCAtMTk3LDEwICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
CiAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRC
eU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IDhlMWI5M2VlZTZjYS4uNTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1
bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNp
ZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5k
cygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRl
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3
ICsxMDc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0
OiB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBv
bmx5IHNlZW4gT3duU3RydWN0dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ug
c2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlw
ZShBcnJheTo6R2VuZXJpYykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsx
MTM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1Vz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJB
cnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBj
YXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVp
bnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CisgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYg
KzExOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2Rl
LT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5h
cnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYm
ICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKApAQCAtMTcxNywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdB
QmFkVGltZShub2RlKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUy
KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0g
bm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5w
cmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAg
ICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAg
ICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0Fy
cmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5n
dGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1
Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25D
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiAr
MjIxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoK
ICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFu
dFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNh
c2UgVmFsdWVUb0ludDMyOgpAQCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAg
ICAKLSAgICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5v
ZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3Rv
cmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5n
dGhOZWVkc1N0b3JhZ2UpOwotICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxl
bmd0aCwgb3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVk
Z2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZv
aWQgY29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlh
Nzg2MC4uMmQ4NmViNzU3MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRpb25JbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
ZW5lcmF0aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0
dXMgb2YgbGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRl
IGluZm9ybWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVy
cywgYW5kIGlmIHNvIHdoaWNoLAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQg
dG8gdGhlIFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8v
IGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQg
aW4gYSBib3hlZCBmb3JtLCBidXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBl
IG9mIGJveCksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVl
IHJlbWFpbiwKKy8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3Mg
aG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQg
d2Uga25vdyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMg
YXNzb2NpYXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9u
SW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAK
aW5kZXggMmJiOWQ0YmVhODAwLi4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAg
ICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsK
IAorICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKwor
ICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5
cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFBy
b3RvdHlwZUxvYzoKICAgICAgICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5k
ZXggMjY5MTcxY2IzNDFkLi40MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2lu
ZCB7CiAgICAgU2V0dGVyTG9jLAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0
ZU9mZnNldExvYywKKyAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVk
QXJyYXlMZW5ndGhJbnQ1MkxvYywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAg
ICAgU3RhY2tQYXlsb2FkTG9jLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFh
MWM4YmNmNTEuLjZkZWRhMDM3ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAg
LTEzMzUsNyArMTMzNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChub25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRz
Q2hlY2tFbGltaW5hdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjp2YWxpZGF0ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3Ao
KSA9PSBDaGVja0luQm91bmRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5v
ZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUt
cHJvZHVjaW5nIG5vZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eU9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAg
ICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JO
ZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIw
MDQsNiArMjAwNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVk
UHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
b3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlW
YWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgs
IE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlw
ZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0
aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIgYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2Ug
dG8gcmV0dXJuaW5nIEludDUyIGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlk
YXRpb24gZmFpbHVyZXMuICovIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0
SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdElu
dDMyKSBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
U2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRh
a2VzIGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9c
CiAgICAgbWFjcm8oQ2hlY2tKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhl
IHNhbWUgYXMganNDYXN0IGJ1dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlv
biAqL1wKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4
IGU1MDdmMWU4MGFjMC4uYjNmMmJiN2E5MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBK
U1ZhbHVlCiAgICAgfQogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVj
dC0+Y2FuU2V0SW5kZXhRdWlja2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVj
dC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0
LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KIAogICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAg
ICByZXR1cm47CkBAIC0xNzUsNyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBw
dXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhT
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludDMyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdp
dGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNo
YXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0
aCBpcyBuZWdhdGl2ZSJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
CisKKyAgICBVQ1BVUmVnaXN0ZXIgdW5zaWduZWRTaXplID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lz
dGVyPihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9y
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVj
dG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJp
dHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25l
ZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlND
ZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5
MjQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
SW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
UFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3Rl
ciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4
Q2xhbXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIw
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0yMDM2LDcgKzIwMzYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIw
NTIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
RmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjgsNyArMjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcu
LjhmOTZlYzBiMDdlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBT
dHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBC
dXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4
Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciop
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJl
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwg
SlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAy
MGQwNDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4
Niw2ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rp
b24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAg
ICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0
OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2
ICsxMzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVy
OgogICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cAppbmRleCBlM2EyMzlhMzNlMzAuLmM0MmIxZDA4MGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwx
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5
cGVkQXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAg
ICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5n
dGgsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5h
cnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVu
Z3RoLCBLbm93bkludDMyVXNlKTsKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1v
ZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpIHx8IG1fZ3JhcGguaGFzRXhpdFNpdGUobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgeworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQ1MkFueSwgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9k
ZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEludDUy
UmVwVXNlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25v
ZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5
TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNl
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzNywxMiArMTQzLDI1IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIE5vZGUqIGxlbmd0aCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0lu
dDMyT25seSwgb3AsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+
YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBz
dG9yYWdlKTsKLSAgICAgICAgTm9kZSogY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJ
bkJvdW5kcywgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgs
IEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgTm9kZSogY2hlY2tJbkJvdW5kczsKKyAgICAgICAg
aWYgKChvcCA9PSBHZXRBcnJheUxlbmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVM
YXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBPdmVyZmxvdykpKSB7CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFz
ZS5ub2RlKCksIEtub3duQ2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgbGVuZ3RoLT5z
ZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlw
ZSBpcyBhIGR1bW15IHNpbmNlIHRoaXMgbm9kZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55
dGhpbmcuCisgICAgICAgICAgICBjaGVja0luQm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJ
bkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRn
ZShsZW5ndGgsIEludDUyUmVwVXNlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBO
b2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uu
bm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3Vu
ZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUlu
ZGV4LCBTcGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAg
fQorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGphY2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5
VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
LmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlwZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdm
NTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBD
aGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29u
c3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJh
cmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2Fz
ZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBT
dHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
IAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICBy
ZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBl
ZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NDc5NjM4NDQ5NDRhLi5kOTllNzhmYWNkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4ICszMjM4LDQyIEBAIHN0YXRp
YyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcg
cmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVK
SVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpq
dW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewogICAgIGlmIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwog
ICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJs
ZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUs
IDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAg
ICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIFVDUFVSZWdpc3Rl
ciBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9q
aXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUt
PmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAg
ICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNV
SW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgp
OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihp
bmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2ppdC5i
cmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVuZ3RoKSk7CisjZW5kaWYKICAgICB9CisKKyNp
ZiBDUFUoUkVHSVNURVI2NCkKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwg
c2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vu
ZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2so
Tm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7Ci0gICAgSklUQ29t
cGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFz
ZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlw
ZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoR1BSKTsK
ICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwpAQCAtMzM4
MCwxMCArMzM5NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbklu
dFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5
UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wOwogICAgIEZQUlJlZyByZXN1bHRGUFIgPSBJ
bnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4KERhdGFGb3JtYXRJ
bnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZvcm1hdEpTOwogCi0g
ICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7
CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJl
Zywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAgICAgY29uc3RleHBy
IGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFycmF5TG9hZFJlc3Vs
dChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3VsZEJveCwgcmVzdWx0
RlBSKTsKQEAgLTM1NTUsNiArMzU3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAg
QVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRo
aXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsK
ICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2Rl
LCAyKTsKQEAgLTM1ODcsNyArMzYwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAg
QVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVydHkpOwogICAgIEFTU0VS
VCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJv
cGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkg
ewogICAgIGNhc2UgMToKQEAgLTM2NDUsMTAgKzM2NjIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJh
eVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFu
ZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigp
OwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBz
dG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAgIERhdGFGb3JtYXQg
Zm9ybWF0OwpAQCAtMzY1Niw3ICszNjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKIAog
ICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJl
c3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcs
IHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VS
ZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5
cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBtX2ppdC5sb2FkRmxvYXQoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjkwLDEwICszNzA5LDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwg
R1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywg
dmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBv
cmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWVPcC5mcHIo
KTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJv
cGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5
cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwgc2NyYXRjaEdQUik7CiAg
ICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDogewpAQCAt
Nzk2Nyw3ICs3OTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9y
YWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVu
dGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50
YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRo
KTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3Rv
cmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxp
ZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MDM5LDkgKzgw
NjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKICAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEu
Z3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKLSAgICBBU1NFUlQoYmFz
ZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRhdGFHUFIpOwogCiAg
ICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKIApAQCAtODA4Myw2ICs4MTAxLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChO
b2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwogI2VuZGlmCiAKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhh
dCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0
b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
KTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0K
IApAQCAtODM0OSwxMiArODM3MiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBDUFUoUkVHSVNURVI2
NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworI2Vsc2UKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgogICAgICAg
ICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJZGVudChOb2Rl
KiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZ09yU3ltYm9sKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTE5LDEwICsxMTE0OCwyNCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYXV0
byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlw
ZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgCisKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93
IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRmb3Jt
cworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNp
emUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIG1f
aml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNjcmF0Y2hHUFIpOworICAgIGVtaXROZXdU
eXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1
cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwot
ICAgIAorICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVk
QXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
ICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKQEAgLTExMTM2LDggKzExMTc5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICAKICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHN0b3JhZ2VHUFIpOwogCisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZp
ZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qg
b2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBz
dGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNB
cnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2pp
dC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJ
bW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTEx
MTkzLDkgKzExMjQzLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3Rv
cmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIENQVShSRUdJU1RFUjY0KQor
ICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNpemVHUFIsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgc2l6ZUdQUiwKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAgICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAg
VHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAg
LTE0MTY3LDYgKzE0MjIzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY29tcGlsZU5l
d1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAgICAgICAgYnJlYWs7CisjaWYgQ1BVKFJFR0lT
VEVSNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2Ug
VW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50
LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggMDdiNTYzYjM0ODNhLi4zMzlmNWQxNDdiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3Ry
aW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAg
IAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lmIENQ
VShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXpl
KE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50
NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAj
aWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlM
ZW5ndGgoTm9kZSopOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxl
Q2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5v
ZGUqKTsKQEAgLTE0MzEsMTAgKzE0MzgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUFy
aXRoTWluTWF4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVy
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUq
KTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5v
ZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAgSklUQ29tcGlsZXI6Okp1
bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFjaGVkSWZPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzKTsKLSAgICB2b2lkIGVtaXRU
eXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgIHZvaWQgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOwor
I2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5
cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywg
RGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2
b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZh
bE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFt
YmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVy
cmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAg
IEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJ
bnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBH
aXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIs
IGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZh
dGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3Ry
aWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAx
NiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAo
aS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUg
c2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmEwZjI1MjBl
YTM3Li4yMmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVu
dHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAg
ICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAg
ICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlw
ZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNv
bXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0
eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2Fz
ZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBl
T2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTQzOTgsNiArNDQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5k
czoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6
CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNh
c2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNiMzkzZjUyNzVmNy4uMzEwZWRhMjJlMTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiU3BpbGxSZWdpc3RlcnNNb2RlLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKKyNp
bmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCkBAIC0yNjk0LDYgKzI2OTUsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9
IH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50
NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFy
cmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBT
cGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlX
aXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQ
Uik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9k
ZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUg
PCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVk
IGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVj
dG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7
CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5QnVm
ZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9mZnNl
dCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJy
YXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRDb21w
aWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmlldzo6
bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIpOwor
ICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BS
KTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOworCisg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJm
bHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRhdGFH
UFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0YUdQ
Uik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShBUk02
NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5dGVP
ZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJNNjRF
KQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7CisgICAg
bnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVzdWx0
KHZlY3RvckdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CkBAIC0zNjQ0LDExICsz
NzIzLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgYmFzZUVkZ2UpOwog
ICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgaW5kZXhFZGdl
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2g7CiAKICAgICAgICAgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CiAgICAgICAgIAotICAg
ICAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsK
KyAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQ
Uiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIAogICAgICAgICBHUFJUZW1wb3JhcnkgYXJnc1sy
XTsKICAgICAgICAgCkBAIC00MzgxLDYgKzQ0NjEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworICAgICAg
ICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRl
QnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDk5LDYgKzQ1ODMsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVH
ZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTg2LDEwICs1Njc1LDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBE
YXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVz
dGVkSW1tMzIoMCkpKTsKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BS
LCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0
LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9q
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5k
cywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCkBAIC01Nzg3LDEwICs1ODc4LDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5lbXBsYWNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMykpOwogICAgICAgICBHUFJSZWcgaXNMaXR0bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVu
ZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJhbmQtPmdwcigpIDogSW52YWxpZEdQUlJl
ZzsKIAorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygp
LCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NU
aGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CiAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEp
CiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEp
LCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRh
Vmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAg
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApA
QCAtNjA0Miw2ICs2MTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBBc3NlcnRJbkJv
dW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50
NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAg
IGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4u
ZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNl
IFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNo
ZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAgICAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAg
ICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0
QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAg
ICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYg
KzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAg
ICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNl
IFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5l
cmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
UmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRC
dXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgog
ICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0xOTksNiAr
MjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBD
aGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29u
c3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJh
cmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAg
ICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgog
ICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNhOGY1Y2ZjNzk1
ZS4uZDFjZTIzNzQxNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSk7
CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAg
ICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAg
ICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUNoZWNr
SW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlW
YWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmlzTnVs
bChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkp
OwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAg
ICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgp
CiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00
ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAgICAgTFZhbHVl
IHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291
dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksIAorICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihK
U0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAgICB1bnN1cmUo
Y29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRU
byhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw3ICs0ODc3LDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIobV9vdXQuY2Fz
dFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVs
T3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0
b3JPdXQsIHdhc3RlZnVsT3V0KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICAvLyBBSSBw
cm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBi
ZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgICAgIHNw
ZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShyZXN1bHQs
IG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7
CisgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgewor
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0
U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihyZXN1bHQpOwogICAgIH0K
IAogICAgIHZvaWQgY29tcGlsZUdldFByb3RvdHlwZU9mKCkKQEAgLTUwNTQsOCArNTA3OSw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlm
IChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAg
ICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVn
YXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d19sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0
Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9W
YWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0
SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MDY0LDYgKzUwOTAsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJy
YXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIHNldFN0cmljdEludDUy
KG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVh
cHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAtNTEwOCw3ICs1MTQxLDE5IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9k
ZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAogICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVt
LgogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpCisg
ICAgeworICAgICAgICAvLyBTaWduLWV4dGVuZGVkIHRvIGFsc28gY2F0Y2ggbmVnYXRpdmUgaW5k
aWNlcworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGxvd1N0cmljdElu
dDUyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5v
VmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVxdWFsKGluZGV4LCBsZW5ndGgpKTsKKwor
ICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBu
byB1c2VyIG9mIHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2Vy
cyBvZiB0aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2Ug
ZG9taW5hdGUgdGhlbS4KKyAgICB9CisKICAgICBMVmFsdWUgY29tcGlsZUdldEJ5VmFsSW1wbCgp
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNjAwOCwxMSArNjA1MywxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0luQm91bmRzID0g
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNPdXRP
ZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZCb3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5k
cykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICBMVmFsdWUg
aXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkNS51
c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0
T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92ZU9yRXF1YWwobV9vdXQuc2lnbkV4dDMyVG82
NChpbmRleCksIGxvd1N0cmljdEludDUyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoaWxkNS51c2VLaW5kKCkg
PT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgaXNPdXRPZkJvdW5kc0NvbmRp
dGlvbiA9IG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3V0
T2ZCb3VuZHNDb25kaXRpb24sIHVuc3VyZShpc091dE9mQm91bmRzKSwgdW5zdXJlKGlzSW5Cb3Vu
ZHMpKTsKKwogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGlzT3V0T2ZCb3VuZHMpOwogICAgICAgICAgICAgICAgICAg
ICBtX291dC5zdG9yZSh2YWx1ZVRvU3RvcmUsIHBvaW50ZXIsIHN0b3JlVHlwZSh0eXBlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTgxNjksOTUg
KzgyMTksMTggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFy
cmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0
KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTEJhc2ljQmxvY2sg
c21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJa
ZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1fb3V0
LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXpl
TGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxs
RW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFs
dWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRy
KHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkp
OwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAg
ICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5
dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRl
SGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAgICAgICAgICAgICAgICBt
X291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQu
bFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAgICAgICAgICAgICAgICBt
X291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVy
dGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsKLSAgICAgICAgICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRl
clR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0
ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0
ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAg
ICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1z
WzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdl
ID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAg
ICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3
aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5h
bWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAg
ZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1
cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9W
SUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UK
LSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1
bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291
dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZl
clZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBt
X291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1
ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKyAg
ICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlw
ZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAg
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRW
YWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVj
dG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0
b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhT
aXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xv
YmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFs
dWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAg
TFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlU
eXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtODI3Nyw3ICs4MjUwLDEwMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlw
ZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVl
IHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAg
ICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVz
dWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8g
V2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXpl
IGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGlu
dDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisKKyAgICAgICAgTFZh
bHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChzaXplNjRCaXRzLCBtX291dC5j
b25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBpZiAo
ZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNpemUg
PSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291
dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0
YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGFs
bG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFs
bG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRXb3Jk
cygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCisg
ICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5j
b25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAgICAg
ICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAg
ICAgICB7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFw
cGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBw
ZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0
ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRo
ZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhh
dmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0
UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7
CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlw
ZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVj
dDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2Up
OyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQ
RV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBF
RF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAg
ICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3Rv
cmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7
CisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9v
dXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFs
dWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdl
VmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7
CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1
bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0
b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRv
cj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwK
KyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlw
ZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0
LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2
b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFs
dWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE0NjU2LDYgKzE0NzIy
LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIGJhc2UgYW5kIHZhbHVl
IGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRzCisgICAgLy8gc3RvcmVzIHZh
bHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2UrYmVnaW4qOCBhbmQgYmFzZStl
bmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwgTFZhbHVlIGJlZ2luLCBMVmFs
dWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCkKICAgICB7CiAg
ICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0ID0gMTA7CkBAIC0xNTU5MSw3ICsx
NTY1OSw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUt
PmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0
UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZm
ZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsK
KyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRl
eFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0
ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9D
aGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyAr
MTU4MDMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2Rl
LT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4
dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVl
KCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7
CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmll
dywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgICAgICBMVmFsdWUgaW5k
ZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5
dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRv
Q2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcg
KzE3MzA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBkb1VudGFnQXJyYXlQdHIgPSBbJl0o
TFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShBUk02NEUpCiAgICAgICAgICAgICBpZiAoa2lu
ZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemUg
PSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdW50YWdB
cnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IGE5NDIwMDkz
ZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgK
QEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZh
bHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZh
bHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2Fk
MzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2Us
IGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7
IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3Ry
YWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExW
YWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwg
TFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2lj
RW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwCmluZGV4IDI1MjBmOGNjNDQ1Ni4uODcyMzAyMmU5YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MywyMyArODMsMzIgQEAg
dm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAg
ICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAg
ICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3Rh
dGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVn
cyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewogICAgICAg
ICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFy
cmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGUpID4gMSkKKyAgICAgICAgICAgIGppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxl
bWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQ
UiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UK
ICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4g
dXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3ZSBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRl
TGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgotICAgICAgICAgICAgaml0LmxzaGlmdDMy
KHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0
Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBh
biBpbnQzMi4KKyAgICAgICAgICAgIGppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVu
dFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAgICAgICAgIH0KLQogICAgICAgICBqaXQuYm94SW50
MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwLDggKzEzOSwxMiBAQCB2b2lkIEludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2
YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAor
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFs
dWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAg
ICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0
YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDRhNWMwODBjMDYwYy4uZmFjOGUwYWM2
NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3UKICAgICAgICAgdWludDMy
X3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpIHsKLSAgICAgICAg
ICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUpOworICAgICAgICAg
ICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9m
aWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRP
dXRPZkJvdW5kcygpOwpAQCAtMjM0MiwyMSArMjM0MCwyMiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4g
aW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9
ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3Jp
cHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7
CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChp
ID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRl
eChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAg
ICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVs
c2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdl
dEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKQotICAgICAgICAgICAgICAg
IHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1Zh
bHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lw
TWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmlu
ZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA+PSAwICYmIHN0YXRpY19j
YXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7
CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250
aWd1b3VzCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2Jq
ZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJs
ZToKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyOTQwCiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0
LT5nbG9iYWxPYmplY3Qodm0pOwpAQCAtMjM3Miw4ICsyMzcxLDcgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpID49IDAp
Ci0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xv
YmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0g
ZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFy
cmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgKaW5kZXggNDFjNzFiNjAwNDRlLi4zYWMyZjAxMGM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsx
NDksMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBD
UFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgT0ZGTElORV9BU01fUkVHSVNURVI2NCAxCisjZWxzZQor
I2RlZmluZSBPRkZMSU5FX0FTTV9SRUdJU1RFUjY0IDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJF
U1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1NjgxMzc3YmI5
ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3LDggKzEwNDcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAg
ICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3Qt
PmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmpl
Y3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0ICsxMTcwLDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIAogICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkp
IHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2
YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZh
bHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghb2JqZWN0LT50cnlTZXRJ
bmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKQogICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5U
X0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjQyMWE3ZmE0MTBlLi5mYzE2ZWViNGVkZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgU3Ry
dWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2Vu
dHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQKIAoraWYgUkVHSVNURVI2NAor
ICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVByb2Zp
bGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFIG9yIFJJU0NW
NjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxB
bmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6bV9p
bmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNybyBnZXRC
eVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3Vi
bGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBpbmRleCBpcyBhbHJlYWR5IHNpZ24t
ZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21hY3JvIGdldEJ5VmFsVHlwZWRBcnJh
eShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBz
ZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3
ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxh
dGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQyCiAgICAgc3Vi
aSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwxMyArMTMyNiwyMiBAQCBtYWNybyBn
ZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBjb25zdCBsZW5ndGggPSB0
NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0
aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jh
c2VdLCBsZW5ndGgKKyAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICBl
bHNpZiBSRUdJU1RFUjY0CisgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRp
b25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2Vk
IG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJW
aWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3Ro
IGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBi
ZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlh
ZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAg
ICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAgICAgYnFiZXEgaW5kZXgsIFNtYWxsVHlw
ZWRBcnJheU1heExlbmd0aCwgLnNtYWxsVHlwZWRBcnJheQorICAgICAgICBzZXRMYXJnZVR5cGVk
QXJyYXkoKQorLnNtYWxsVHlwZWRBcnJheToKKyAgICBlbmQKKwogICAgIGxvYWRwIEpTQXJyYXlC
dWZmZXJWaWV3OjptX3ZlY3RvcltiYXNlXSwgdDMKICAgICBjYWdlZFByaW1pdGl2ZSh0MywgbGVu
Z3RoLCBiYXNlLCBzY3JhdGNoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDUwZDVkYmRmNjAyYS4u
Njc4ZWM2NGM2NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5k
ZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0
QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCBtYWNybyAoKSBlbmQsIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93Ogog
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmlu
ZGV4IGQ4NGI2ZWFkMzdmZC4uNDg1NDcwMWQ4ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsx
NzEzLDE2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFs
KHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAg
ICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgICAgIHN0b3JlYiAxLCBPcEdl
dEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheVt0
NV0KKyAgICAgICAgZW5kCisgICAgZWxzZQorICAgICAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJy
YXkoKQorICAgICAgICAgICAgY3Jhc2goKQorICAgICAgICBlbmQKKyAgICBlbmQKKwogICAgIG1l
dGFkYXRhKHQ1LCB0MikKIAogICAgIGdldChtX2Jhc2UsIHQyKQpAQCAtMTcyMyw3ICsxNzMzLDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogICAgIGdldChtX3Byb3BlcnR5LCB0MykKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNs
b3cpCi0gICAgc3hpMnEgdDEsIHQxCisgICAgc3hpMnEgdDEsIHQxICMgVGhpcyBzaWduLWV4dGVu
dGlvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdldEJ5VmFsVHlwZWRBcnJheSB3b3Jr
IGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCiAgICAgbW92ZSBUYWdOdW1iZXIsIG51
bWJlclRhZwpAQCAtMTc2Myw3ICsxNzczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAg
ICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmlu
aXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXks
IC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFlLi5mOGU0YWMzYTRlNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnBy
aW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCku
Y29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIHNpemUsIEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShk
YXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAg
LCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29udGVu
dHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQogICAg
IG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRz
OjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBzaXplSW5CeXRl
cywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9k
YXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykK
IHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQo
KQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50
czo6dHJ5QWxsb2NhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3Qg
YWxsb3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVt
ZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1l
bnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1l
bnRCeXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAg
ICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVj
a2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IHNpemVJbkJ5dGVzID0gbnVtRWxlbWVu
dHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXplSW5C
eXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9C
VUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVudHMp
ICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgVUNQVVJlZ2lzdGVyIGFsbG9jYXRpb25T
aXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAg
ICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxs
b2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0
aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9k
YXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBl
KGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBy
ZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBt
ZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNp
emVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsK
ICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVj
dG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpz
aGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQo
b3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0K
IAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJj
ZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAg
IGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFi
dWZmZXIpCkBAIC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBp
cyBvbmx5IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2
ZSBhbHJlYWR5IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdh
Y2FnZTo6aXNFbmFibGVkKCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2Fn
ZTo6Y29udGFpbnMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0
aCAtIDEpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIx
OCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2Ug
Y291bGQgaW50cm9kdWNlIGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1
bmNhZ2VkIGFuZCBnZXQgYWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2Vt
Ymx5LiBXYXNtIHNob3VsZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikK
K1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lk
KiBkYXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdl
ZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQ
cmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5
LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShB
cnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90
aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNv
bnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29u
dGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVV
bmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUo
bnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udElu
aXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3
IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUlu
dGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNl
LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwg
c291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RG
TW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0
ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7
CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkK
K1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVu
dHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJy
YXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25l
ZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWdu
ZWQgcmlnaHQpCitVQ1BVUmVnaXN0ZXIgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgs
IFVDUFVSZWdpc3RlciBsZWZ0LCBVQ1BVUmVnaXN0ZXIgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxl
ZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNp
Z25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5z
aWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpj
bGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKK1VDUFVSZWdpc3RlciBBcnJheUJ1ZmZlcjo6
Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExl
bmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgY3VycmVudExlbmd0aCA9IGJ5
dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBpbmRleCA9IGN1cnJlbnRM
ZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExl
bmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVk
SW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdp
biwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
c2xpY2VXaXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdpc3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVyIGVu
ZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVn
aW4gOiAwOworICAgIFVDUFVSZWdpc3RlciBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVn
aW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0
KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJh
Li5iMGFlNTZiZTU4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hh
cmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYg
Q1BVKFJFR0lTVEVSNjQpCisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAz
MikKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVDUFVSZWdpc3RlcikgPT0gc2l6ZW9mKHVpbnQ2NF90
KSk7CisjZWxzZQorLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBVQ1BVUmVnaXN0ZXIgdG8gc3Rv
cmUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQg
NEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBOb3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBp
biBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1aXRlIG1lc3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBo
YXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1bGF0ZSBpdC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3
aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9yeSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRv
ICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVzLgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBjbGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpA
QCAtNTEsNyArNjAsNyBAQCB1c2luZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgVUNQVVJl
Z2lzdGVyLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJy
YXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0ZXMpOyB9CkBAIC02MCwxNCArNjksMTQg
QEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFj
a2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2ln
bmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9Owog
CiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
cnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJh
eUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250
ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50
cyh2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVy
Q29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKQEAg
LTc5LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJl
dHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAgVUNQVVJlZ2lzdGVy
IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIAogICAg
IGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApAQCAtOTQs
NyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9OwogCi0g
ICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxvY2F0ZShV
Q1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlh
bGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQg
dHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExNCwyOCBAQCBw
cml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cisg
ICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6
IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3Rl
ciBieXRlTGVuZ3RoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBk
YXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVD
UFVSZWdpc3RlciBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0
ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIAog
ICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5p
bml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGlu
ZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdDsKKyAgICBpbmxpbmUgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsK
ICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2lu
LCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlC
dWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5
QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoVUNQVVJlZ2lzdGVyIGJlZ2luLCBVQ1BVUmVn
aXN0ZXIgZW5kKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxp
bmUgdm9pZCB1bnBpbigpOwpAQCAtMTYxLDEyICsxNzAsMTIgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2
ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYm
LCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlC
dWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgVUNQVVJlZ2lzdGVyKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0
aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAg
IGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1
bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBjbGFtcEluZGV4KGRvdWJs
ZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBWYWx1
ZShkb3VibGUgeCwgVUNQVVJlZ2lzdGVyIGxlZnQsIFVDUFVSZWdpc3RlciByaWdodCk7CiAKICAg
ICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMjAxLDcgQEAgY29uc3Qg
dm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRh
dGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQ
VVJlZ2lzdGVyIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jb250ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxNCw3IEBAIGJvb2wgQXJy
YXlCdWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0
aW1hdGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0
byBzY2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICBy
ZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0
aCgpKTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0K
IAogdm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uZWIwNTA5ZWNk
Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQ
VVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogICAgICAgICA6
IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUp
CiAgICAgICAgICwgbV9ieXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQogewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxv
dz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOworICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBDcmFzaE9u
T3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zmc2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsK
ICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBt
X2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3Nzhh
OS4uMDBlZGNkMzg0N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5
VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3QKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNl
dCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIFVD
UFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9v
bCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIs
MTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJh
eUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMg
c2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQo
dW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5
Qnl0ZU9mZnNldEFsaWdubWVudChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVy
IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChzaXpl
IC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRTaXplIC0gMSkp
OwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5n
ZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAgICBzdGF0aWMg
Ym9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAg
Ly8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVm
ZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0
aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQ
VVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBV
Q1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlm
IChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZz
ZXQpIC8gc2l6ZTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5
dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZWxlbWVu
dFNpemUpOwogICAgICAgICBpZiAobnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMg
KzExMyw0OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChK
U0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVS
ZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxp
bmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwor
ICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgVUNQVVJlZ2lzdGVyIGJ5
dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5s
aW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVM
ZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldFJhbmdlSW1w
bChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdp
c3RlciBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVz
dGluYXRpb24sIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zm
c2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBj
YWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5z
aWduZWQgYXJyYXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVu
Z3RoKTsKKyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgcmFuZ2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNl
dCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAv
LyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5n
IGJ1ZmZlcidzIHZpZXcuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZv
aWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXIm
IGJ1ZmZlciwKLSAgICAgICAgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNp
Z25lZCAqb2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIFVD
UFVSZWdpc3RlciBhcnJheUJ5dGVPZmZzZXQsCisgICAgICAgIFVDUFVSZWdpc3RlciAqb2Zmc2V0
LAorICAgICAgICBVQ1BVUmVnaXN0ZXIgKm51bUVsZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5z
aWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihU
KTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG1heE9mZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRz
PFVDUFVSZWdpc3Rlcj46Om1heCgpIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAg
ICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZzZXQgPSBi
dWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zm
c2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1
ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdF
bGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7Cisg
ICAgICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gYWRqdXN0ZWRPZmZz
ZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAg
ICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVz
dGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVm
ZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0
aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQu
dmFsdWUoKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZl
ci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1l
bnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQog
Ci0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisg
ICAgdWludDY0X3QgbV9ieXRlT2Zmc2V0IDogNjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0
ZU9mZnNldCA6IDMxOworI2VuZGlmCiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAg
dW5zaWduZWQgbV9ieXRlTGVuZ3RoOworICAgIFVDUFVSZWdpc3RlciBtX2J5dGVMZW5ndGg7CiAK
ICAgICB1c2luZyBCYXNlQWRkcmVzcyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZv
aWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJh
eUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUs
NDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAot
Ym9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5z
aWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVm
ZmVyVmlldyogYXJyYXksIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0
ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+
Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zm
c2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zm
c2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBh
cnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCog
ZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBB
cnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0
ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KQogewotICAgIGlmIChi
eXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0
ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVM
ZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Ig
b3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRh
dGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQogCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVz
cygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0
aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQg
Ynl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVz
dGluYXRpb24sIFVDUFVSZWdpc3RlciBkYXRhQnl0ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVP
ZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0
IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9y
RXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGlu
YXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6
emVyb1JhbmdlSW1wbChVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIHJhbmdl
Qnl0ZUxlbmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAg
IC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxl
clRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2Ug
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2Ug
KyBieXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGlu
dCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1
bnNpZ25lZCogbGVuZ3RoKQotewotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9
IGFycmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAg
aWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDAp
Ci0gICAgICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4g
YXJyYXlTaXplKQotICAgICAgICBlbmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0
KQotICAgICAgICBlbmQgPSBzdGFydDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0
YXJ0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJW
aWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNw
cAppbmRleCA2ODgzYTE3YzQ3MmQuLmQzNjI0NTBhMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBz
dGF0aWMgdW5zaWduZWQgdmFsaWRhdGVBdG9taWNBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBKU0FycgogICAgICAgICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4
VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJhY2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVk
QXJyYXlWaWV3LT5sZW5ndGgoKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOwor
CiAgICAgaWYgKGFjY2Vzc0luZGV4ID49IHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBv
dXQgb2YgYm91bmRzIGZvciBhdG9taWMgYWNjZXNzLiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2
NGFmMi4uN2IxZWQ3Y2Y1NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDIwICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0
YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBieXRlTGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwg
Ynl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6
Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0
ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgg
PSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVy
KSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uZGU3MTRiNjI1MDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewog
cHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRl
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJy
YXlCdWZmZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBm
aW5hbApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdy
YXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRs
ZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdldChVQ1BVUmVnaXN0ZXIg
b2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7
CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2Yo
VCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0
LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQo
VUNQVVJlZ2lzdGVyJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4o
b2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpz
dGF0dXMpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJv
b2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KFVD
UFVSZWdpc3RlciBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0
dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAg
aWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAg
RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uYjI4NzliM2RmMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNCAr
MzMsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xh
c3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBj
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShVQ1BVUmVn
aXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVh
dGUoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRl
T2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
VUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
PihiYXNlQWRkcmVzcygpKTsgfQogICAgIAotICAgIGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldChHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIGFycmF5LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXksIG9mZnNldCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0UmFuZ2UoY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBv
ZmZzZXQpCisgICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBk
YXRhLCBVQ1BVUmVnaXN0ZXIgY291bnQsIFVDUFVSZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAg
ICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksCkBAIC01OCwzOSArNTgsMzkgQEAgcHVibGljOgogICAgICAgICAg
ICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpCisgICAg
Ym9vbCB6ZXJvUmFuZ2UoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHplcm9SYW5nZUltcGwob2Zmc2V0ICogc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpLCBjb3VudCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgemVyb0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5n
dGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIFVDUFVSZWdp
c3RlciBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGl0ZW0oVUNQVVJlZ2lzdGVyIGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAg
ICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNp
Z25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3Rl
ciBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRh
dGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0K
IAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKFVDUFVSZWdpc3RlciBpbmRleCwg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAg
ICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRSYW5nZSh0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNl
dCkKKyAgICBib29sIGdldFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIFVDUFVS
ZWdpc3RlciBjb3VudCwgVUNQVVJlZ2lzdGVyIG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVy
biBnZXRSYW5nZUltcGwoCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRh
KSwKQEAgLTk4LDE4ICs5OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KIAotICAgIGJvb2wgY2hlY2tJbmJv
dW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKKyAgICBib29sIGNo
ZWNrSW5ib3VuZERhdGEoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KSBj
b25zdAogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0g
ICAgICAgIHJldHVybiAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsg
Y291bnQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21h
bGxlclRoYW5PckVxdWFsKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAg
ICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUo
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsK
QEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAo
SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwogCiBwcml2YXRlOgotICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKaW5kZXggYWU1YmRkOGM2YTMxLi41OWM2OWUzMTIyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmlj
VHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IEFy
cmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdp
c3Rlcj46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKFVDUFVSZWdpc3Rl
ciBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUo
Ci0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1LDcgQEAgUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZShVQ1BVUmVn
aXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZm
ZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBjb25zdCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewog
ICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5n
dGgpOwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRy
eUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxl
bmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
KTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwpAQCAtMTE4LDI1ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0
cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAot
ewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4K
LUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAotewotICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0
ZU9mZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxl
bmd0aCk7Ci0gICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7
Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFw
dG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAg
IHJldHVybiB0cnlDcmVhdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp3cmFwKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4u
MjdhOTc3OWY0OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBK
U0FycmF5QnVmZmVyVmlldzo6c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0
cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAs
IG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxl
bWVudFNpemUsCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVy
IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUsCiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1v
ZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRyKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpA
QCAtNjMsNyArNjMsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBpZiAobGVuZ3RoIDw9IGZhc3RTaXplTGltaXQpIHsK
ICAgICAgICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwot
ICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKKyAgICAg
ICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7CiAgICAg
ICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9u
VmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5O
dWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODEsMTgg
KzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxs
b3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpIC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tl
ZDxVQ1BVUmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93PiBzaXplID0gbGVuZ3RoOworICAgIHNpemUg
Kj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUgPiBN
QVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qg
c2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4o
ZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFs
bG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3Ig
PSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6
ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwg
c2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0
dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEw
MCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQs
NyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0
OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwg
VUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1
Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoRGF0YVZpZXdNb2Rl
KQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShK
U1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJyYXlU
eXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25z
dAorVUNQVVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBs
ZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICByZXR1cm4g
cmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlz
IGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4
dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0dXJuIGxl
bmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1ZmZlciog
SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3
NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1l
bW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwog
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IHRo
aXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0
VHlwZWRBcnJheTogewpAQCAtMzE1LDggKzMyMiw4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIEFycmF5QnVmZmVy
KiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0
ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOworICAgIFVDUFVSZWdp
c3RlciBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2Rl
ZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRl
eCBkZDAxZjdmODJhNTMuLjQ2NzBiNDZkOGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVi
bGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBVQ1BVUmVnaXN0ZXIgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNp
bmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQs
IHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTEx
NywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBVQ1BVUmVnaXN0ZXIgc2l6ZU9mKFVDUFVS
ZWdpc3RlciBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKTsKKyAgICAgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXI+IHJlc3VsdCA9IGxlbmd0aDsK
KyAgICAgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSAtIDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4o
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1
ICsxMzgsMjUgQEAgcHJvdGVjdGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFs
aXphdGlvbk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUq
LCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1v
ZGUgPSBaZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNv
bnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVt
ZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAg
ICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0
J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250
ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAg
Q29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lk
KiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0
aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICAgICAgICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9Owog
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0
ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAg
ICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAg
ICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0
b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAg
dXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRh
Z0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMy
X3QgbV9sZW5ndGg7CisgICAgICAgIFVDUFVSZWdpc3RlciBtX2xlbmd0aDsKICAgICAgICAgVHlw
ZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAg
IH07CkBAIC0xOTAsMTEgKzE5MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCogdmVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0aCgpKTsgfQogICAgIHZvaWQq
IHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0
VW5zYWZlKCk7IH0KICAgICAKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwotICAg
IGlubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7
CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KCk7CisgICAgaW5saW5lIHN0ZDo6
b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVk
IGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0Owog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAog
ICAgIFZlY3RvclB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBVQ1BV
UmVnaXN0ZXIgbV9sZW5ndGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
d0lubGluZXMuaAppbmRleCAxZDA3MmI3MWFjYjcuLjYzMTgxNTVlNjQwYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxp
bmVzLmgKQEAgLTk5LDcgKzk5LDcgQEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZp
ZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICBwdHJkaWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3
aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWx0YSk7CisgICAgVUNQVVJlZ2lzdGVyIHJlc3VsdCA9
IHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZGVsdGEpOwogICAgIGlmIChyZXF1ZXN0ZXIgPT0g
TXV0YXRvcikKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSA9
PSBkZWx0YSk7CiAgICAgZWxzZSB7CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBpbmxpbmUgUmVzdWx0
VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgp
CitpbmxpbmUgVUNQVVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsK
LSAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgdW5zaWduZWQ+KCk7CisgICAgcmV0
dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIFVDUFVSZWdpc3Rlcj4oKTsKIH0KIAotaW5saW5l
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29u
Y3VycmVudGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gSlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQogewotICAgIHJldHVybiBieXRlT2Zm
c2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAg
ICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDxV
Q1BVUmVnaXN0ZXI+PigpOwogfQogCiBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNB
cnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggYjFlYTlkYTBmZTRjLi5l
NWJkZmM2ODc4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKQEAgLTI5OCw2ICsyOTksNyBAQCBwdWJsaWM6CiAg
ICAgaW50MzJfdCB0b0ludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3Qg
dG9VSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b0luZGV4KEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAgICBVQ1BVUmVn
aXN0ZXIgdG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJv
ck5hbWUpIGNvbnN0OwogICAgIGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBkLi44MGMyM2Y2YzY5NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjks
MTQgKzY5LDQ3IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpIHsKKworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMy
KCk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJv
ck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworfQorCitpbmxpbmUg
VUNQVVJlZ2lzdGVyIEpTVmFsdWU6OnRvVHlwZWRBcnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKKyAgICBpZiAoZCA8PSAtMSkgeworICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikp
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAg
ICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6
dG9JbnQzMihkKSk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUs
ICIgdG9vIGxhcmdlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxs
IG9mIHRoaXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBv
biAxPDwzMi4KKyAgICBVQ1BVUmVnaXN0ZXIgb3V0cHV0T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUg
aW5wdXRPZmZzZXQgPSAwOworICAgIFVDUFVSZWdpc3RlciBpbnQzMk1heCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihpbnQzMk1heCkpIHsKKyAgICAgICAgb3V0cHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgICAg
IGlucHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgfQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgb3V0cHV0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSlNDOjp0b0ludDMyKGQgLSBpbnB1dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjku
Ljk4NWQ5ZTI0NDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZt
LCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZlciogYnVmZmVyCiAKIEpT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFVD
UFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0Rh
dGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZp
ZXc6OnNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciwgSlNPYmplY3QqLCBVQ1BVUmVn
aXN0ZXIsIFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIEpTVmFsdWUpCiB7CiAgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJjNzg1ZTQ3NjExYS4uNWVlMWQ4NjE5ZTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYs
MTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwKKyAgICAg
ICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMs
IHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCiAg
ICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3aGVy
ZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNp
Z25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmlu
aXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0
aCk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0
KiwgVUNQVVJlZ2lzdGVyLCBKU09iamVjdCosIFVDUFVSZWdpc3RlciwgVUNQVVJlZ2lzdGVyIGxl
bmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3Rlciwg
SlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBBcnJheUJ1ZmZlciogdW5zaGFyZWRCdWZm
ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkwNjI0N2VhNjUuLmQ4Yzk5YzNjNjhhNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlm
ICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3
Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1
bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAg
ICBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFy
cmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIg
Ynl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBi
eXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9m
IGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIsNyArMTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
c2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUg
YSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAg
VUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgo
Z2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVk
IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIFVDUFVS
ZWdpc3RlciBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAg
ICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMp
IHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgy
KS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZm
ZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlTGVu
Z3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5n
dGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRz
IGFjY2VzcyJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4uMDU2ODM4Yzll
NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2
ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0
IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1
cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAgICAvLyBmcm9t
IEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJfdCBMCisvLyAg
ICAgVUNQVVJlZ2lzdGVyIEwKIC8vICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2Ug
ZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1F
OiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13
aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBC
IGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZs
b3ciIGRhdGEgZm9yCkBAIC0xMDMsMTUgKzEwNCwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYg
aW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0
dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9Ci0gICAgc2l6ZV90
IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOyB9CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQor
ICAgIFVDUFVSZWdpc3RlciBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0
aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQogICAgIAogICAgIGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVjdG9yKCkgY29uc3QKICAgICB7CkBAIC0xMjIs
NDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsKICAgICB9CiAKLSAgICBib29sIGluQm91bmRz
KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBpbkJvdW5kcyhVQ1BVUmVnaXN0ZXIgaSkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0
aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFu
Y3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBi
b29sIGNhbkdldEluZGV4UXVpY2tseShVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7
CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGks
IEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
ICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5Owog
ICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHR5cGVkVmVj
dG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGkp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIs
IGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoVUNQ
VVJlZ2lzdGVyIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVl
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFVDUFVSZWdpc3RlciBpLCBKU1Zh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxB
ZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBi
b29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBp
LCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC0xNzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZl
RnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMg
RWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2
ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOworICAgIH0KIAotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21W
YWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29l
cmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJv
bVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZv
aWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsyMDUsMTggQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoVUNQVVJl
Z2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBt
X2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9m
ZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFu
T3JFcXVhbChvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAgICAKICAgICAvLyBM
aWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0
aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0
ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBv
ZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1
Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8v
IHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNl
cnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBvZmZz
ZXQsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxl
bmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAgICAKICAgICBSZWZQ
dHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7
CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1w
bCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJvdyBvbiBlcnJvci4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAgICAgYm9vbCBzZXRXaXRoU3Bl
Y2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCi0gICAgICAgIHVuc2lnbmVkIG9i
amVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3Ro
ZXJBZGFwdG9yPiosCisgICAgICAgIFVDUFVSZWdpc3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdp
c3RlciBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMg
dGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2lu
ZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBl
ZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkr
KykKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQog
ICAgICAgICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggZDI1ODQw
NjdlODNmLi5lZWRhNTVlM2NhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVy
KiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLWlubGluZSBKU09iamVjdCog
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmly
c3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsZW5n
dGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIFVDUFVSZWdpc3RlciBvZmZzZXQs
IHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5ndGhPcHQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOworICAgICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGxl
bmd0aE9wdCkKICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAg
ICBlbHNlIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAg
IC8vIC0gQSBwcmltaXRpdmUuIFRoaXMgY3JlYXRlcyBhIG5ldyB0eXBlZCBhcnJheSBvZiB0aGF0
IGxlbmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBpdC4KIAogICAgIGlmIChKU09iamVjdCogb2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBmaXJzdFZhbHVlKSkgewotICAgICAg
ICB1bnNpZ25lZCBsZW5ndGg7CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGg7CiAgICAgICAg
IEpTQXJyYXlCdWZmZXIqIGN1c3RvbUJ1ZmZlciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKGlz
VHlwZWRWaWV3KG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkg
ewpAQCAtMjUwLDcgKzI1MCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZmlyc3RWYWx1ZS50
b0luZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOworICAgIFVDUFVSZWdpc3RlciBsZW5ndGgg
PSBmaXJzdFZhbHVlLnRvVHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGxlbmd0aCkpOwogfQpAQCAtMjc1LDggKzI3NSw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoK
ICAgICB9CiAKICAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwotICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OworICAgIFVDUFVSZWdpc3RlciBvZmZzZXQg
PSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBsZW5ndGggPSBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVl
KSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgxKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODUs
NyArMjg1LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgLy8gSWYgdGhl
IGxlbmd0aCB2YWx1ZSBpcyBwcmVzZW50IGJ1dCB1bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3Np
bmcuCiAgICAgICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgyKTsKICAgICAgICAgICAgIGlmICghbGVuZ3RoVmFsdWUuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvSW5kZXgoZ2xvYmFs
T2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcg
PyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVu
Z3RoVmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVk
QXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3Ro
Iik7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwLi4wNTNjZmI1MWUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaCIKICNpbmNsdWRlICJUeXBlRXJyb3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5
cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3
LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVu
c2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2
ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENvbnN0cnVj
dGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKQEAgLTc4LDcg
Kzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC05OSwxMSArMTAwLDExIEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgc2l6ZV90IHNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgaWYgKCFBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwg
c2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZl
ciIpKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
PiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFw
dG9yPiogb3RoZXIsCisgICAgVUNQVVJlZ2lzdGVyIG90aGVyT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyAr
MjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNw
ZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3Rp
bmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAm
JiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5
cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAg
ICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFk
YXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRp
dmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAg
IC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBj
b3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKFVD
UFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRv
cjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhl
ci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0y
MzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
ZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJt
ZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBs
ZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJhbnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6
OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxl
bmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQg
KyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAs
MTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRX
aXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQg
b2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNPYmplY3QqIG9i
amVjdCwgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29w
eVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZv
KiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZh
c3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisg
ICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ug
d2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90
aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAg
bGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAg
LTMxMiw5ICszMTMsMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ugd29uJ3QgZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkg
d2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBtb3JlCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpKTsKICAgICAgICAgLy8gV2Ug
Y291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0
KTsKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9
IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNGMwZWJkMWY2MTY1Li5hOTc0
NzM3M2M0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAt
NjAsNiArNjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIEV4
Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEludGVybmFsRnVuY3Rpb247CkBA
IC0yMTEsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJ
bmRleElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewogICAgICAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlj
a2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBzZXRJbmRleFF1aWNrbHko
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICBpZiAodHJ5U2V0SW5kZXhRdWlja2x5
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQog
CkBAIC0yODksNyArMjg4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgY2FuR2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEFycmF5UHJvZmlsZSogPSBudWxs
cHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
KSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAotICAgIEpTVmFs
dWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisKKyAgICAvLyBVc2VzIHRo
ZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFy
cmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5z
aWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHko
KTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9C
TEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGlmIChjYW5HZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGkpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGksIGFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgYnJlYWs7
CkBAIC00MTEsMzUgKzQxMSw3MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXQoZ2xvYmFs
T2JqZWN0LCBpKTsKICAgICB9CiAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0OwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSk7Ci0gICAgICAgIAotICAgIGJvb2wgY2Fu
U2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mLCB1bnNpZ25lZCwgSlNW
YWx1ZSk7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRpY2F0ZSBzdWNjZXNzCisgICAgLy8g
VXNlIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VU
eXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKKyAgICBib29s
IHRyeVNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGlu
Z01vZGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAg
ICAgICAgIHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHYs
IGFycmF5UHJvZmlsZSk7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBF
UzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVf
SU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9J
TkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRF
WElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQ
RVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIo
KSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hp
bGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogewor
ICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYpOworICAgICAgICAgICAgaWYg
KGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJm
bHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcih0aGlzLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAg
ICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNOdW1iZXIoKSkgeworICAgICAgICAg
ICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2
bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBpZiAo
dmFsdWUgIT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1
b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1
dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQ
dWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJy
YXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBzZXRJbmRl
eFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAg
ICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgo
KQotICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0
b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoaXNDb3B5T25Xcml0ZShp
bmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92
ZWN0b3JbaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZv
ckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29w
eU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgIH0KLSAgICAgICAgCisKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYg
dm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0
dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDZlMWJiMWI1OWYxZS4uZWEzMDg4OWY1OTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aApAQCAtNDY1LDIxICs0NjUsMTUgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGlu
ZSBib29sIEpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJv
ZmlsZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVE
X0FSUkFZX1RZUEUobmFtZSkgXAotICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5T
ZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOwotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9U
WVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENB
U0VfVFlQRURfQVJSQVlfVFlQRQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6
OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFycmF5UHJvZmlsZSkKKyAgICAgICAgYXJy
YXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oYXJyYXlQcm9maWxlKTsKKyNlbmRpZgogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3
aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAg
ICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtcCkBAIC01MTIsNyArNTA2LDUwIEBAIGlubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGks
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiB9Ci0gICAgCisKK2lubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5
cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBz
dG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xk
ID0geC5nZXQoKTsKKyAgICB4LnNldCh2bSwgdGhpcywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAg
ICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOworICAgICAgICBpZiAoaSA+PSBz
dG9yYWdlLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7
CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9m
aWxlKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVm
aW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAg
IGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFy
cmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBl
ZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FS
UkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJy
YXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9U
WVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBc
CisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAq
Pih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGks
IHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNl
dEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFy
cmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNI
X1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZ
UEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BS
T0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBp
bmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXgg
Y2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhR
dWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
b2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2Up
ICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3
LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05
Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFn
ZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdl
U2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGU1YjdjZDQ2NjE4Ny4uZTZhYTdhMjBlYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEw
LTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBNYWRlIHNvbWUgb2YgQ2hl
Y2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVh
c3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAgICogd3RmL0No
ZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAo
V1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwpOgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG5vbi1IQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05f
U1RSSUNUUlVTVEVWQUxVQVRFKSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRl
eCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBS
ZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBz
aXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRh
cmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdl
dCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQg
dHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3Qg
dHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0
Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3
YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2Us
IGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
ICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewog
ICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1
ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAg
Ly8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNv
dXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxU
YXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVl
LCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBz
dGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFu
IHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAg
IHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3Rl
eHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRl
ciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Up
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAg
ICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2ln
bmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwg
aXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihT
b3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5z
aWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7
CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRT
YWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252
ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0lu
Qm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiAr
OTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJv
ZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+
KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVj
a2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVy
biAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQog
CiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2lu
ZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2lu
ZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5n
IFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM2ZDE1ZWRkMTNj
Li45M2Y2MjNkY2Q3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0xMC0xMyAg
Um9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdB
U00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgU29tZSBwYXJ0cyBvZiBXZWJDb3Jl
IHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5vdCBidWlsZCBhZnRlciBJIG1hZGUgdGhlIGxl
bmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5cyByZXR1cm4gVUNQVVJlZ2lzdGVyIGluc3Rl
YWQgb2YgdWludDMyX3QuCisgICAgICAgIE1vc3QgZml4ZXMgd2VyZSB0cml2aWFsLCB0aGUgb25s
eSBleGNlcHRpb24gaXMgU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCwgd2hlcmUgSSBoYWQgdG8g
aW5jcmVtZW50IHRoZSB2ZXJzaW9uIG51bWJlciwgYXMgQXJyYXlCdWZmZXIgKGFuZCBBcnJheUJ1
ZmZlclZpZXdzLCBhbmQgSW1hZ2VCaXRtYXApIG5vdyB3cml0ZS9yZWFkIHRoZWlyIGxlbmd0aCBp
biBhIDY0LWJpdCBmaWVsZCAoYW5kIHNhbWUgZm9yIHRoZSBieXRlT2Zmc2V0IG9mIEFycmF5QnVm
ZmVyVmlldykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUgY29kZSBpcyBhbHJlYWR5
IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBJIGltcGxlbWVudGVk
IG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEltYWdlQml0bWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlckltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlld0ltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZpZXcpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorICAgICAgICAqIGZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1ZXVl
OjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisK
IDIwMjEtMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGF2ZSB0aGUgU2Nyb2xsaW5nVHJlZSB0cmFjayBub2RlcyB3aXRoIGFuaW1hdGVkIHNj
cm9sbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaEV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50LmNwcApp
bmRleCA0MmI4ZmUyNWViNTcuLjViMTJhYWM5YWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50LmNwcApAQCAtNDMsMTEgKzQzLDE3IEBAIHN0YXRpYyBW
ZWN0b3I8dWludDhfdD4gZGF0YUZyb21QdXNoTWVzc2FnZURhdGFJbml0KFB1c2hNZXNzYWdlRGF0
YUluaXQmIGRhdGEpCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZGF0YSwgW10oUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+JiB2YWx1ZSkgLT4gVmVjdG9yPHVpbnQ4X3Q+IHsKICAgICAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIHJldHVybiB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHZhbHVlLT5kYXRhKCkpLCB2YWx1ZS0+Ynl0ZUxl
bmd0aCgpIH07CisgICAgICAgIENoZWNrZWRTaXplIGJ5dGVMZW5ndGggPSB2YWx1ZS0+Ynl0ZUxl
bmd0aCgpOworICAgICAgICBpZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCB9OwogICAgIH0sIFtdKFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mIHZhbHVlKSAtPiBWZWN0b3I8dWludDhfdD4gewogICAg
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgcmV0dXJu
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmJhc2VBZGRyZXNzKCkp
LCB2YWx1ZS0+Ynl0ZUxlbmd0aCgpIH07CisgICAgICAgIENoZWNrZWRTaXplIGJ5dGVMZW5ndGgg
PSB2YWx1ZS0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBpZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxv
d2VkKCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4geyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+YmFzZUFkZHJlc3MoKSksIGJ5dGVMZW5n
dGggfTsKICAgICB9LCBbXShTdHJpbmcmIHZhbHVlKSAtPiBWZWN0b3I8dWludDhfdD4gewogICAg
ICAgICBhdXRvIHV0ZjggPSB2YWx1ZS51dGY4KCk7CiAgICAgICAgIHJldHVybiBWZWN0b3I8dWlu
dDhfdD4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0
ZjgubGVuZ3RoKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1h
cGkvUHVzaE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
TWFuYWdlci5jcHAKaW5kZXggYWNhNmNmZjE4M2VkLi5hMmYwYmJlY2VjNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1hbmFnZXIuY3BwCkBAIC04MiwxMSAr
ODIsMTcgQEAgdm9pZCBQdXNoTWFuYWdlcjo6c3Vic2NyaWJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0ZDoKICAgICBhdXRvIGtleURhdGFSZXN1bHQg
PSBXVEY6OnN3aXRjaE9uKCpvcHRpb25zLT5hcHBsaWNhdGlvblNlcnZlcktleSwgW10oUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+JiB2YWx1ZSkgLT4gS2V5RGF0YVJlc3VsdCB7CiAgICAgICAgIGlm
ICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPHVpbnQ4X3Q+IHsgfTsKLSAgICAg
ICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHZhbHVlLT5kYXRhKCkpLCB2YWx1ZS0+Ynl0ZUxlbmd0aCgpIH07CisgICAgICAgIENoZWNr
ZWRTaXplIGJ5dGVMZW5ndGggPSB2YWx1ZS0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBpZiAoYnl0
ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm4gVmVjdG9yPHVpbnQ4
X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHZhbHVlLT5kYXRhKCkpLCBieXRlTGVuZ3RoIH07CiAgICAgfSwg
W10oUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYgdmFsdWUpIC0+IEtleURhdGFSZXN1bHQg
ewogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90
PiB7IH07Ci0gICAgICAgIHJldHVybiBWZWN0b3I8dWludDhfdD4geyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+YmFzZUFkZHJlc3MoKSksIHZhbHVlLT5ieXRlTGVuZ3Ro
KCkgfTsKKyAgICAgICAgQ2hlY2tlZFNpemUgYnl0ZUxlbmd0aCA9IHZhbHVlLT5ieXRlTGVuZ3Ro
KCk7CisgICAgICAgIGlmIChieXRlTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBWZWN0b3I8dWludDhfdD4geyB9OworICAgICAgICByZXR1cm4gVmVjdG9yPHVpbnQ4
X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmJhc2VBZGRyZXNz
KCkpLCBieXRlTGVuZ3RoIH07CiAgICAgfSwgW10oU3RyaW5nJiB2YWx1ZSkgLT4gS2V5RGF0YVJl
c3VsdCB7CiAgICAgICAgIGF1dG8gZGVjb2RlZCA9IGJhc2U2NFVSTERlY29kZSh2YWx1ZSk7CiAg
ICAgICAgIGlmICghZGVjb2RlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAKaW5kZXggY2I3ZTg0ZDQ1MzgzLi4yZGI0OWNhMjRhMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0x
OTMsMTIgKzE5MywxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21D
aGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgZGVzdGluYXRpb24sCiAgICAgCiAgICAgRmxvYXQz
MkFycmF5KiBjaGFubmVsRGF0YSA9IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAg
ICAgCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAg
VUNQVVJlZ2lzdGVyIGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAg
ICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9Owog
ICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAg
ICBVQ1BVUmVnaXN0ZXIgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNv
dW50ID0gc3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAK
ICAgICBjb25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyMSwxMiAr
MjIxLDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKFJl
ZjxGbG9hdDMyQXJyYXk+JiYgc291cmNlLCB1bnNpZ25lCiAgICAgCiAgICAgRmxvYXQzMkFycmF5
KiBjaGFubmVsRGF0YSA9IG1fY2hhbm5lbHNbY2hhbm5lbE51bWJlcl0uZ2V0KCk7CiAgICAgCi0g
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CisgICAgVUNQVVJl
Z2lzdGVyIGRhdGFMZW5ndGggPSBjaGFubmVsRGF0YS0+bGVuZ3RoKCk7CiAgICAgCiAgICAgaWYg
KGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAot
ICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBVQ1BV
UmVnaXN0ZXIgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0g
c3RkOjptaW4oc291cmNlLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3Qg
ZmxvYXQqIHNyYyA9IHNvdXJjZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5h
Yzg5Y2FlYmVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtMTk2LDggKzE5Niw4IEBAIHZvaWQgUmVhbHRpbWVB
bmFseXNlcjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJh
eSkKICAgICBkb0ZGVEFuYWx5c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0
IGZyb20gbGluZWFyIG1hZ25pdHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXpl
X3QgbGVuZ3RoID0gc3RkOjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0
aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxl
bmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihtYWduaXR1ZGVCdWZmZXIoKS5z
aXplKCksIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAg
ICBjb25zdCBkb3VibGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5E
ZWNpYmVscyA/IDEgOiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAg
ICAgY29uc3QgZG91YmxlIG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsy
MjcsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxv
YXQzMkFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBz
aXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgo
KSk7CisgICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5n
dGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3Qg
bGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChs
ZW5ndGggPiAwKSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVm
ZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBm
ZnRTaXplOwogICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1
Miw5IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4
QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIHVuc2lnbmVkIGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxl
bmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAg
IHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7Cisg
ICAgc2l6ZV90IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9
IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4g
MCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXpl
KCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsK
ICAgICAgICAgQVNTRVJUKGlzSW5wdXRCdWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5
MjljYS4uNTUxNmJmNTNlYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9XYXNtTW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
WWFyckZsYWdzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Miw4ICsz
NDMsOSBAQCBzdGF0aWMgdW5zaWduZWQgY291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAg
dXNhZ2VzKQogICogVmVyc2lvbiA3LiBhZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlm
aWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNpb24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRh
J3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9y
IEltYWdlQml0bWFwIGNvbG9yIHNwYWNlLgorICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVu
Z3RoIChhbmQgb2Zmc2V0cykgb2YgQXJyYXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykg
ZnJvbSAzMiB0byA2NCBiaXRzCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVy
c2lvbiA9IDk7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSAxMDsKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBUZXJtaW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBOb25JbmRleFByb3BlcnRpZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMzk5LDcgKzQw
MSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAw
MDAwMDA7CiAgKiAgICB8IE9iamVjdFJlZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVy
ZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFy
cmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMy
X3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2Up
CisgKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVP
ZmZzZXQ6dWludDY0X3Q+IDxieXRlTGVuZ3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmpl
Y3RSZWZlcmVuY2UpCiAgKiAgICB8IENyeXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50
MzJfdD4gPGZhY3RvcjpieXRle3dyYXBwZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAog
ICogICAgfCBET01SZWN0CkBAIC00MDcsNyArNDA5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIHwgRE9NUXVhZAogICog
ICAgfCBJbWFnZUJpdG1hcFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgUlRD
Q2VydGlmaWNhdGVUYWcKLSAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFuOnVpbnQ4
X3Q+IDxsb2dpY2FsV2lkdGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4gPHJlc29s
dXRpb25TY2FsZTpkb3VibGU+IERlc3RpbmF0aW9uQ29sb3JTcGFjZSA8Ynl0ZUxlbmd0aDp1aW50
MzJfdD4oPGltYWdlQnl0ZURhdGE6dWludDhfdD4pCisgKiAgICB8IEltYWdlQml0bWFwVGFnIDxv
cmlnaW5DbGVhbjp1aW50OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+IDxsb2dpY2FsSGVpZ2h0
OmludDMyX3Q+IDxyZXNvbHV0aW9uU2NhbGU6ZG91YmxlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
PGJ5dGVMZW5ndGg6dWludDY0X3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+KQogICogICAgfCBP
ZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IFdhc21N
ZW1vcnlUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgfCBSVENEYXRhQ2hhbm5lbFRyYW5zZmVy
VGFnIDxwcm9jZXNzSWRlbnRpZmllcjp1aW50NjRfdD48cnRjRGF0YUNoYW5uZWxJZGVudGlmaWVy
OnVpbnQ2NF90PjxsYWJlbDpTdHJpbmc+CkBAIC00NjMsNyArNDY1LDcgQEAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIE9iamVj
dFJlZmVyZW5jZVRhZyA8b3BJbmRleDpJbmRleFR5cGU+CiAgKgogICogQXJyYXlCdWZmZXIgOi0K
LSAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250ZW50czpieXRle2xl
bmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQ2NF90PiA8Y29udGVudHM6
Ynl0ZXtsZW5ndGh9PgogICogICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMy
X3Q+CiAgKiAgICBTaGFyZWRBcnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAt
OTk4LDggKzEwMDAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3Np
Ymx5U2hhcmVkQXJyYXlCdWZmZXJWaWV3KHZtLCBvYmopOwotICAgICAgICB3cml0ZShzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCkpKTsKLSAgICAgICAg
d3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgp
KSk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVPZmZzZXQgPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVP
ZmZzZXQoKTsKKyAgICAgICAgd3JpdGUoYnl0ZU9mZnNldCk7CisgICAgICAgIHVpbnQ2NF90IGJ5
dGVMZW5ndGggPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgd3JpdGUo
Ynl0ZUxlbmd0aCk7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBh
cnJheUJ1ZmZlclZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgIGlmICghYXJy
YXlCdWZmZXIpIHsKICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
VmFsaWRhdGlvbkVycm9yOwpAQCAtMTEzMSw3ICsxMTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
d3JpdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihidWZmZXItPnJlc29sdXRpb25TY2FsZSgpKSk7CiAg
ICAgICAgIHdyaXRlKGJ1ZmZlci0+Y29sb3JTcGFjZSgpKTsKIAotICAgICAgICB3cml0ZShzdGF0
aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkpOworICAgICAgICB3
cml0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkpOwog
ICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRh
dGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIH0KIApAQCAtMTI2Myw4ICsx
MjY3LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoSW1hZ2VEYXRhVGFnKTsK
ICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0aCgpKTsKICAgICAgICAgICAgICAgICB3
cml0ZShkYXRhLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgp
Lmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBk
YXRhLT5kYXRhKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNrZWRVaW50MzIgZGF0
YUxlbmd0aCA9IGRhdGEtPmRhdGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0
YUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRhKCks
IGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9yU3BhY2UoKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzExLDgg
KzEzMjAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRhZyk7Ci0gICAgICAgICAgICAgICAg
d3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBieXRlTGVuZ3Ro
ID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShieXRl
TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8
SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpAQCAtMTUwMiw3ICsxNTEyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4obV9idWZmZXIsIGkpOwogICAgIH0KIAotICAgIHZv
aWQgd3JpdGUodW5zaWduZWQgbG9uZyBsb25nIGkpCisgICAgdm9pZCB3cml0ZSh1aW50NjRfdCBp
KQogICAgIHsKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4obV9idWZmZXIsIGkpOwogICAgIH0K
QEAgLTIzOTEsNyArMjQwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIGJvb2wgcmVhZCh1bnNpZ25lZCBsb25nIGxvbmcmIGkpCisgICAgYm9vbCByZWFk
KHVpbnQ2NF90JiBpKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oaSk7
CiAgICAgfQpAQCAtMjU1NSw5ICsyNTY1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZl
cj4mIGFycmF5QnVmZmVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExlbmd0aFR5cGU+CisgICAg
Ym9vbCByZWFkQXJyYXlCdWZmZXJJbXBsKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVy
KQogICAgIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoOworICAgICAgICBMZW5ndGhUeXBlIGxl
bmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGlmIChtX3B0ciArIGxlbmd0aCA+IG1fZW5kKQpAQCAtMjU2OSwxNSArMjU4
MCwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29s
IHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCisg
ICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIp
CisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1cm4g
cmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJfdD4oYXJyYXlCdWZmZXIpOworICAgICAgICByZXR1
cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50NjRfdD4oYXJyYXlCdWZmZXIpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZW5ndGhUeXBlPgorICAgIGJvb2wgcmVhZEFycmF5QnVm
ZmVyVmlld0ltcGwoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgewogICAg
ICAgICBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgYXJyYXlCdWZmZXJWaWV3U3VidGFnOwogICAgICAg
ICBpZiAoIXJlYWRBcnJheUJ1ZmZlclZpZXdTdWJ0YWcoYXJyYXlCdWZmZXJWaWV3U3VidGFnKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgYnl0ZU9mZnNldDsK
KyAgICAgICAgTGVuZ3RoVHlwZSBieXRlT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWQoYnl0ZU9m
ZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5dGVM
ZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZUxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFk
KGJ5dGVMZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09iamVj
dCogYXJyYXlCdWZmZXJPYmogPSBhc09iamVjdChyZWFkVGVybWluYWwoKSk7CkBAIC0yNTg3LDcg
KzI2MDYsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHR5cGVk
QXJyYXlFbGVtZW50U2l6ZShhcnJheUJ1ZmZlclZpZXdTdWJ0YWcpOwogICAgICAgICBpZiAoIWVs
ZW1lbnRTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNpemU7CisgICAgICAgIExlbmd0aFR5cGUgbGVu
Z3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOwogICAgICAgICBpZiAobGVuZ3RoICogZWxl
bWVudFNpemUgIT0gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MjYzNCw2ICsyNjUzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29s
IHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCisg
ICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1cm4gcmVh
ZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDMyX3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOworICAg
ICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDY0X3Q+KHZtLCBhcnJheUJ1
ZmZlclZpZXcpOworICAgIH0KKwogICAgIGJvb2wgcmVhZChWZWN0b3I8dWludDhfdD4mIHJlc3Vs
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggZmI3
NTdhNGQ3NGY2Li5hZmM3Y2MxZWY1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGlmIChoYXNBcnJheSkgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheS0+c2l6ZSgpKTsKICAgICAgICAgZm9yIChjb25z
dCBhdXRvICZhcnJheUJ1ZmZlckNvbnRlbnRzIDogKm1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
KSB7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IGFycmF5QnVmZmVyQ29udGVudHMuc2l6ZUluQnl0
ZXMoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5
QnVmZmVyQ29udGVudHMuc2l6ZUluQnl0ZXMoKSk7CiAgICAgICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJD
b250ZW50cy5kYXRhKCkpLCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCksIDEpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTk5LDkgKzE5OSwxMiBAQCBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogCiAgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PigpOwogICAgICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkgewot
ICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIHVpbnQ2NF90IGJ1
ZmZlclNpemU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgQ2hlY2tlZDxVQ1BV
UmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7
CisgICAgICAgICAgICBpZiAoY2hlY2tlZEJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLnRl
bXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxMiw3ICsyMTUsNyBAQCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFw
cGVuZCh7IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdl
RGVzdHJ1Y3RvcigpIH0pOworICAgICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5h
cHBlbmQoeyBidWZmZXIsIGNoZWNrZWRCdWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFkNjg2ZC4uYmFm
MWFiYWQ2N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5k
UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKQEAgLTY4LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKFdlYkNv
cmU6OkJsb2ImIGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNpemUoKTsKICAg
ICBpZiAoIWJ5dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGUoMFUsIDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mgd2VpcmQsIGJ1
dCBpcyByZXF1aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8gc3VjY2VlZC4K
KyAgICAgICAgLy8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdoZXJlIEFycmF5
QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0
aCkgY291bGQgYmUgY2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oMFUpLCAxKSwgMCwgMCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJl
ZjxCbG9iTG9hZGVyPihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUuLjFiYTMyMmMx
MGJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3gu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYzLDcgKzY0LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1cm5WYWx1ZSwgViYgdmll
dywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNzKQogICAgIHsKICAgICAg
ICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFsdWUgPSB2aWV3LnRlbXBs
YXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0
dXMpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0OworICAgICAg
ICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFubmVz
cyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9IGFj
dHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCg==
</data>
<flag name="commit-queue"
          id="465325"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441275</attachid>
            <date>2021-10-14 13:58:54 -0700</date>
            <delta_ts>2021-10-14 16:28:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>274920</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi4zNzliYzNjYTY4MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBicmFu
Y2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZh
bCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pTVmFs
dWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1h
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwppbmRl
eCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRt
ZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9v
KG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQgbWF4
U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3
MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAgIHZh
ciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwICsg
MSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
ZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYg
KGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cgZXhw
ZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjog
ZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAog
ZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJh
eSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTogMHg4
MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNpemUg
PSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAgIG1l
bW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAtIDB4
MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4uODBm
ZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBAQAot
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9y
ICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikK
Ky8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1LDIx
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIpKTsK
KyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
Zm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBtYXhT
aXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9
PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikpOwog
ICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0
cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUudG9T
dHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAg
IGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKwor
ZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0
aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlW
YWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJh
eVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2Eg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0
aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFj
dHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsg
bCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0
ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmlu
Zyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdp
Z3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRocmVl
R2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBm
b3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0
aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCww
ICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVl
ICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Cisg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTUzOWI1MGQyZTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxs
eS1vb2IuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3Ig
KCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQor
Ly9AIHJ1bkRlZmF1bHQoKQorZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0
aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSkKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9
Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0
OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJy
YXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAg
ICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
ICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAg
IHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0
QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IGFjdHVhbExlbmd0aCArIDEwOworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAg
IGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAoIkluIG91dC1vZi1ib3Vu
ZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10
aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpp
bmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0
ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYsMTMg
QEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAgICAg
dmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRNZW1v
cnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1vZHVs
ZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAK
LWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAoZXhj
ZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBpbnZh
bGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIoKSkn
KSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUt
dGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNt
LW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwppbmRl
eCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3Jl
Z3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJ
WkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZhciBl
eGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7CiB9
IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAhPSAi
UmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAoZXhj
ZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2FzOiAi
ICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZGU0Yjk1NDQzNC4uNzNmYmU1NThkN2Y5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFJlYmFzZWxpbmVkIHRocmVlIGZvbGxvd2luZyB0ZXN0cyBhcyBkaWZmZXJlbnQgb3Ig
ZmV3ZXIgZXJyb3IgbWVzc2FnZXMgYXBwZWFyIG9uIHRoZSBjb25zb2xlLgorICAgICAgICBBbHNv
IGNoYW5nZWQgY3VycmVudFZlcnNpb24gaW4gc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBm
cm9tIDkgdG8gMTAuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWludmFsaWQtcmVzdWx0LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisgICAgICAgICogd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0xMiAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRob3V0LWlu
dGVyYWN0aW9uLnB5IGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYx
N2FkLi44N2JjYzQ0OTJjMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9z
ZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFn
ZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5
PgogICAgICAgICA8c2NyaXB0PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25z
dCBjdXJyZW50VmVyc2lvbiA9IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVy
IGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1
ZmZlci1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRj
NS4uNWI4ZjM2NjU5Y2IzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1
Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUg
b2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYg
aXQgZG9lcyBub3QgY3Jhc2guCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1s
ZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5k
MDczNjAwMTQzMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0
IGludGVybmFsIEF1ZGlvQnVmZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9m
IDQ0MDAwIGFuZCBhIGxlbmd0aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVu
Z3RoIHJldHVybmVkIGJ5IE9mZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8g
Y29uc3RydWN0IHRoZSByZW5kZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwYWM3NWM5NzQ3OWQuLjc1OTNmYmE5ZTEy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTEz
ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cg
V0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1B
WF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkg
dGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0
R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBs
ZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BVUmVnaXN0
ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkg
aW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNp
emUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
cywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2
ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIg
YW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBH
ZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIg
cmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBo
YWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisg
ICAgICAgIC0gSW4gdHVybnMsIEkgaGFkIHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2Ug
Q2hlY2tJbkJvdW5kcyBjb3VsZCBub3QgYWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIKKyAgICAgICAgLSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9u
cyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hY
WCB0byBhY2NlcHQgbm9uLUludDMyIGluZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXksIGEgbWF4aW11bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAy
Qi4KKyAgICAgICAgLSBJIGFkZGVkIGEgIm1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJy
YXlQcm9maWxlL1VubGlua2VkQXJyYXlQcm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdo
ZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBpbmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3Bl
Y3VsYXRpb24gYW5kIHNwZWNpYWxpemF0aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwu
CisgICAgICAgICAgICBJIHRoZW4gdXBkYXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBi
eSB0aGUgc2xvdyBwYXRocyB0byBjb3JyZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9y
dHVuYXRlbHkgSSByYW4gb3V0IG9mIHRpbWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3Vw
ZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMuCisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBo
YXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBs
YXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50Cisg
ICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJh
dGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcg
bGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwg
Zm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRv
bWljc1hYWAorCisgICAgICAgIFRoZSBjdXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdp
bGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNl
cyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3Ro
ZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVm
aW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5
IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhp
cyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0
aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNl
IENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgor
ICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAt
IEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFk
eSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0g
TWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFz
IHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OkltbTY0OjpJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6Oklt
bTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2Ny
YXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1
YXJkKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZEFycmF5UHJvZmlsZTo6VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6QXJyYXlNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhU
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NB
bmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnNwZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNBcnJheU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6
REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
TG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0
cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlk
YXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRB
cnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmlj
dEVxKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmlu
c2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5C
eXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxp
Z25tZW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxl
bmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNh
bGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAg
KEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6
CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
OgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dE
b3duQW5kV2FzdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9z
c2libHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6
Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFy
cmF5SW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aElu
ZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2lu
IG1pZ3JhdGlvbiBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2FhMGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUsOSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFz
cyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlh
dGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1l
bW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3Rl
ZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRy
dXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1Q
dHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVk
SW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51
bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpu
dWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0
ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRw
dHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Piht
X3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29u
c3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBw
dWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAg
ewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRy
dXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShw
dHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBA
QCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsK
LSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
Mih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
MihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0
ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAg
ICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVi
bGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2Np
ZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBz
dHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgp
IHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAg
ICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBt
X3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02
NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRw
dHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6
CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAg
ICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1
ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAg
ICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5k
aWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFz
VHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAg
IC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1
Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0
YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBE
YXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFiYmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2
ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hN
dWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
OjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJh
c2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7
CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUo
QVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0
KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0K
IAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBu
ZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdp
c3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAv
LyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBp
dCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3
aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAg
IGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAg
IGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQp
LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJl
Z2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFj
ZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50
ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAg
ICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwg
cmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAv
LyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThm
ZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJN
NjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAg
IHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZm
ZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAg
IH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIu
LjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQ
dHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRh
dGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRk
cmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7
CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAg
ICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxp
ZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6
IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0
LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBl
NjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkg
KzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAg
ICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZm
OyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0
aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzOTc5OTJhM2E3NTAuLmZjM2U5MDY2NGFlMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2
LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAg
ICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6
CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRl
cjoKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2
YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAgLy8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5
cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBwcm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQg
YXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEy
ICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAK
ICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdo
LmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkp
OwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQu
c2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIENQVShSRUdJ
U1RFUjY0KQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRo
ZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0
ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVP
ckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0
YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92
ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAg
ICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNj
cmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2Nh
dGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkgKzEyMDMsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVz
ZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lz
dGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBDUFUoUkVHSVNURVI2NCkK
KyAgICAgICAgaml0LmxvYWQ2NChhZGRyZXNzT2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2Vsc2UK
KyAgICAgICAgaml0LmxvYWQzMihhZGRyZXNzT2ZMZW5ndGgsIHNjcmF0Y2hHUFIpOworI2VuZGlm
CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAg
aml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2NyYXRj
aDJHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsIGZhbHNlKTsKLQogICAgICAgICBqaXQuc2ln
bkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBpZiAoaXNJ
bnQodHlwZSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKQEAg
LTE1OTUsOSArMTYwNSwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
ICAgICAgICAgICAgcmVhZHkubGluaygmaml0KTsKICAgICAgICAgfQogCi0gICAgICAgIGppdC5s
b2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIC8vIE91dE9mQm91bmRzIGJp
dCBvZiBBcnJheVByb2ZpbGUgd2lsbCBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi4K
LSAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhl
bHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3NPZkxlbmd0aCA9IENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSk7CisgICAg
ICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CisjaWYg
Q1BVKFJFR0lTVEVSNjQpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBVQ1BVUmVnaXN0ZXIs
IHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAg
ICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJz
OjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAg
ICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlm
CiAKICAgICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxv
Y2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRv
ci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTE2MDUsOSArMTYyMCwxMyBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1
c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShSRUdJ
U1RFUjY0KQorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7
CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7
CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwog
ICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZl
LCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAg
IGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAg
IGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5
MTY3OTQ4NDNiMC4uYmVlN2E5ZmNkYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJy
YXlQcm9maWxlOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVz
ZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJl
IGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJl
IGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRo
ZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2
LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5k
ZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0y
MDUsNyArMjA1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAKKworI2lmIENQVShSRUdJU1RFUjY0KQor
ICAgIC8vIEFjY2Vzc2luZyB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gdGhhdCB0ZW5kcyB0byBi
ZSBtb3JlIGNvbXBsaWNhdGVkIGFzIHdlIGNhbid0IGZvcmNlIGNvbnZlcnQgZXZlcnl0aGluZyB0
byBpbnQzMl90LgorICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBzdWNoIGxhcmdlIHR5cGVkIGFycmF5
cyBvbiA2NC1iaXQgcGxhdGZvcm1zLgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc19z
bWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKTsKKyAgICB2b2lkIHNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCkgeyBtX21heUJlTGFyZ2VU
eXBlZEFycmF5ID0gdHJ1ZTsgfQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlCZUxhcmdlVHlwZWRBcnJh
eTsgfQorI2Vsc2UKKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIFN0cnVj
dHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFycmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7
IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZNYXlT
dG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21heVN0b3JlVG9Ib2xlOyB9CkBAIC0yNDQsNiArMjU0
LDkgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQgeyAw
IH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsgLy8gVGhpcyBmbGFnIG1h
eSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQg
d2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGlu
ZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBp
bmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZv
ciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29s
IG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wg
bV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5
SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6
IDE7CkBAIC0yNTMsNyArMjY2LDEzIEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmls
ZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAg
VW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRB
cnJheVByb2ZpbGUoKQorICAgICAgICA6IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRy
dWUpCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJh
eShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVBy
b2ZpbGUmIGFycmF5UHJvZmlsZSkKICAgICB7CkBAIC0yODAsNiArMjk5LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9
IGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyA9IGFycmF5UHJvZmlsZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKwor
I2lmIENQVShSRUdJU1RFUjY0KQorICAgICAgICBpZiAobV9tYXlCZUxhcmdlVHlwZWRBcnJheSkK
KyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gdHJ1ZTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGFycmF5
UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5OworI2VuZGlmCiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMjkwLDcgKzMxNiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9s
ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKICAgICBib29s
IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXNl
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXMgOiAxOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIGJvb2wgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihVbmxpbmtlZEFycmF5UHJvZmlsZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IDJiMmY1ZTAzMDE5Zi4uMWE2M2QyYzExN2M0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0zNDYzLDcgKzM0NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZp
ZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZp
ZXcpIHsKKyAgICAgICAgaWYgKHZpZXcgJiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5n
dGgoKSkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxl
bmd0aCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcx
LDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAg
ICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVy
KHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAg
LTM3OTYsOCArMzgwNyw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFs
dWUpOwogICAgICAgICBpZiAodmlldykgewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAg
ICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVS
ZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAg
ICAgICAgICAgIGlmIChieXRlT2Zmc2V0ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNl
dCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9m
ZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2
ICszODE3LDE5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDUFVSZWdpc3Rlcj4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7Cisg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZh
bHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9z
dHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAtNDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50
MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUgQ2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5v
dCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAg
ICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1p
bmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBm
b3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBub3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBl
bGltaW5hdGlvbgorICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5v
ZGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2Ug
TmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAgICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0
VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNX
YXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmlu
Z0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBA
QCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZpbmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkpOwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50
MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgp
ICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgpKQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFy
cmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAgICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBi
ZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3QgYmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNw
ZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDggQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5l
KAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2
NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJpZ1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhN
RTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVzZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3Jt
YXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3QgR2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkgewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4
aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRz
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0
aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNiLi5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAg
ICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMu
YWN0aW9uID0gQXJyYXk6OldyaXRlOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVk
QXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5
OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwog
ICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFz
Qnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVk
QXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5
cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0
NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0g
QXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpB
c0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlN
b2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3Bl
Y3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5
OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0
eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAg
IHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMu
Y29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rp
b247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VU
eXBlZEFycmF5OwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwg
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFy
cmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
dS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0
ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBh
Y3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwog
ICAgIH0KICAgICAKICAgICBBcnJheTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRlcy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBA
IHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3BlY3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlv
bik7IH0KICAgICBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNpb24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQog
ICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlvbik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBl
ZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9
CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3JkKCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0K
ICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3Rh
dGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJy
YXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBB
cnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAg
ICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlv
bikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNp
b24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAg
ICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0
CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVy
c2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJh
eUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29u
dmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAK
LSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkg
Y29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAg
QXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRB
cnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJy
YXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUo
dHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAg
ICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRP
ZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAg
IGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6
VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6
OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQot
ICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFr
ZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwog
ICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tl
ciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAg
ICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5
KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVy
ZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAg
ICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMo
bG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBt
eUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
bXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdp
dGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRo
VHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0
aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6
OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFj
dGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lv
bihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1
bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmls
ZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJvb2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+
bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5
Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywg
c3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJ
bnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlw
ZSgpID09IG90aGVyLnR5cGUoKQogICAgICAgICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVy
LmFycmF5Q2xhc3MoKQogICAgICAgICAgICAgJiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVj
dWxhdGlvbigpCi0gICAgICAgICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lv
bigpOworICAgICAgICAgICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQor
ICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJy
YXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgdWludDhfdCBhcnJheUNsYXNzOwogICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlv
bjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29udmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50
OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAg
ICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVz
OwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLjAz
NGJkZDY2MTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgwNywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBE
TwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogeworI2lmIENQVShSRUdJU1RFUjY0KQor
ICAgIHN0YXRpY19hc3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAo
dmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRy
aW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
ID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYg
IUNQVShSRUdJU1RFUjY0KQorICAgICAgICBpZiAod2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBpbnNl
cnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50LnN0
cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBl
OwpAQCAtMzgyMiwyNiArMzgzMSwzMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAg
ICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwog
Ci0gICAgICAgIE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpOworICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTIgPyBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiA6IEdldEFycmF5TGVuZ3RoOworICAg
ICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShh
cnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKICAgICAgICAgLy8g
T3VyIEFycmF5TW9kZSBzaG91bGRuJ3QgY2F1c2UgdXMgdG8gZXhpdCBoZXJlIHNvIHdlIHNob3Vs
ZCBiZSBvayB0byBleGl0IHdpdGhvdXQgZWZmZWN0cy4KICAgICAgICAgbV9leGl0T0sgPSB0cnVl
OwogICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CiAKLQogICAgICAgICBpZiAoIWxvZ1NpemUp
IHsKICAgICAgICAgICAgIHNldChyZXN1bHQsIGxlbmd0aE5vZGUpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0
IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgd2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAot
ICAgICAgICAvLyB0aGF0IG92ZXJmbG93cyBpbnQzMi4KLSAgICAgICAgTm9kZSogc2hpZnROb2Rl
ID0ganNDb25zdGFudChqc051bWJlcihsb2dTaXplKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoQXJpdGhCaXRMU2hpZnQsIGxlbmd0aE5vZGUsIHNoaWZ0Tm9kZSkpOworICAgICAg
ICAvLyBXZSBjYW5ub3QgdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMg
bWF5IGhhdmUgYSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIEludDMyLgorICAgICAgICBOb2Rl
KiB0eXBlU2l6ZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoMSA8PCBsb2dTaXplKSk7CisgICAgICAg
IHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhNdWwsIGxlbmd0aE5vZGUsIHR5cGVTaXplKSk7
CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5TGVu
Z3RoSW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MiA9ICFpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cp
OworI2lmICFDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAg
ICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFy
aWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMK
ICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAg
ICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBP
cEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05v
ZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAg
ICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5
cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2lj
OiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIg
PSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAh
Q1BVKFJFR0lTVEVSNjQpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICBp
bnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gKCp2YXJpYW50
LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VU
eXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAg
ICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsK
IAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhp
c05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA6IEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKG9wLCBPcElu
Zm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUp
KTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uOWFkNWMyNzAyMGQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Myw2ICsxNTMs
NyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVudW1lcmF0b3JIYXNP
d25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAg
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5n
dGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAgICAgICAgY2FzZSBJ
bkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjM5LDYgKzI0MCw3IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46CiAgICAgY2FzZSBM
b2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNh
c2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEzMzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywgTWlz
Y0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVy
bjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICBy
ZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRl
T2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9k
ZSkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAg
ICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQXJy
YXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsK
KyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgcmVhZChN
aXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5TGVuZ3RoSW50
NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAg
ICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgc3dpdGNoICht
b2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKaW5kZXggYzY2
ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21t
b24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAj
ZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5lIGJvb2wgY29uc3Rl
eHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUzNGUuLmZhMTdiZjExNDE5NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
QEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBDaGVja0luQm91
bmRzSW50NTI6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAgIGNhc2UgR2V0TXlB
cmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjQwMjg0Y2ZhMjJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNh
c2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hl
Y2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBj
YXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk3LDEwICsxOTgsMTIgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVy
OgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoK
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBQ
dXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4uNTY2ZjUzOWRlMWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
MDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxO
dW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAm
JiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYg
bm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFu
b2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAg
ICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZs
b3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qg
Zm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0dXJlTW9kZS4KLSAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRv
IHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBF
bnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9k
ZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAw
KSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAg
ICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6
OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJheToK
KyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQog
ICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAg
ICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAg
ICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJh
eSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
bmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcxNywxMiArMTczMSwx
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheTog
ewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xl
YXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAg
LTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAg
ICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKG1fZ3Jh
cGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5TW9kZTo6dW51c2Vk
SW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU29t
ZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5
TW9kZSk7CisgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBF
ZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOworCisgICAgICAgICAg
ICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9k
ZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7Cisg
ICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsK
ICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTIxODIsNiArMjIxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoK
ICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJ
bnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICBjYXNl
IERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpAQCAtNDA5NiwxNCAr
NDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9kZS0+Y2hpbGQyKCkg
PSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAgICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlM
ZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlNb2Rl
KQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBv
cmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwotICAgICAgICByZXR1
cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAotICAgICAgICAgICAgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uo
c3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5
KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5l
cmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4uMmQ4NmViNzU3MzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBAIC0zOSw4ICszOSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMgY2xhc3MgaXMgdXNl
ZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMgZHVyaW5nIGNvZGUg
Z2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRvIHdoZXRoZXIgYSB2
YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNoLAogLy8gd2hldGhl
ciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmlsZSwgYW5kIGlmIHNv
IG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1v
cnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBidXQgd2UgbWF5IGJl
Ci0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFja3MgaG93IG1hbnkg
b3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKKy8vIGRldGFpbHMgb2YgdGhlIGZv
cm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBh
IHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2YWx1ZSBpcyBkZWFk
IGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0CiAvLyBtYXkgYmUg
cmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggMmJiOWQ0YmVhODAwLi4wNjYxZTViODI2
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAK
QEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IExvY2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zm
c2V0TG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZz
ZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUy
TG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludDUy
TG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYyIpOworICAg
ICAgICByZXR1cm47CisKICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAgICAgb3V0LnByaW50
KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggMjY5MTcxY2IzNDFkLi40MGZiNzE2NzMyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjcs
NiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9jLAogICAgIFN0cnVj
dHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAgICBUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYywKICAgICBQcm90
b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9jLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGlt
aXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjZkZWRhMDM3ZWU5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTEzMzUsNyArMTMzNSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChub25OZWdhdGl2ZSAm
JiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUo
YmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigpKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2YWxpZGF0ZUJvdW5kc0NoZWNr
RWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBT
cGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCksIG5v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCB0
byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUtcHJvZHVjaW5nIG5vZGUuCiAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5NzA2OGE5Yy4uMGJh
N2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NjUsNiAr
MTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIGNhc2Ug
QXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5
OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlOgogICAgICAg
ICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgcmV0dXJuIDI7
CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2LDYgKzIyNzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWE5MGE0Y2Zk
YWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIFRo
aXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkgYXJlIHRoZSBvbmx5
IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZpdCBpbiAzMiBiaXRz
LiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5kIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2UgdG8gcmV0dXJuaW5nIEludDUyIGluIEZpeHVwLiBE
b2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlkYXRpb24gZmFpbHVyZXMuICovIFwKKyAgICBtYWNy
byhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
R2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
QEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFzc2Vy
dEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKENoZWNrSW5Cb3Vu
ZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENo
ZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxh
Z3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5
b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tKU0Nhc3QsIE5vZGVN
dXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1dCBhcyBhIHNwZWN1
bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1MDdmMWU4MGFjMC4uYjNmMmJiN2E5MTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTk3LDEw
ICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAgIGlmIChiYXNlVmFs
dWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGluZGV4LCB2
YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwg
dmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGluZGV4
LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaW5k
ZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUsNyArMTczLDcgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNz
PgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6ZSwgY2hhciogdmVj
dG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIHNpemUsIGNo
YXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKQEAgLTE4MywxMSArMTgxLDEzIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RyCiAgICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBVQ1BVUmVnaXN0ZXIgdW5zaWduZWRT
aXplID0gc3RhdGljX2Nhc3Q8VUNQVVJlZ2lzdGVyPihzaXplKTsKKwogICAgIGlmICh2ZWN0b3Ip
Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0
aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIo
dmVjdG9yLCBzaXplKSkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3
Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNp
Z25lZFNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29s
IHN0cmljdD4KQEAgLTE5MDgsNyArMTkwOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
TwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBs
ZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MCw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdp
c3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NzIsNyArMTk3Miw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQ
VVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTk4OCw3ICsxOTg4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAwNCw3ICsyMDA0
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2
ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDM2LDcgKzIwMzYs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxv
YXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zs
b2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
YgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDUFVSZWdpc3RlciBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjgsNyAr
MjA2OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAw
LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIENQVVJlZ2lzdGVyIGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjhmOTZlYzBiMDdlZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5KikpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVy
LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
Q1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBD
UFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIENQVVJlZ2lzdGVyLCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFy
KikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIENQVVJlZ2lzdGVy
LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0
QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBDUFVSZWdpc3RlciwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQ1BVUmVnaXN0ZXIsIGNoYXIqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFs
dWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRv
ciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQwNDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAg
ICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9u
KFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsxMzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEFzc2VydEluQm91bmRz
OgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5k
c0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVS
ZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAppbmRleCBlM2EyMzlhMzNlMzAuLmM0MmIxZDA4
MGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmlu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5n
UGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUo
KS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVkQXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUo
KS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwg
U3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0
b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpIHx8
IG1fZ3JhcGguaGFzRXhpdFNpdGUobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkg
eworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQ1MkFu
eSwgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAg
ICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBiYXNl
LCBzdG9yYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDQpID0gRWRnZShsZW5ndGgsIEludDUyUmVwVXNlKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQz
Mk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFn
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9
IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEz
NywxMiArMTQzLDI1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
Ci0gICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAg
ICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgb3AsIG1fbm9kZS0+b3JpZ2luLAot
ICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJh
c2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKLSAgICAgICAgTm9kZSogY2hlY2tJ
bkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJ
bmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kcywgbV9ub2RlLT5vcmlnaW4sCi0gICAg
ICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgTm9k
ZSogY2hlY2tJbkJvdW5kczsKKyAgICAgICAgaWYgKChvcCA9PSBHZXRBcnJheUxlbmd0aCkgJiYg
KG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhh
c0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpKSB7CisgICAgICAg
ICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJh
eU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVzZSksIHN0b3Jh
Z2UpOworICAgICAgICAgICAgbGVuZ3RoLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAg
ICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlwZSBpcyBhIGR1bW15IHNpbmNlIHRoaXMgbm9kZSBk
b2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55dGhpbmcuCisgICAgICAgICAgICBjaGVja0luQm91
bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJ
bmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdpbiwK
KyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNlKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBv
cCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlN
b2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9yYWdl
KTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBDaGVja0luQm91
bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgs
IEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgfQorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBh
ZGphY2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAg
ICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVu
dHlwZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKaW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdmNTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBz
YWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2Ug
QXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNl
IENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAg
IGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAg
ICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNDc5NjM4NDQ5NDRhLi5kOTllNzhmYWNkMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBA
IC0zMjM4LDI4ICszMjM4LDQyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0
ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklU
Q29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3Vu
ZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBp
bGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSKQogewogICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJl
dHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0g
bV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9k
ZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUo
KSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVu
Z3RoKCk7CisgICAgICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAg
ICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2Rl
KCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9k
ZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRD
b25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAg
IHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgpKTsKKyNl
bHNlCiAgICAgICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobGVu
Z3RoKSk7CisjZW5kaWYKICAgICB9CisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICBtX2ppdC5z
aWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0
LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNo
R1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJh
bmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyBpbmRleEdQUikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRz
Q2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVn
IHNjcmF0Y2hHUFIpCiB7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBl
ZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBp
bGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VH
UFIsIGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdz
KCksIG51bGxwdHIsIGp1bXApOwpAQCAtMzM4MCwxMCArMzM5NCwxMiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRB
cnJheVR5cGUgdAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHBy
b3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VP
cGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2Uu
Z3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BS
UmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c2NyYXRjaC5ncHIoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1w
OwogICAgIEZQUlJlZyByZXN1bHRGUFIgPSBJbnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDEz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5
KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBm
b3JtYXQpID0gcHJlZml4KERhdGFGb3JtYXRJbnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBm
b3JtYXQgPT0gRGF0YUZvcm1hdEpTOwogCi0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhu
b2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVj
ayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21J
bnRUeXBlZEFycmF5KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRH
UFIoKSwgdHlwZSk7CiAgICAgY29uc3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAg
ICBzZXRJbnRUeXBlZEFycmF5TG9hZFJlc3VsdChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5T
cGVjdWxhdGUsIHNob3VsZEJveCwgcmVzdWx0RlBSKTsKQEAgLTM1NTUsNiArMzU3MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVn
IGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAg
ICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMykpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBz
dG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKQEAgLTM1ODcsNyArMzYwNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVn
IGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVH
UFIgIT0gcHJvcGVydHkpOwogICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NF
UlQodmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5
KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5
T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAg
c3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgMToKQEAgLTM2NDUsMTAgKzM2
NjIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVk
QXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0
ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAg
R1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHBy
b3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzOwogICAgIERhdGFGb3JtYXQgZm9ybWF0OwpAQCAtMzY1Niw3ICszNjc1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9k
ZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKIAogICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAgICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJh
eUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsK
ICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBt
X2ppdC5sb2FkRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9w
ZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjkw
LDEwICszNzA5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZs
b2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBS
UmVnIHZhbHVlRlBSID0gdmFsdWVPcC5mcHIoKTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNj
cmF0Y2guZnByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5
T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNl
LCBwcm9wZXJ0eSwgc2NyYXRjaEdQUik7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0
eXBlKSkgewogICAgIGNhc2UgNDogewpAQCAtNzk2Nyw3ICs3OTg4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3Rv
cmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BV
KEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0
ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFS
QU0oYmFzZVJlZyk7CkBAIC04MDM5LDkgKzgwNjAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsK
ICAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0g
dmVjdG9yR1BSKTsKLSAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQo
dmVjdG9yR1BSICE9IGRhdGFHUFIpOwogCiAgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0
YUdQUjsKIApAQCAtODA4Myw2ICs4MTAxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGlu
aygmbV9qaXQpOwogI2VuZGlmCiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBBSSBwcm9t
aXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJ
bnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJS
ZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiArODM3MiwxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6
QWJvdmUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKSkpOworI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
cmVzdWx0R1BSKTsKKyNlbmRpZgogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9IH0KIH0KIAorCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2hlY2tJZGVudChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHN0cmluZ09yU3ltYm9sKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTExMTE5LDEw
ICsxMTE0OCwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdp
dGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVk
QXJyYXlUeXBlKCk7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVy
ZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVj
dHVyZS5nZXQoKSk7Ci0gICAgCisKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAvLyBUaGUgb3Bl
cmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgQ1BVUmVnaXN0ZXIsIHNv
IGludDY0X3Qgb24gNjQgYml0IHBsYXRmb3JtcworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBz
aXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIs
IHNjcmF0Y2hHUFIpOworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5v
ZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UKICAgICBT
cGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BS
UmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorICAgIGVtaXROZXdUeXBlZEFycmF5V2l0
aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIp
OworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0
aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlz
KTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTM2LDggKzExMTc5LDE1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9k
ZSogbm9kZSkKICAgICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHN0
b3JhZ2VHUFIpOwogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBU
cnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8g
V2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXpl
IGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJf
dD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKyNlbHNlCiAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
LCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQp
KSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwog
ICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5
VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkgKzExMjQzLDE1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBt
X2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3Io
KSkpOworI2lmIENQVShSRUdJU1RFUjY0KQorICAgIG1faml0LnN0b3JlNjQoCisgICAgICAgIHNp
emVHUFIsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgbV9qaXQuc3RvcmUz
MigKICAgICAgICAgc2l6ZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiAg
ICAgbV9qaXQuc3RvcmUzMigKICAgICAgICAgVHJ1c3RlZEltbTMyKEZhc3RUeXBlZEFycmF5KSwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZNb2RlKCkpKTsKQEAgLTE0MTY3LDYgKzE0MjIzLDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJ
bnQzMlVzZToKICAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShub2RlKTsKICAg
ICAgICAgYnJlYWs7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToK
KyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAg
ICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMDdiNTYzYjM0ODNhLi4z
MzlmNWQxNDdiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRp
eCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJh
eVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0
aFNpemUoTm9kZSopOwotICAgIAorI2lmIENQVShSRUdJU1RFUjY0KQorICAgIHZvaWQgY29tcGls
ZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBj
b21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsx
Mzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwog
CiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIENQVShSRUdJU1RF
UjY0KQorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqKTsK
KyNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKQEAgLTE0MzEsMTAgKzE0MzgsMTMgQEAg
cHVibGljOgogICAgIHZvaWQgY29tcGlsZUFyaXRoTWluTWF4KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1w
Rm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGlu
ZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRj
aEdQUik7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlJc0RldGFjaGVk
SWZPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEpJVENvbXBpbGVyOjpKdW1wIG91
dE9mQm91bmRzKTsKLSAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOworICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlC
b3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVn
IHNjcmF0Y2hHUFIpOwogICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5v
ZGUqKTsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1i
ZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJy
ZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBl
KTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBl
ZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERh
dGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3
LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAK
LS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBi
eSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGku
ZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3Vs
YXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
QEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlk
OwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlz
IGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8v
IEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93
IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxh
dGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKaW5kZXggNmEwZjI1MjBlYTM3Li4yMmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFs
KE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29t
cGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNT
b21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2Rl
LT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkp
CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwg
cHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAg
ICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9u
IDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBp
bGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3Rv
dHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzOTgsNiArNDQwOSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3Rh
bnQ6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6Cisg
ICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2Fz
ZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNi
MzkzZjUyNzVmNy4uMzEwZWRhMjJlMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSAiU3BpbGxSZWdpc3RlcnNNb2RlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNp
bmNsdWRlICJTdXBlclNhbXBsZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0yNjk0LDYgKzI2OTUsODQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3Bl
ZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBt
X2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJU
KHN0cnVjdHVyZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigp
OworCisgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRB
cnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJF
TEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwor
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fz
c2VydChNQVhfQVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJp
c2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIp
OworICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSog
bm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBk
YXRhKHRoaXMpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJl
ZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdw
cigpOworCisgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENv
bXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9mZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRy
dXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
VmVjdG9yKCkpLCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3Rv
ciA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3Rl
ZEltbVB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIpOworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5n
KEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRhR1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFn
ZShiYXNlR1BSLCB2ZWN0b3JHUFIpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFy
cmF5QnVmZmVyR1BSKTsKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVm
ZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRhdGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9q
aXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0
cihkYXRhR1BSLCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKKworI2lmIENQVShBUk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2pp
dCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGlu
aygmbV9qaXQpOworI2lmICFDUFUoQVJNNjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZp
ZXc6Om51bGxWZWN0b3JQdHIoKSk7CisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5k
aWYKKworICAgIHN0cmljdEludDUyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9
IG5vZGUtPm9wKCk7CkBAIC0zNjQ0LDExICszNzIzLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgYmFzZUVkZ2UpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9w
ZXJhbmQgaW5kZXgodGhpcywgaW5kZXhFZGdlKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2g7CiAKICAgICAgICAgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIGluZGV4R1BSID0g
aW5kZXguZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNr
KG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIAog
ICAgICAgICBHUFJUZW1wb3JhcnkgYXJnc1syXTsKICAgICAgICAgCkBAIC00MzgxLDYgKzQ0NjEs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBH
ZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJ
ZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC00NDk5LDYgKzQ1ODMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAg
YnJlYWs7CkBAIC01NTg2LDEwICs1Njc1LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFW
aWV3RGF0YSgpOwogCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFs
dWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKICAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVT
aXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVT
aXplIC0gMSksIHQyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQx
KTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0
MSkpOwogCkBAIC01Nzg3LDEwICs1ODc4LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5lbXBsYWNl
KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwogICAgICAgICBHUFJSZWcgaXNM
aXR0bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVuZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9w
ZXJhbmQtPmdwcigpIDogSW52YWxpZEdQUlJlZzsKIAorICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMyKDAp
KSk7CiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAg
ICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVz
dGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCB0MSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVS
ZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNjA0Miw2ICs2MTM1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAg
Y2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhh
c2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAK
QEAgLTI3OSwxMCArMjc5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRC
eVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAg
ICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAg
IGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBA
IC0zNTksNiArMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNl
IE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4
IGM1ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6
CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNh
c2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09i
amVjdDoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAg
ICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4
N2UxNDU1NjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAg
ICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoK
ICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2Fz
ZSBTdG9yZUJhcnJpZXI6CkBAIC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2Ug
QXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNl
IENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlh
bGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBH
ZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IDNhOGY1Y2ZjNzk1ZS4uZDFjZTIzNzQxNTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBt
X2ludGVycHJldGVyLmZvck5vZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEw
MjcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAg
ICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRU
eXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5k
cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUy
OgorICAgICAgICAgICAgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlW
YWwoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBp
bGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGls
ZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90
eXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fb3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0
ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0
ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2Fz
dGVmdWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVs
bCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwg
bm90TnVsbCk7CiAKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0
ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwo
dmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0
cigpKSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwp
KTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAt
NDg2Niw3ICs0ODc3LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAK
LSAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKKyAgICB9CisK
KyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGlu
Z1Jlc3VsdCgpOworICAgICAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhh
dCBwcm9taXNlIGhlcmUuCisgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBu
dWxscHRyLCBtX291dC5hYm92ZShyZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RU
b0ludDMyKHJlc3VsdCkpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworICAgICAgICBzZXRT
dHJpY3RJbnQ1MihyZXN1bHQpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldFByb3RvdHlw
ZU9mKCkKQEAgLTUwNTQsOCArNTA3OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5
cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBM
VmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAg
ICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShs
ZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3Ro
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CkBAIC01MDY0LDYgKzUwOTAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAg
IHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXco
KSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5n
dGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkg
ewpAQCAtNTEwOCw3ICs1MTQxLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBv
dXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAog
ICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29t
cGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpCisgICAgeworICAgICAgICAvLyBTaWduLWV4dGVuZGVk
IHRvIGFsc28gY2F0Y2ggbmVnYXRpdmUgaW5kaWNlcworICAgICAgICBMVmFsdWUgaW5kZXggPSBt
X291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAg
TFZhbHVlIGxlbmd0aCA9IGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVP
ckVxdWFsKGluZGV4LCBsZW5ndGgpKTsKKworICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBjbGFp
bSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBubyB1c2VyIG9mIHVzIHNob3VsZAorICAgICAgICAv
LyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlzIG5vZGUganVzdCBuZWVkIHRvIG1h
aW50YWluIHRoYXQKKyAgICAgICAgLy8gd2UgZG9taW5hdGUgdGhlbS4KKyAgICB9CisKICAgICBM
VmFsdWUgY29tcGlsZUdldEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50
aWMpOwpAQCAtNjAwOCwxMSArNjA1MywxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAg
ICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goCi0gICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgs
IGxvd0ludDMyKGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0
T2ZCb3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAgICAgICAgICAKKwor
ICAgICAgICAgICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92
ZU9yRXF1YWwobV9vdXQuc2lnbkV4dDMyVG82NChpbmRleCksIGxvd1N0cmljdEludDUyKGNoaWxk
NSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbiA9IG1fb3V0LmFib3ZlT3JFcXVhbChpbmRl
eCwgbG93SW50MzIoY2hpbGQ1KSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3V0T2ZCb3VuZHNDb25kaXRpb24sIHVuc3VyZShpc091
dE9mQm91bmRzKSwgdW5zdXJlKGlzSW5Cb3VuZHMpKTsKKwogICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGlzT3V0T2ZC
b3VuZHMpOwogICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZSh2YWx1ZVRvU3RvcmUsIHBv
aW50ZXIsIHN0b3JlVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKQEAgLTgxNjksOTUgKzgyMTksMTggQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFs
dWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVl
IHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsK
IAotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9
IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKAotICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIo
SlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJl
bHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xv
d0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAg
IG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0Vs
ZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0
LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5j
b25zdEludFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5z
dGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAg
c3RvcmFnZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAg
ICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQ
dHIoMykpKSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAg
ICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4
dFB0cihzaXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0
ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0
aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAg
YXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6
U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5n
cHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5
UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAg
fQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9v
dXQuYW5jaG9yKHN0b3JhZ2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVl
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZp
bmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAj
IyBuYW1lOiBcCi0gICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmpl
Y3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNl
KTsgXAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURf
QVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1
bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3
OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0
YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1f
b3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIo
RmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVz
dWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAg
ICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
LSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAg
ICAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBu
b1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0
eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAg
ICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAg
ICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBS
ZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxv
Y2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0
aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sy
XS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXpl
LCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1Miht
X25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVy
VHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlw
ZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
c2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODI3Nyw3ICs4MjUw
LDEwMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBl
IHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBM
QmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAg
ICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1f
b3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAg
ICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENh
c2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2Yg
dGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAg
c3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0
U2l6ZUxpbWl0KSk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1f
b3V0LnNobChzaXplNjRCaXRzLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVk
QXJyYXlUeXBlKSkpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwg
OCkgeworICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAg
ICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAg
ICAgICB9CisKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0o
KS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwor
ICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93
Q2FzZSk7CisKKyAgICAgICAgc3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAg
ICAgICAgICBtX291dC5pbnQzMlplcm8sCisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMiht
X291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAg
bV9vdXQuaW50NjRaZXJvLAorICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGll
cyk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgICAgICB7CisgICAgICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Cisg
ICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAg
ICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChC
Mzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0
ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1z
WzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGppdC50YWdBcnJh
eVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgor
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3Jh
Z2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAg
ICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FT
RShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0
UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwg
bV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FS
UkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2Fz
ZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9i
amVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBz
LkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0
Qml0cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSks
IGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAg
ICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlv
bik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUo
KSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAg
ICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
TmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVj
dEdQUigpLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7Cisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3Vs
dFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVl
KG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKTsKQEAgLTE0NjU2LDYgKzE0NzIyLDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH0KIAorICAgIC8vIGJhc2UgYW5kIHZhbHVlIGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFy
ZSAzMi1iaXRzCisgICAgLy8gc3RvcmVzIHZhbHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3
ZWVuIGJhc2UrYmVnaW4qOCBhbmQgYmFzZStlbmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFs
dWUgYmFzZSwgTFZhbHVlIGJlZ2luLCBMVmFsdWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFi
c3RyYWN0SGVhcCYgaGVhcCkKICAgICB7CiAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGlu
Z0xpbWl0ID0gMTA7CkBAIC0xNTU5MSw3ICsxNTY1OSw4IEBAIHByaXZhdGU6CiAKICAgICAgICAg
RGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCi0gICAgICAgIExW
YWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRh
dGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBzcGVj
dWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5k
ZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0
LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xl
bmd0aCk7CiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGlu
ZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhU
b0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5
dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyArMTU4MDMsOCBAQCBwcml2YXRlOgogCiAgICAgICAg
IERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAotICAgICAgICBM
VmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShk
YXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgc3Bl
Y3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGlu
ZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOwogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihp
bmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4
VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5i
eXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3MzA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
YXV0byBkb1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0cikgewogI2lmIENQVShB
Uk02NEUpCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7Ci0g
ICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAg
ICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4g
bG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9p
bnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9h
ZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsg
cmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRp
dmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2
NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAg
ICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDI1MjBmOGNjNDQ1Ni4uODcyMzAy
MmU5YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0Vt
aXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04MywyMyArODMsMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
OjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAg
IHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5z
aWM6IHsKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1
ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAg
ICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQu
Ym94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0
ZUxlbmd0aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBDUFUoUkVH
SVNURVI2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0
ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BS
KTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkKKyAgICAgICAgICAgIGppdC5s
c2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7Cisg
ICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIs
IHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAx
KSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSB3ZSBU
eXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMy
LgotICAgICAgICAgICAgaml0LmxzaGlmdDMyKHZhbHVlR1BSLCBJbW0zMihsb2dFbGVtZW50U2l6
ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlm
dCBoZXJlIHNpbmNlIG9uIDMyLWJpdCBwbGF0Zm9ybXMgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUg
Ynl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KKyAgICAgICAgICAgIGppdC5sc2hp
ZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CiAgICAg
ICAgIH0KLQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5k
aWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTMwLDggKzEzOSwxMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRy
aW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAgICAgICBqaXQubW92
ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBk
b25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAorCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgICAg
IGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRl
LnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1
ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IDRhNWMwODBjMDYwYy4uZmFjOGUwYWM2NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQg
cHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUs
IEpTVmFsdWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVp
Y2tseShpLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2ts
eSh2bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlj
a2x5KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAg
ICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MiwyMSArMjM0
MCwyMiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQz
MigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Cisg
ICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VW
YWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+
Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBh
c1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAg
ICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRP
dXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7
CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAg
ICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50
MzJfdD4oaSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2ts
eShpKTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5k
ZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKIAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAK
LSAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRp
Z3VvdXMgJiYgaSA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0
dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRl
eGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzCisgICAgICAgICAgICAgICAgJiYgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3Ro
KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9y
YWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJsZToKICAgICAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCiAgICAgICAgICAgICAgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwpAQCAtMjM3Miw4
ICsyMzcxLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChpID49IDApCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0
KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkg
JiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9m
aWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNDFjNzFiNjAwNDRlLi4zYWMyZjAx
MGM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsxNDksMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01f
QklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBDUFUoUkVHSVNURVI2NCkKKyNkZWZpbmUgT0ZGTElO
RV9BU01fUkVHSVNURVI2NCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9SRUdJU1RFUjY0
IDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQURE
UkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCA1NjgxMzc3YmI5ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3LDggKzEw
NDcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxl
LT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVl
KTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAg
ICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJh
eVByb2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAg
IGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0ICsxMTcw
LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpT
VmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVy
dHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUu
bV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlz
U3RyaWN0KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwogICAgIAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNj
cmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRl
eDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmpl
Y3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0
LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGlmICghb2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJp
Y3RNb2RlKTsKICAgICAgICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXgg
YjQyMWE3ZmE0MTBlLi5mYzE2ZWViNGVkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAg
aWYgSlNWQUxVRTY0CiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0
ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2lu
dGVyCiBlbmQKIAoraWYgUkVHSVNURVI2NAorICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExl
bmd0aCA9IGNvbnN0ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3Ro
CitlbmQKKwogY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIg
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4g
b3IgQVJNNjQgb3IgQVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3Jv
IGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3Jh
dGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRl
eGluZ1R5cGUKIGVuZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZp
bmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUg
dGhhdCBpbmRleCBpcyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0
aC4KK21hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlW
YWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQog
ICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhp
cyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxs
OjptX3R5cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAt
MTMyMSwxMyArMTMyNiwyMiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgs
IGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0
RQogICAgICAgICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcK
LSAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgK
LSAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgbG9hZHEgSlNB
cnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgYnFhZXEgaW5k
ZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICBlbHNpZiBSRUdJU1RFUjY0CisgICAgICAgICMgbGVu
Z3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5j
aCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAg
YnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgK
ICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5
IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90
aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKICAgICBlbmQKIAorICAgIGlmIFJFR0lTVEVSNjQKKyAg
ICAgICAgYnFiZXEgaW5kZXgsIFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCwgLnNtYWxsVHlwZWRB
cnJheQorICAgICAgICBzZXRMYXJnZVR5cGVkQXJyYXkoKQorLnNtYWxsVHlwZWRBcnJheToKKyAg
ICBlbmQKKwogICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3RvcltiYXNlXSwgdDMK
ICAgICBjYWdlZFByaW1pdGl2ZSh0MywgbGVuZ3RoLCBiYXNlLCBzY3JhdGNoKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCmluZGV4IDUwZDVkYmRmNjAyYS4uNjc4ZWM2NGM2NzRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNw
YXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBl
ZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAu
b3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50
R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBtYWNybyAoKSBlbmQsIC5vcEdldEJ5VmFs
U2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ4NGI2ZWFkMzdmZC4uNDg1NDcwMWQ4ZWVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEzLDE2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQK
IAorICAgIGlmIFJFR0lTVEVSNjQKKyAgICAgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkK
KyAgICAgICAgICAgIHN0b3JlYiAxLCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2Zp
bGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheVt0NV0KKyAgICAgICAgZW5kCisgICAgZWxzZQorICAg
ICAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJyYXkoKQorICAgICAgICAgICAgY3Jhc2goKQorICAg
ICAgICBlbmQKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKIAogICAgIGdldChtX2Jh
c2UsIHQyKQpAQCAtMTcyMyw3ICsxNzMzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAog
ICAgIGdldChtX3Byb3BlcnR5LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIo
c2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgc3hpMnEgdDEsIHQxCisgICAgc3hp
MnEgdDEsIHQxICMgVGhpcyBzaWduLWV4dGVudGlvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5n
IGluIGdldEJ5VmFsVHlwZWRBcnJheSB3b3JrIGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAKICAg
ICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJU
YWcpCiAgICAgbW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwpAQCAtMTc2Myw3ICsxNzczLDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90
SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50
R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0
QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdl
dEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlW
YWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzli
OGYyYTcxOTFlLi5mOGU0YWMzYTRlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZv
aWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAg
ICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCkuY29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1No
YXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCog
ZGF0YSwgVUNQVVJlZ2lzdGVyIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYg
ZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9y
KFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3
ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlC
dWZmZXJDb250ZW50cyYmIG90aGVyKQogICAgIG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQog
Ci1BcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVu
c2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3Ry
dWN0b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRh
dGEsIFVDUFVSZWdpc3RlciBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwg
bV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKIHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQg
QXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQog
Ci12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGlj
eSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoVUNQVVJlZ2lzdGVyIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5
IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3QgYWxsb3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0
b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3Rh
bFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFs
U2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhf
QVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVja2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZs
b3c+IHNpemVJbkJ5dGVzID0gbnVtRWxlbWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVu
dEJ5dGVTaXplOworICAgIGlmIChzaXplSW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUlu
Qnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgp
OworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRp
Y19jYXN0PHNpemVfdD4obnVtRWxlbWVudHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50
Qnl0ZVNpemUpOwotICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisg
ICAgVUNQVVJlZ2lzdGVyIGFsbG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAg
ICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAgICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1h
a2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28g
bXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAK
ICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZl
LCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0
ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwog
ICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0x
MzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09
IFplcm9Jbml0aWFsaXplKQogICAgICAgICBtZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUp
OwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMg
PSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMg
PD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZl
cjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAg
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYg
b3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQob3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJS
QVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0
ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5
MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlC
dWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEo
KSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVDUFVS
ZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJj
ZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yMDgsNyArMjA2LDcgQEAgUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJiBj
b250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQg
Y2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5IGNvbWUKIC8vICAgZnJvbSB0aGUg
Y2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyIGJ5dGVM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVkKCkgfHwgKEdpZ2FjYWdl
Ojpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUZy
b21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VE
ZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0
CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNlIGEgbmV3IHNldCBvZiB0
eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQgYWNjZXNzZWQKIC8vICAg
ZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3VsZCBhbGxvY2F0ZSBmcm9t
IHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVz
KGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0
aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAgIGlm
IChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRhKSkK
ICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5LDcg
KzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShXVEZN
b3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQor
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKFVDUFVSZWdpc3RlciBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJu
IHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsK
ICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9j
YXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsK
QEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJu
IGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwog
fQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKFVDUFVSZWdpc3RlciBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUo
bnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udElu
aXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKFVDUFVSZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kg
cG9saWN5KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFVDUFVSZWdpc3Rl
ciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0
cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAo
IWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAg
ICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVu
dHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBj
b250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkKIHsK
LSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFk
b3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHko
YnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgp
IHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEo
KSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAot
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5
KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5
QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3
ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYm
IGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3Vi
bGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCitVQ1BVUmVnaXN0ZXIgQXJyYXlC
dWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIFVDUFVSZWdpc3RlciBsZWZ0LCBVQ1BVUmVnaXN0
ZXIgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVm
dCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShk
b3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9
CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QK
K1VDUFVSZWdpc3RlciBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBVQ1BV
UmVnaXN0ZXIgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAw
KQogICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xh
bXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAog
ICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVM
ZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0
aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KFVDUFVSZWdp
c3RlciBiZWdpbiwgVUNQVVJlZ2lzdGVyIGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXpl
ID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOworICAgIFVDUFVSZWdpc3RlciBzaXpl
ID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJl
Z2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdN
b2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJhLi5iMGFlNTZiZTU4ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJ
bnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVmaW5lIE1BWF9B
UlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAzMikKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVDUFVS
ZWdpc3RlcikgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisjZWxzZQorLy8gQmVjYXVzZSB3ZSBhcmUg
dXNpbmcgYSBVQ1BVUmVnaXN0ZXIgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkg
YnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBO
b3RlIHRoYXQgc3RvcmluZyB0aGUgc2l6ZSBpbiBhIHVpbnQ2NF90IHdvdWxkIGJlIHF1aXRlIG1l
c3N5IG9uIDMyLWJpdHMgYXMgdGhlIEpJVCBoYXZlIHRvIGJlIGFibGUgdG8gbWFuaXB1bGF0ZSBp
dC4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9yeSBi
ZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVzLgog
I2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBjbGFz
cyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNjAsNyBAQCB1c2luZyBQYWNrZWRB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoK
LSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHModm9pZCogZGF0YSwgVUNQVVJlZ2lzdGVyLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JG
dW5jdGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAg
IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUlu
Qnl0ZXMpOyB9CkBAIC02MCwxNCArNjksMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlw
ZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAg
ICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24gbV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgVUNQVVJl
Z2lzdGVyIG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXpl
SW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgc2l6
ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYm
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0o
QXJyYXlCdWZmZXJDb250ZW50cyYmKTsKQEAgLTc5LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZv
aWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVz
KCkpOyB9Ci0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJ
bkJ5dGVzOyB9CisgICAgVUNQVVJlZ2lzdGVyIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplSW5CeXRlczsgfQogICAgIAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVy
biBtX3NoYXJlZDsgfQogICAgIApAQCAtOTQsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
RG9udEluaXRpYWxpemUKICAgICB9OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGlj
eSk7CisgICAgdm9pZCB0cnlBbGxvY2F0ZShVQ1BVUmVnaXN0ZXIgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZv
aWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgdHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRz
Jik7CkBAIC0xMDUsMjggKzExNCwyOCBAQCBwcml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsK
ICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAg
ICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAg
IHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgVUNQVVJlZ2lzdGVyIG1fc2l6ZUluQnl0ZXM7
CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxB
cnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50
cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJv
bUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lk
KiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIFVD
UFVSZWdpc3RlciBieXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVnaXN0ZXIgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChVQ1BVUmVn
aXN0ZXIgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxp
bmUgdm9pZCogZGF0YSgpOwogICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0g
ICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgVUNQVVJl
Z2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdDsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsK
ICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3
LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhD
bGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgo
VUNQVVJlZ2lzdGVyIGJlZ2luLCBVQ1BVUmVnaXN0ZXIgZW5kKSBjb25zdDsKICAgICAKICAgICBp
bmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTYxLDEyICsx
NzAsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U2hhcmVk
VGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0
aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50
ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwotICAg
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKFVDUFVS
ZWdpc3RlciBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwg
VUNQVVJlZ2lzdGVyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUo
VUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihB
cnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRv
dWJsZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVl
KGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIFVD
UFVSZWdpc3RlciBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlu
bGluZSBVQ1BVUmVnaXN0ZXIgY2xhbXBWYWx1ZShkb3VibGUgeCwgVUNQVVJlZ2lzdGVyIGxlZnQs
IFVDUFVSZWdpc3RlciByaWdodCk7CiAKICAgICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwog
CkBAIC0xOTIsNyArMjAxLDcgQEAgY29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25z
dAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRhdGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZm
ZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQVVJlZ2lzdGVyIEFycmF5QnVmZmVyOjpieXRlTGVu
Z3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZW50cy5zaXplSW5CeXRlcygpOwogfQpA
QCAtMjA1LDcgKzIxNCw3IEBAIGJvb2wgQXJyYXlCdWZmZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNp
emVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBzY2FsZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVm
IGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0
YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gc2l6ZW9mKEFycmF5
QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAogdm9pZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmlu
ZGV4IDc2OGZlYTkwOWJhYi4uZWIwNTA5ZWNkY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTggKzI1LDE3IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRl
IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVm
ZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdp
c3RlciBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zmc2V0KQogICAg
ICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9ieXRlTGVuZ3RoKGJ5dGVM
ZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewotICAgIENoZWNr
ZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOworICAgIENo
ZWNrZWQ8VUNQVVJlZ2lzdGVyLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zmc2V0KTsK
ICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBp
ZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uMDBlZGNkMzg0N2YyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApA
QCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3QK
KyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5
dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNl
dERldGFjaGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVy
biBtX2lzRGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBl
ciB0byB2ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29s
IHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNp
emUpCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChVQ1BVUmVnaXN0
ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICEoYnl0ZU9mZnNldCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRl
T2Zmc2V0ICYgKGVsZW1lbnRTaXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2
ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8v
IHdpdGhpbiByYW5nZS4KLSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25z
dCBBcnJheUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1F
bGVtZW50cywgc2l6ZV90IHNpemUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2
ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0
aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBV
Q1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZm
ZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGJ1ZmZl
ci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVu
dHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6ZTsKKyAgICAgICAgVUNQVVJlZ2lz
dGVyIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHN0YXRp
Y19jYXN0PFVDUFVSZWdpc3Rlcj4oZWxlbWVudFNpemUpOwogICAgICAgICBpZiAobnVtRWxlbWVu
dHMgPiByZW1haW5pbmdFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMgKzExMyw0OCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0
KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVm
ZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0
ZXIgYnl0ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmll
dyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlC
dWZmZXJWaWV3KiwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wg
c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5z
aWduZWQgYnl0ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwor
ICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0
ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUg
Ym9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIFVDUFVSZWdpc3RlciBkYXRhQnl0
ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgemVy
b1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsK
LQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAg
ICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLAotICAgICAgICB1bnNp
Z25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFu
Z2VJbXBsKFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgcmFuZ2VCeXRlTGVu
Z3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxlbWVudHMgZnJv
bSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGluIG51bWJlciBv
ZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cygK
ICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwKLSAgICAgICAgdW5zaWduZWQgYXJy
YXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAgICAgICB1bnNpZ25l
ZCAqbnVtRWxlbWVudHMpCisgICAgICAgIFVDUFVSZWdpc3RlciBhcnJheUJ5dGVPZmZzZXQsCisg
ICAgICAgIFVDUFVSZWdpc3RlciAqb2Zmc2V0LAorICAgICAgICBVQ1BVUmVnaXN0ZXIgKm51bUVs
ZW1lbnRzKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0g
YXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIG1heE9m
ZnNldCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdpc3Rlcj46Om1heCgpIC0gYXJyYXlC
eXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQp
IHsKICAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAg
ICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAg
ICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwot
ICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgp
IC0gKm9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIENoZWNrZWQ8VUNQVVJlZ2lzdGVyLCBS
ZWNvcmRPdmVyZmxvdz4gYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3Rl
ZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0
ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBh
ZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAg
ICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVy
IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNp
emVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVu
dHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDog
MzE7CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisgICAgdWludDY0X3QgbV9ieXRlT2Zmc2V0IDogNjM7
CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNldCA6IDMxOworI2VuZGlmCiAgICAgYm9v
bCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9ieXRlTGVuZ3RoOworICAgIFVD
UFVSZWdpc3RlciBtX2J5dGVMZW5ndGg7CiAKICAgICB1c2luZyBCYXNlQWRkcmVzcyA9IENhZ2Vk
UHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAvLyBUaGlz
IGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMgdGhlIGJ5
dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwo
QXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlC
dWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIFVDUFVSZWdpc3RlciBi
eXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgpCi0gICAg
ICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNldCkgewot
ICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBieXRl
TGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWlu
dDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBt
ZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJyYXktPmJ5
dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3
OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1
bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChj
b25zdCB2b2lkKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgZGF0YUJ5dGVMZW5ndGgsIFVDUFVSZWdpc3Rl
ciBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAg
ICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAg
IC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxl
clRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRl
T2Zmc2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgQXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJW
aWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIFVDUFVSZWdpc3RlciBkYXRhQnl0
ZUxlbmd0aCwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQg
PiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4g
Ynl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5
dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdwor
ICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5n
dGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBj
b25zdCB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VBZGRy
ZXNzKCkpOwogICAgIG1lbW1vdmUoZGVzdGluYXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRh
Qnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3
Ojp6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5n
dGgpCitib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbChVQ1BVUmVnaXN0ZXIgYnl0
ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIHJhbmdlQnl0ZUxlbmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVu
Z3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5n
dGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3Zl
cmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIHJhbmdl
Qnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFk
ZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2UgKyBieXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5n
dGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3Vs
YXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJy
YXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKQotewotICAgIGlmIChz
dGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAw
KQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCArPSBh
cnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJyYXlTaXplKQotICAgICAgICBlbmQgPSBhcnJh
eVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQotICAgICAgICBlbmQgPSBzdGFydDsKLSAgICAq
b2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlND
CiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCA2ODgzYTE3YzQ3MmQuLmQzNjI0NTBh
MmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVj
dC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmFsaWRhdGVBdG9taWNB
Y2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU0FycgogICAgICAg
ICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJh
Y2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKICAg
ICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSA8PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOworCiAgICAgaWYgKGFjY2Vzc0luZGV4ID49IHR5cGVk
QXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBvdXQgb2YgYm91bmRzIGZvciBhdG9taWMgYWNjZXNz
LiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2NGFmMi4uN2IxZWQ3Y2Y1NjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIwICszMiwyMCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
CitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJl
Z2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogICAgIDogQXJyYXlC
dWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkKIHsKIH0K
IAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQs
IFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQogCiBS
ZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
cikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7Cisg
ICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICBy
ZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uZGU3
MTRiNjI1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6
IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJl
Z2lzdGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8
RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogICAgIAogICAgIFR5cGVk
QXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6
CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCopIGZpbmFsOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQo
dW5zaWduZWQgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0
cikKKyAgICBUIGdldChVQ1BVUmVnaXN0ZXIgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9v
bCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAg
ICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
ICAgIFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3Rh
dHVzID0gbnVsbHB0cikKKyAgICBUIHJlYWQoVUNQVVJlZ2lzdGVyJiBvZmZzZXQsIGJvb2wgbGl0
dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgVCByZXN1
bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7
CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMpCkBAIC02OCw3ICs2OCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1
bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMg
PSBudWxscHRyKQorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3RlciBvZmZzZXQsIFQgdmFsdWUsIGJv
b2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAg
aWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVM
ZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGJlN2U2YzA1MzRmYS4uYjI4Nzli
M2RmMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMywyNCArMzMsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVkQXJyYXlWaWV3IGZpbmFs
IDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZShVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNU
eXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lzdGVy
IGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsK
ICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQ
VVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgCiAg
ICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIAotICAg
IGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJyYXksIHVuc2lnbmVk
IG9mZnNldCkKKyAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIGFy
cmF5LCBVQ1BVUmVnaXN0ZXIgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldEltcGwo
YXJyYXksIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0
YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXRSYW5nZShjb25z
dCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBVQ1BVUmVnaXN0ZXIgY291bnQsIFVDUFVS
ZWdpc3RlciBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksCkBAIC01OCwzOSAr
NTgsMzkgQEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWduZWQg
b2Zmc2V0LCBzaXplX3QgY291bnQpCisgICAgYm9vbCB6ZXJvUmFuZ2UoVUNQVVJlZ2lzdGVyIG9m
ZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIHplcm9SYW5n
ZUltcGwob2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpLCBjb3VudCAqIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgemVy
b0ZpbGwoKSB7IHplcm9SYW5nZSgwLCBsZW5ndGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdAorICAgIFVDUFVSZWdpc3RlciBsZW5ndGgoKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBy
ZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAg
IH0KIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0oVUNQVVJlZ2lzdGVyIGluZGV4KSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5k
ZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBkYXRhKClbaW5kZXhdOwogICAg
IH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25z
dAorICAgIHZvaWQgc2V0KFVDUFVSZWdpc3RlciBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAog
ICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0
aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSBBZGFwdG9yOjp0b05hdGl2
ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0TmF0aXZlKHVuc2lnbmVk
IGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0
TmF0aXZlKFVDUFVSZWdpc3RlciBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlu
ZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhdID0gdmFsdWU7CiAg
ICAgfQogCi0gICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBz
aXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIGdldFJhbmdlKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqIGRhdGEsIFVDUFVSZWdpc3RlciBjb3VudCwgVUNQVVJlZ2lzdGVyIG9m
ZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRSYW5nZUltcGwoCiAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSwKQEAgLTk4LDE4ICs5OCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwog
ICAgIH0KIAotICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVf
dCBjb3VudCkgY29uc3QKKyAgICBib29sIGNoZWNrSW5ib3VuZERhdGEoVUNQVVJlZ2lzdGVyIG9m
ZnNldCwgVUNQVVJlZ2lzdGVyIGNvdW50KSBjb25zdAogICAgIHsKLSAgICAgICAgdW5zaWduZWQg
bGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0IDw9IGxlbmd0
aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAv
LyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0
KTsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKG9mZnNldCwgY291bnQs
IHRoaXMtPmxlbmd0aCgpKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAog
ICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAg
cmV0dXJuIEFkYXB0b3I6OnR5cGVWYWx1ZTsKQEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopIGZpbmFsOwogCiBwcml2YXRlOgotICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgVUNQVVJlZ2lz
dGVyIGJ5dGVPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYWU1YmRkOGM2YTMxLi41OWM2OWUz
MTIyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciks
IGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsK
KyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPFVDUFVSZWdpc3Rlcj46Om1heCgpKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1Jl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKFVDUFVSZWdpc3RlciBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQg
PSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNDcs
NyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKiBhcnJheSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9
IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpA
QCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lz
dGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
ciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAg
LTY0LDcgKzY1LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZShVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGF1dG8gYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAgIGlmICghcmVzdWx0KQpAQCAtODUs
NyArODYsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BV
UmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoVUNQVVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZChVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
LCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwpAQCAtMTE4LDI1ICsxMTksNiBAQCBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBs
ZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJhcnJheShzdGFydCwg
bGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAgIHVuc2lnbmVkIG9m
ZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0
aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiB0cnlDcmVhdGUoYnVmZmVyLCBvZmZz
ZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0FycmF5QnVm
ZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp3cmFwKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4uMjdhOTc3OWY0OTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyVmlldzo6c19pbmZvID0gewog
fTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdm9p
ZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVnaXN0ZXIgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX3Zl
Y3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTU0LDcgKzU0
LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpD
b25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVp
bnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsCisgICAgVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUs
CiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRy
KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNjMsNyArNjMsNyBAQCBKU0FycmF5QnVmZmVy
Vmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBpZiAo
bGVuZ3RoIDw9IGZhc3RTaXplTGltaXQpIHsKICAgICAgICAgLy8gQXR0ZW1wdCBHQyBhbGxvY2F0
aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwotICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVPZihs
ZW5ndGgsIGVsZW1lbnRTaXplKTsKKyAgICAgICAgVUNQVVJlZ2lzdGVyIHNpemUgPSBzaXplT2Yo
bGVuZ3RoLCBlbGVtZW50U2l6ZSk7CiAgICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCF0ZW1wKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0byB1c2UgbW9yZSB0
aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgp
IC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0ZXIsIFJlY29yZE92ZXJmbG93
PiBzaXplID0gbGVuZ3RoOworICAgIHNpemUgKj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUu
aGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9yID0g
VmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUp
LCBsZW5ndGgpOworCisgICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxs
b2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAo
IW1fdmVjdG9yKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAg
ICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwgc2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVt
ZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplLnZh
bHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9kZSA9
IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1
ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAg
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5
QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBV
Q1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCkKICAgICA6IG1fc3Ry
dWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShX
YXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQsNyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6
OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0g
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAg
ICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgRGF0YVZpZXdU
YWcpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgp
CiAgICAgLCBtX21vZGUoRGF0YVZpZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMg
aW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVu
dFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAorVUNQVVJlZ2lzdGVyIEpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNr
ZWQ8VUNQVVJlZ2lzdGVyPiByZXN1bHQgPSBsZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVu
dFNpemUodHlwZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8v
IFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3Ry
dWN0b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMg
YXJlIGVuYWJsZWQuCiAgICAgcmV0dXJuIGxlbmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsK
KyNlbmRpZgogfQogCiBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5k
V2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVm
ZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZm
ZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBV
Q1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRj
aCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0VHlwZWRBcnJheTogewpAQCAtMzE1LDggKzMyMiw4
IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNo
YXJlZEltcGwoKQogICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZl
cigpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0ID0gdGhpcy0+
Ynl0ZU9mZnNldCgpOworICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsK
ICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNl
IHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCBkZDAxZjdmODJhNTMuLjQ2NzBiNDZkOGI3NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFz
dFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBVQ1BVUmVnaXN0ZXIgZmFz
dFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNpbmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2
b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTExNywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90
IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRp
YyBVQ1BVUmVnaXN0ZXIgc2l6ZU9mKFVDUFVSZWdpc3RlciBsZW5ndGgsIHVuc2lnbmVkIGVsZW1l
bnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0
aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKQotICAgICAgICAg
ICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAgICAgICAgQ2hlY2tlZDxVQ1BV
UmVnaXN0ZXI+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXpl
OworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDE7CisgICAgICAg
IHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+
IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVjdGVkOgogICAgIHB1
YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJvRmlsbCwgRG9udElu
aXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVj
dGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVs
ZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVn
aXN0ZXIgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0g
WmVyb0ZpbGwpOwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1
Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRo
LgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0
aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUq
LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwg
U3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgICAgIFVDUFVSZWdpc3RlciBi
eXRlT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0g
RGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAog
ICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7Cisg
ICAgICAgICAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwg
RGF0YVZpZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQot
ICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAg
ICAgICBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAg
ICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAg
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9
CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0
dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlw
ZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgICAgIFVDUFVSZWdp
c3RlciBtX2xlbmd0aDsKICAgICAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBC
dXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAgIH07CkBAIC0xOTAsMTEgKzE5MiwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVO
dWxsKGxlbmd0aCgpKTsgfQogICAgIHZvaWQqIHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0VW5zYWZlKCk7IH0KICAgICAKLSAgICBpbmxpbmUg
dW5zaWduZWQgYnl0ZU9mZnNldCgpOwotICAgIGlubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgaW5saW5lIFVDUFVSZWdpc3RlciBieXRl
T2Zmc2V0KCk7CisgICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBieXRlT2Zm
c2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBVQ1BV
UmVnaXN0ZXIgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBVQ1BVUmVn
aXN0ZXIgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKICAg
ICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0
aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3RvclB0ciBtX3ZlY3RvcjsKLSAgICB1
aW50MzJfdCBtX2xlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9sZW5ndGg7CiAgICAgVHlwZWRB
cnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCAxZDA3MmI3MWFjYjcu
LjYzMTgxNTVlNjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKQEAgLTk5LDcgKzk5LDcgQEAgaW5saW5l
IFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICBwdHJk
aWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3RvcldpdGhv
dXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgp
KTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWx0YSk7
CisgICAgVUNQVVJlZ2lzdGVyIHJlc3VsdCA9IHN0YXRpY19jYXN0PFVDUFVSZWdpc3Rlcj4oZGVs
dGEpOwogICAgIGlmIChyZXF1ZXN0ZXIgPT0gTXV0YXRvcikKICAgICAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSA9PSBkZWx0YSk7CiAgICAgZWxzZSB7CkBAIC0xMTAs
MTQgKzExMCwxNCBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9m
ZnNldEltcGwoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBKU0Fy
cmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCitpbmxpbmUgVUNQVVJlZ2lzdGVyIEpTQXJyYXlC
dWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0
YXRvciwgdW5zaWduZWQ+KCk7CisgICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIFVD
UFVSZWdpc3Rlcj4oKTsKIH0KIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJy
YXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKK2lubGluZSBzdGQ6Om9wdGlv
bmFsPFVDUFVSZWdpc3Rlcj4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50
bHkoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29uY3Vy
cmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDxVQ1BVUmVnaXN0ZXI+PigpOwogfQogCiBpbmxpbmUg
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYg
dm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKaW5kZXggYjFlYTlkYTBmZTRjLi5lNWJkZmM2ODc4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTm9ubW92YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKQEAg
LTI5OCw2ICsyOTksNyBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCB0b0ludDMyKEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9VSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25z
dDsKICAgICB1aW50MzJfdCB0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJy
b3JOYW1lKSBjb25zdDsKKyAgICBVQ1BVUmVnaXN0ZXIgdG9UeXBlZEFycmF5SW5kZXgoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OwogICAgIGRvdWJsZSB0b0xl
bmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIxNDYwYTBk
Li44MGMyM2Y2YzY5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjksMTQgKzY5LDQ3IEBAIGlubGluZSB1aW50MzJfdCBK
U1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIq
IGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3Qg
YmUgbmVnYXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGQgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKKworICAgIGlmIChpc0ludDMy
KCkpCisgICAgICAgIHJldHVybiBhc0ludDMyKCk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0
PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkgewogICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6
OnRvSW50MzIoZCkpOworfQorCitpbmxpbmUgVUNQVVJlZ2lzdGVyIEpTVmFsdWU6OnRvVHlwZWRB
cnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9y
TmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBkID0gdG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsK
KyAgICBpZiAoZCA8PSAtMSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5h
bWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7CisKKyAgICBpZiAoZCA+IHN0
YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSkgeworICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxsIG9mIHRoaXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0
byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBvbiAxPDwzMi4KKyAgICBVQ1BVUmVnaXN0ZXIgb3V0
cHV0T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUgaW5wdXRPZmZzZXQgPSAwOworICAgIFVDUFVSZWdp
c3RlciBpbnQzMk1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpOworICAg
IGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnQzMk1heCkpIHsKKyAgICAgICAgb3V0cHV0
T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgICAgIGlucHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAg
fQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3V0cHV0T2Zmc2V0ICsgc3RhdGljX2Nh
c3Q8VUNQVVJlZ2lzdGVyPihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNDOjp0b0ludDMyKGQgLSBp
bnB1dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9p
bnRlZ2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjkuLjk4NWQ5ZTI0NDk4MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpT
RGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0
LCBBcnJheUJ1ZmZlciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zmc2V0LCBVQ1BVUmVn
aXN0ZXIgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1
IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3Ojpj
cmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVUNQVVJlZ2lz
dGVyKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlcikKIHsKICAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBKU0Rh
dGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25l
ZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIFVDUFVS
ZWdpc3RlciwgSlNPYmplY3QqLCBVQ1BVUmVnaXN0ZXIsIFVDUFVSZWdpc3RlcikKIHsKICAgICBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
SlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkK
K2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBVQ1BVUmVnaXN0ZXIs
IEpTVmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4
IDJjNzg1ZTQ3NjExYS4uNWVlMWQ4NjE5ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAg
ICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCwKKyAgICAgICAgVUNQVVJlZ2lzdGVyIGJ5dGVMZW5ndGgpOwog
ICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMsIHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRo
ZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCiAgICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3aGVyZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3Jl
YXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBi
b29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0
YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNy
ZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3RlciBsZW5ndGgpOwor
ICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyLCBKU09iamVjdCosIFVD
UFVSZWdpc3RlciwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChKU0ds
b2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciwgSlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZm
ZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAg
ICBBcnJheUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkw
NjI0N2VhNjUuLmQ4Yzk5YzNjNjhhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYsMTEgKzEzNiwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmll
dyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5
dGVPZmZzZXQiKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBs
aXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBVQ1BVUmVnaXN0ZXIgZWxlbWVudFNpemUgPSBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAm
JiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVuZGlh
biA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3
LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZy
b20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5s
ZW5ndGgoKTsKKyAgICBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgo
KTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRl
TGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIs
NyArMTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIg
b2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5z
aWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxP
YmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgVUNQVVJlZ2lzdGVyIGJ5dGVPZmZzZXQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
Y29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CkBAIC0xOTUsNyArMTk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVu
ZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOworICAgIFVDUFVSZWdpc3RlciBlbGVtZW50U2l6ZSA9IHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0y
MDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0
YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUg
dmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgp
OworICAgIFVDUFVSZWdpc3RlciBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAg
IGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgg
LSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmlu
ZGV4IGMyMmM1NWEwZDgxZC4uMDU2ODM4YzllNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93
U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEw
IEBAIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlD
bGFzc0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAg
ICAgQnV0dGVyZmx5KiBCICAgICAvLyBmcm9tIEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUq
IFYKLS8vICAgICB1aW50MzJfdCBMCisvLyAgICAgVUNQVVJlZ2lzdGVyIEwKIC8vICAgICBUeXBl
ZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3Vy
IHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1
cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0
IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBCIGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3Rv
cmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZsb3ciIGRhdGEgZm9yCkBAIC0xMDMsMTUgKzEwNCwx
NSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXpl
ID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRl
V2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5n
dGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBj
cmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdpc3Rl
ciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0
aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBVQ1BVUmVnaXN0ZXIgbGVu
Z3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFVDUFVSZWdp
c3RlciBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBVQ1BV
UmVnaXN0ZXIgYnl0ZU9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCk7CiAgICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlw
ZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8
dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQg
Ynl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpOyB9Ci0gICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6
ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CisgICAgVUNQ
VVJlZ2lzdGVyIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQorICAgIFVDUFVSZWdpc3RlciBieXRlU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKTsgfQogICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVj
dG9yKCkgY29uc3QKICAgICB7CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsK
ICAgICB9CiAKLSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBp
bkJvdW5kcyhVQ1BVUmVnaXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwg
bV9sZW5ndGg7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0
Y2ggaW5kZXhlZCBhY2Nlc3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMg
LSBoZW5jZSB0aGUgc2xpZ2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShVQ1BVUmVn
aXN0ZXIgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFw
dG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhR
dWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJ
bmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRv
cjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QK
KyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUo
VUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClbaV07CiAgICAgfQogICAgIAotICAgIEpT
VmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJ
bmRleFF1aWNrbHkoVUNQVVJlZ2lzdGVyIGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
QWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUo
aSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUo
dW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKKyAgICB2b2lkIHNldElu
ZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoVUNQVVJlZ2lzdGVyIGksIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAg
ICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldElu
ZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhR
dWlja2x5KFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVW
YWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAgICAK
LSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFVDUFVSZWdpc3RlciBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAg
ICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRh
cHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVj
dCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJv
bVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmpl
Y3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRU
eXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1Zh
bHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihq
c1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0
b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+
KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsy
MDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NS
YW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBj
YW5BY2Nlc3NSYW5nZVF1aWNrbHkoVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQVVJlZ2lzdGVyIGxl
bmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAg
ICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sg
b3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAg
ICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGxlbmd0aCwgbV9sZW5n
dGgpOwogICAgIH0KICAgICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYg
aXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBl
eGNlcHRpb24uCi0gICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0ds
b2JhbE9iamVjdCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgpOwog
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsg
aWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBl
eGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQs
IEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlU
eXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2Jh
bE9iamVjdCosIFVDUFVSZWdpc3RlciBvZmZzZXQsIEpTT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9i
amVjdE9mZnNldCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUgPSBDb3B5VHlwZTo6VW5v
YnNlcnZhYmxlKTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMyMiw4IEBAIHByaXZh
dGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJv
cjsgaXQgd2lsbCB0aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFk
YXB0b3I+CiAgICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAgICBKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFw
dG9yPiosCi0gICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBD
b3B5VHlwZSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgVUNQVVJlZ2lzdGVyIG9mZnNldCwg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAgIFVDUFVSZWdp
c3RlciBvYmplY3RPZmZzZXQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAg
IC8vIFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMgdGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJh
eXMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcg
KzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAg
ICBFbGVtZW50VHlwZSogYXJyYXkgPSB0eXBlZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIg
aSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQogICAgICAgICAgICAgYXJyYXlbaV0gPSBwdXJpZnlO
YU4oYXJyYXlbaV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmgKaW5kZXggZDI1ODQwNjdlODNmLi5lZWRhNTVlM2NhMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTQzLDcgKzE0
Myw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklm
TmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZp
ZXdDbGFzcz4KLWlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJn
dW1lbnQsIFVDUFVSZWdpc3RlciBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8VUNQVVJlZ2lzdGVyPiBs
ZW5ndGhPcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbmxp
bmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMo
SlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IH0KIAotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgICAgICBVQ1BVUmVnaXN0ZXIg
bGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGxlbmd0aE9wdCkKICAgICAgICAgICAgIGxlbmd0aCA9
IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBp
bmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIC8vIC0gQSBwcmltaXRpdmUuIFRoaXMgY3JlYXRl
cyBhIG5ldyB0eXBlZCBhcnJheSBvZiB0aGF0IGxlbmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBp
dC4KIAogICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+
KHZtLCBmaXJzdFZhbHVlKSkgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgICAgIFVD
UFVSZWdpc3RlciBsZW5ndGg7CiAgICAgICAgIEpTQXJyYXlCdWZmZXIqIGN1c3RvbUJ1ZmZlciA9
IG51bGxwdHI7CiAKICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG9iamVjdC0+Y2xhc3NJbmZvKHZt
KS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkgewpAQCAtMjUwLDcgKzI1MCw3IEBAIGlubGluZSBK
U09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0ds
b2JhbE9iamVjdCogZ2xvCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5z
aWduZWQgbGVuZ3RoID0gZmlyc3RWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIp
OworICAgIFVDUFVSZWdpc3RlciBsZW5ndGggPSBmaXJzdFZhbHVlLnRvVHlwZWRBcnJheUluZGV4
KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgVmlld0NsYXNzOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCkpOwogfQpAQCAtMjc1LDggKzI3NSw4
IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICB9CiAKICAgICBKU1ZhbHVlIGZpcnN0VmFs
dWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIHVuc2lnbmVkIG9mZnNl
dCA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0
OworICAgIFVDUFVSZWdpc3RlciBvZmZzZXQgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNQVVJl
Z2lzdGVyPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNB
cnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAgICAg
b2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGdsb2JhbE9i
amVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODUsNyArMjg1LDcgQEAgQUxXQVlTX0lOTElORSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2Jq
ZWN0KgogICAgICAgICAgICAgLy8gSWYgdGhlIGxlbmd0aCB2YWx1ZSBpcyBwcmVzZW50IGJ1dCB1
bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3NpbmcuCiAgICAgICAgICAgICBKU1ZhbHVlIGxlbmd0
aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICAgICAgICAgIGlm
ICghbGVuZ3RoVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgICAgIGxlbmd0aCA9
IGxlbmd0aFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlT
dG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7Cisg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xv
YmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZp
ZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwLi4wNTNj
ZmI1MWUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIKICNpbmNsdWRlICJUeXBlRXJy
b3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVUNQVVJl
Z2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBV
Q1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUs
IGxlbmd0aCwgdmVjdG9yKTsKQEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRo
RmEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5p
bml0aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBVQ1BVUmVn
aXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05OSwxMSArMTAwLDExIEBA
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFVDUFVSZWdpc3RlciBieXRlT2Zm
c2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgc2l6
ZV90IHNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAgVUNQVVJlZ2lz
dGVyIHNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgQVNTRVJUKGJ1
ZmZlcik7CiAgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpi
dWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJM
ZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgVUNQ
VVJlZ2lzdGVyIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2Uo
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFw
dG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNp
ZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZz
ZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVu
c2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJlZ2lzdGVyIG9mZnNldCwgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCisgICAgVUNQVVJlZ2lzdGVy
IG90aGVyT2Zmc2V0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyArMjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3Rp
bmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3RpbmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVu
dFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkp
CiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKFVDUFVS
ZWdpc3RlciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1
aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRh
cHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBv
dGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBA
IC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9y
ICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6
ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0
aDsgaS0tOykgeworICAgICAgICBmb3IgKFVDUFVSZWdpc3RlciBpID0gbGVuZ3RoOyBpLS07KSB7
CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAg
ICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+
KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1
ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAg
IC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBj
YXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2Zl
ckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgewor
ICAgIGZvciAoVUNQVVJlZ2lzdGVyIGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJhbnNm
ZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigK
ICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhl
ck9mZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisg
ICAgZm9yIChVQ1BVUmVnaXN0ZXIgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhR
dWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAg
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwg
SlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgs
IENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVUNQVVJl
Z2lzdGVyIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgVUNQVVJlZ2lzdGVyIG9iamVjdE9mZnNl
dCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsK
ICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUp
IHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNp
bmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6
IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAgbGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhl
ci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAgLTMxMiw5ICszMTMsMTEgQEAgYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ugd29u
J3QgZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBt
b3JlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihsZW5ndGgpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0T2Zm
c2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkpKTsKICAgICAgICAgLy8gV2UgY291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQg
cmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xv
YmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0KTsKKyAgICAgICAgZm9yIChVQ1BVUmVnaXN0ZXIg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9i
amVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RP
ZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
ICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0
ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKaW5kZXggNGMwZWJkMWY2MTY1Li5hOTc0NzM3M2M0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNjAsNiArNjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBn
ZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Ns
YXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNldHRlcjsK
IGNsYXNzIEludGVybmFsRnVuY3Rpb247CkBAIC0yMTEsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwot
ICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0g
ICAgICAgICAgICBzZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAg
ICAgICBpZiAodHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBtZXRob2RU
YWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yODksNyArMjg4LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25l
ZCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2ln
bmVkKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5z
aWduZWQsIEFycmF5UHJvZmlsZSogPSBudWxscHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNh
bkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgICAgIAotICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVk
IGkpIGNvbnN0CisKKyAgICAvLyBVc2VzIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8g
c2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgSlNW
YWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUgPSBudWxscHRyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5
cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAg
ICAgIGlmIChjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIGFycmF5UHJvZmlsZSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5H
X1RZUEVTOgogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTEsMzUgKzQxMSw3MyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0LCBpKTsKICAgICB9CiAKLSAgICBib29s
IGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0
OwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1
ZSk7Ci0gICAgICAgIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpT
VmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRl
eGluZ1R5cGUoVk0mLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSB0
byBpbmRpY2F0ZSBzdWNjZXNzCisgICAgLy8gVXNlIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2Zp
bGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50Cisg
ICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVl
LCBBcnJheVByb2ZpbGUqKTsKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2tseShWTSYgdm0sIHVu
c2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRy
KQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHko
KTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ01vZGUoKSkgewogICAgICAgICBjYXNlIEFMTF9C
TEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBjYW5TZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnlTZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHYsIGFycmF5UHJvZmlsZSk7CiAgICAgICAgIGNhc2Ug
QUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAg
IGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBB
TExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExf
V1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnRJ
bnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYp
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09O
VElHVU9VU19JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKHYpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7Cisg
ICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2KTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9J
TkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IXYuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3Vv
dXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFz
TnVtYmVyKCk7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0s
IGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1
ZTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJh
eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICAg
ICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOworICAgICAgICAgICAgaWYg
KGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGlu
Z1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2Ug
Tm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFy
cmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKQotICAgICAgICAgICAgICAgICYmICEhYnV0dGVy
Zmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBpZiAoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICBp
ZiAoaSA+PSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV0pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwg
aSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCisKICAg
ICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAg
ICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4
IDZlMWJiMWI1OWYxZS4uZWEzMDg4OWY1OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDIxICs0NjUsMTUgQEAgaW5saW5l
IGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQg
aSkgY29uc3QKICAgICB9CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpjYW5TZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0Citpbmxp
bmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25l
ZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHR5
cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAotICAgIGNhc2Ug
bmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBu
YW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOwotICAg
ICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9U
WVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19CisjaWYgQ1BVKFJFR0lTVEVSNjQp
CisgICAgaWYgKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYm
IGFycmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRB
cnJheSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTsKKyNlbmRpZgog
Ci1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1
bnNpZ25lZCBpKSBjb25zdAotewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIENBU0Vf
VFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCiAgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtc
CkBAIC01MTIsNyArNTA2LDUwIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiB9Ci0gICAgCisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNr
bHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHYpCit7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5KCktPmFy
cmF5U3RvcmFnZSgpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2UtPm1f
dmVjdG9yW2ldOworICAgIEpTVmFsdWUgb2xkID0geC5nZXQoKTsKKyAgICB4LnNldCh2bSwgdGhp
cywgdik7CisgICAgaWYgKCFvbGQpIHsKKyAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yOworICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKKyAgICAgICAgICAg
IHN0b3JhZ2UtPnNldExlbmd0aChpICsgMSk7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBKU09i
amVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVl
IHYsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7
CisjaWYgQ1BVKFJFR0lTVEVSNjQpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFy
cmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAgIGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFs
bFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJh
eVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNl
KQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBk
byB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBj
YXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBq
c0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRB
cnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAg
IFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4g
dHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RB
VEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9U
WVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQ
dXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4
OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVj
dCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAg
ICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5k
ZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0K
IAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRl
eChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFn
ZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5k
ZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMu
aD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JV
RkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50
MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU1YjdjZDQ2NjE4Ny4uZTZhYTdhMjBlYmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3Nl
dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAg
ICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBNYWRlIHNvbWUgb2YgQ2hlY2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQg
YWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2Vk
IHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVhc3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92
ZXJmbG93LgorCisgICAgICAgICogd3RmL0NoZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChX
VEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAoV1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAg
KFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwpOgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG5vbi1I
QVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxVQVRFKSBjb2RlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRC
aWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWdu
ZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VT
aWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJv
dW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
PiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBi
b29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBT
YW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGlu
Y3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9
IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8
VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5C
b3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhT
b3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGlj
aXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRl
c3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWlu
KCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgo
KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFs
dWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2
YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJp
Z2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBA
IC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291
cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8
VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGlu
Qm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMo
U291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBl
IGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4g
U291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxT
b3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3
Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3Vy
Y2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAg
ICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBz
dGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGlu
Qm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBz
YW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRy
dWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNp
c2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlm
IChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRy
dWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4K
ICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3Vy
Y2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2
YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RhdGljIGlubGluZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91
dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGlj
IGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0
JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAg
ICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEs
IFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBh
OworICAgIHN1bSArPSBiOworICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0u
dmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7
CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1
c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2lu
ZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMmM2ZDE1ZWRkMTNjLi4wODIzMTczZjg4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOCBAQAorMjAyMS0xMC0xMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJk
YXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAg
ICAgICAgU29tZSBwYXJ0cyBvZiBXZWJDb3JlIHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5v
dCBidWlsZCBhZnRlciBJIG1hZGUgdGhlIGxlbmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5
cyByZXR1cm4gVUNQVVJlZ2lzdGVyIGluc3RlYWQgb2YgdWludDMyX3QuCisgICAgICAgIE1vc3Qg
Zml4ZXMgd2VyZSB0cml2aWFsLCB0aGUgb25seSBleGNlcHRpb24gaXMgU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCwgd2hlcmUgSSBoYWQgdG8gaW5jcmVtZW50IHRoZSB2ZXJzaW9uIG51bWJlciwg
YXMgQXJyYXlCdWZmZXIgKGFuZCBBcnJheUJ1ZmZlclZpZXdzKSBub3cgd3JpdGUvcmVhZCB0aGVp
ciBsZW5ndGggaW4gYSA2NC1iaXQgZmllbGQgKGFuZCBzYW1lIGZvciB0aGUgYnl0ZU9mZnNldCBv
ZiBBcnJheUJ1ZmZlclZpZXcpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhlIGNvZGUg
aXMgYWxyZWFkeSBleHRlbnNpdmVseSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBhbmQgSSBp
bXBsZW1lbnRlZCBubyBuZXcgZmVhdHVyZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5RnJv
bUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5uZWwp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9tYWlu
RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEFycmF5QnVmZmVyVmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZpZXdJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJW
aWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAg
KiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6ZW5xdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T0JveC5oOgorCiAyMDIxLTEwLTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEhhdmUgdGhlIFNjcm9sbGluZ1RyZWUgdHJhY2sgbm9kZXMgd2l0aCBh
bmltYXRlZCBzY3JvbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gt
YXBpL1B1c2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hF
dmVudC5jcHAKaW5kZXggNDJiOGZlMjVlYjU3Li41YjEyYWFjOWFlNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hFdmVudC5jcHAKQEAgLTQzLDExICs0MywxNyBA
QCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFGcm9tUHVzaE1lc3NhZ2VEYXRhSW5pdChQdXNo
TWVzc2FnZURhdGFJbml0JiBkYXRhKQogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGRhdGEsIFtd
KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYgdmFsdWUpIC0+IFZlY3Rvcjx1aW50OF90PiB7CiAg
ICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICByZXR1
cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgpKSwgdmFs
dWUtPmJ5dGVMZW5ndGgoKSB9OworICAgICAgICBDaGVja2VkU2l6ZSBieXRlTGVuZ3RoID0gdmFs
dWUtPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgaWYgKGJ5dGVMZW5ndGguaGFzT3ZlcmZsb3dlZCgp
KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmRhdGEoKSksIGJ5dGVMZW5ndGggfTsKICAgICB9
LCBbXShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiB2YWx1ZSkgLT4gVmVjdG9yPHVpbnQ4
X3Q+IHsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
ICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHZhbHVlLT5iYXNl
QWRkcmVzcygpKSwgdmFsdWUtPmJ5dGVMZW5ndGgoKSB9OworICAgICAgICBDaGVja2VkU2l6ZSBi
eXRlTGVuZ3RoID0gdmFsdWUtPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgaWYgKGJ5dGVMZW5ndGgu
aGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJu
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmJhc2VBZGRyZXNzKCkp
LCBieXRlTGVuZ3RoIH07CiAgICAgfSwgW10oU3RyaW5nJiB2YWx1ZSkgLT4gVmVjdG9yPHVpbnQ4
X3Q+IHsKICAgICAgICAgYXV0byB1dGY4ID0gdmFsdWUudXRmOCgpOwogICAgICAgICByZXR1cm4g
VmVjdG9yPHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5k
YXRhKCkpLCB1dGY4Lmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVz
aC1hcGkvUHVzaE1hbmFnZXIuY3BwCmluZGV4IGFjYTZjZmYxODNlZC4uYTJmMGJiZWNlYzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcApA
QCAtODIsMTEgKzgyLDE3IEBAIHZvaWQgUHVzaE1hbmFnZXI6OnN1YnNjcmliZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzdGQ6CiAgICAgYXV0byBrZXlE
YXRhUmVzdWx0ID0gV1RGOjpzd2l0Y2hPbigqb3B0aW9ucy0+YXBwbGljYXRpb25TZXJ2ZXJLZXks
IFtdKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYgdmFsdWUpIC0+IEtleURhdGFSZXN1bHQgewog
ICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7
IH07Ci0gICAgICAgIHJldHVybiBWZWN0b3I8dWludDhfdD4geyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgpKSwgdmFsdWUtPmJ5dGVMZW5ndGgoKSB9OworICAg
ICAgICBDaGVja2VkU2l6ZSBieXRlTGVuZ3RoID0gdmFsdWUtPmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgaWYgKGJ5dGVMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFZl
Y3Rvcjx1aW50OF90PiB7IH07CisgICAgICAgIHJldHVybiBWZWN0b3I8dWludDhfdD4geyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCB9
OwogICAgIH0sIFtdKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mIHZhbHVlKSAtPiBLZXlE
YXRhUmVzdWx0IHsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBWZWN0
b3I8dWludDhfdD4geyB9OwotICAgICAgICByZXR1cm4gVmVjdG9yPHVpbnQ4X3Q+IHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmJhc2VBZGRyZXNzKCkpLCB2YWx1ZS0+
Ynl0ZUxlbmd0aCgpIH07CisgICAgICAgIENoZWNrZWRTaXplIGJ5dGVMZW5ndGggPSB2YWx1ZS0+
Ynl0ZUxlbmd0aCgpOworICAgICAgICBpZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCisg
ICAgICAgICAgICByZXR1cm4gVmVjdG9yPHVpbnQ4X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIFZl
Y3Rvcjx1aW50OF90PiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHZhbHVlLT5i
YXNlQWRkcmVzcygpKSwgYnl0ZUxlbmd0aCB9OwogICAgIH0sIFtdKFN0cmluZyYgdmFsdWUpIC0+
IEtleURhdGFSZXN1bHQgewogICAgICAgICBhdXRvIGRlY29kZWQgPSBiYXNlNjRVUkxEZWNvZGUo
dmFsdWUpOwogICAgICAgICBpZiAoIWRlY29kZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IGNiN2U4NGQ0NTM4My4uMmRiNDljYTI0
YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
LmNwcApAQCAtMTkzLDEyICsxOTMsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6
OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIGRlc3RpbmF0aW9uLAogICAgIAog
ICAgIEZsb2F0MzJBcnJheSogY2hhbm5lbERhdGEgPSBtX2NoYW5uZWxzW2NoYW5uZWxOdW1iZXJd
LmdldCgpOwogICAgIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gY2hhbm5lbERhdGEtPmxlbmd0
aCgpOworICAgIFVDUFVSZWdpc3RlciBkYXRhTGVuZ3RoID0gY2hhbm5lbERhdGEtPmxlbmd0aCgp
OwogICAgIAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJP
ZmZzZXQ7CisgICAgVUNQVVJlZ2lzdGVyIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNl
dDsKICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3RpbmF0aW9uLmdldCgpLmxlbmd0aCgpLCBjb3Vu
dCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IGNoYW5uZWxEYXRhLT5kYXRhKCk7CkBA
IC0yMjEsMTIgKzIyMSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weVRv
Q2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJjZSwgdW5zaWduZQogICAgIAogICAgIEZs
b2F0MzJBcnJheSogY2hhbm5lbERhdGEgPSBtX2NoYW5uZWxzW2NoYW5uZWxOdW1iZXJdLmdldCgp
OwogICAgIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gY2hhbm5lbERhdGEtPmxlbmd0aCgpOwor
ICAgIFVDUFVSZWdpc3RlciBkYXRhTGVuZ3RoID0gY2hhbm5lbERhdGEtPmxlbmd0aCgpOwogICAg
IAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7
CisgICAgVUNQVVJlZ2lzdGVyIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAg
ICBjb3VudCA9IHN0ZDo6bWluKHNvdXJjZS5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwogICAgIAog
ICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBzb3VyY2UtPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5
NDQwMjJlZC4uYWM4OWNhZWJlY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTE5Niw4ICsxOTYsOCBAQCB2b2lk
IFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3Rp
bmF0aW9uQXJyYXkpCiAgICAgZG9GRlRBbmFseXNpc0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAg
Ly8gQ29udmVydCBmcm9tIGxpbmVhciBtYWduaXR1ZGUgdG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVs
cy4KLSAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7
Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25B
cnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRp
b25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4obWFnbml0dWRl
QnVmZmVyKCkuc2l6ZSgpLCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDAp
IHsKICAgICAgICAgY29uc3QgZG91YmxlIHJhbmdlU2NhbGVGYWN0b3IgPSBtX21heERlY2liZWxz
ID09IG1fbWluRGVjaWJlbHMgPyAxIDogMSAvIChtX21heERlY2liZWxzIC0gbV9taW5EZWNpYmVs
cyk7CiAgICAgICAgIGNvbnN0IGRvdWJsZSBtaW5EZWNpYmVscyA9IG1fbWluRGVjaWJlbHM7CkBA
IC0yMjcsOCArMjI3LDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21h
aW5EYXRhKEZsb2F0MzJBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIAotICAgIHVuc2lnbmVkIGZmdFNpemUgPSB0aGlzLT5mZnRTaXpl
KCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uQXJy
YXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9u
QXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Cisg
ICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsK
ICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0g
bV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIu
c2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRCdWZmZXJHb29kKTsKQEAg
LTI1MSw4ICsyNTIsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9tYWlu
RGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwotICAg
IHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0
aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxl
bmd0aCgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVf
dCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYg
KGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRC
dWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+
IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lucHV0QnVmZmVyR29vZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRl
eCBhMWE4ZmEyOTI5Y2EuLjE4MjIxZTM1YWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC05NCw2ICs5NCw3IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2FzbU1vZHVsZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1lhcnJGbGFncy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBA
IC0zNDIsOCArMzQzLDkgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50VXNhZ2VzKENyeXB0b0tleVVz
YWdlQml0bWFwIHVzYWdlcykKICAqIFZlcnNpb24gNy4gYWRkZWQgc3VwcG9ydCBmb3IgRmlsZSdz
IGxhc3RNb2RpZmllZCBhdHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDguIGFkZGVkIHN1cHBvcnQgZm9y
IEltYWdlRGF0YSdzIGNvbG9yU3BhY2UgYXR0cmlidXRlLgogICogVmVyc2lvbiA5LiBhZGRlZCBz
dXBwb3J0IGZvciBJbWFnZUJpdG1hcCBjb2xvciBzcGFjZS4KKyAqIFZlcnNpb24gMTAuIGNoYW5n
ZWQgdGhlIGxlbmd0aCAoYW5kIG9mZnNldHMpIG9mIEFycmF5QnVmZmVycyAoYW5kIEFycmF5QnVm
ZmVyVmlld3MpIGZyb20gMzIgdG8gNjQgYml0cwogICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQg
Q3VycmVudFZlcnNpb24gPSA5Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9u
ID0gMTA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgVGVybWluYXRvclRhZyA9IDB4RkZGRkZGRkY7
CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgTm9uSW5kZXhQcm9wZXJ0aWVzVGFnID0gMHhGRkZGRkZGRDsKQEAg
LTM5OSw3ICs0MDEsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZs
YWcgPSAweDgwMDAwMDAwOwogICogICAgfCBPYmplY3RSZWZlcmVuY2UKICAqICAgIHwgTWVzc2Fn
ZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgfCBBcnJheUJ1ZmZlcgot
ICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zm
c2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0
UmVmZXJlbmNlKQorICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3U3Vi
dGFnIDxieXRlT2Zmc2V0OnVpbnQ2NF90PiA8Ynl0ZUxlbmd0aDp1aW50NjRfdD4gKEFycmF5QnVm
ZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQogICogICAgfCBDcnlwdG9LZXlUYWcgPHdyYXBwZWRLZXlM
ZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXt3cmFwcGVkS2V5TGVuZ3RofT4KICAqICAgIHwg
RE9NUG9pbnQKICAqICAgIHwgRE9NUmVjdApAQCAtNDYzLDcgKzQ2NSw3IEBAIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICBPYmpl
Y3RSZWZlcmVuY2VUYWcgPG9wSW5kZXg6SW5kZXhUeXBlPgogICoKICAqIEFycmF5QnVmZmVyIDot
Ci0gKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQzMl90PiA8Y29udGVudHM6Ynl0ZXts
ZW5ndGh9PgorICogICAgQXJyYXlCdWZmZXJUYWcgPGxlbmd0aDp1aW50NjRfdD4gPGNvbnRlbnRz
OmJ5dGV7bGVuZ3RofT4KICAqICAgIEFycmF5QnVmZmVyVHJhbnNmZXJUYWcgPHZhbHVlOnVpbnQz
Ml90PgogICogICAgU2hhcmVkQXJyYXlCdWZmZXJUYWcgPHZhbHVlOnVpbnQzMl90PgogICoKQEAg
LTk5OCw4ICsxMDAwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYXJyYXlCdWZmZXJWaWV3ID0gdG9Qb3Nz
aWJseVNoYXJlZEFycmF5QnVmZmVyVmlldyh2bSwgb2JqKTsKLSAgICAgICAgd3JpdGUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpKSk7Ci0gICAgICAg
IHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgo
KSkpOworICAgICAgICB1aW50NjRfdCBieXRlT2Zmc2V0ID0gYXJyYXlCdWZmZXJWaWV3LT5ieXRl
T2Zmc2V0KCk7CisgICAgICAgIHdyaXRlKGJ5dGVPZmZzZXQpOworICAgICAgICB1aW50NjRfdCBi
eXRlTGVuZ3RoID0gYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHdyaXRl
KGJ5dGVMZW5ndGgpOwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
YXJyYXlCdWZmZXJWaWV3LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgICAgICBpZiAoIWFy
cmF5QnVmZmVyKSB7CiAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OlZhbGlkYXRpb25FcnJvcjsKQEAgLTExMzEsOCArMTEzNSwxMyBAQCBwcml2YXRlOgogICAgICAg
ICB3cml0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGJ1ZmZlci0+cmVzb2x1dGlvblNjYWxlKCkpKTsK
ICAgICAgICAgd3JpdGUoYnVmZmVyLT5jb2xvclNwYWNlKCkpOwogCi0gICAgICAgIHdyaXRlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSk7Ci0gICAgICAg
IHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIENoZWNrZWRVaW50MzIgYnl0ZUxl
bmd0aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIGlmIChieXRlTGVuZ3Ro
Lmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CisgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCk7CiAgICAgfQog
CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKQEAgLTEyNjMsOCArMTI3
MiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdyaXRlKEltYWdlRGF0YVRhZyk7CiAg
ICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgd3Jp
dGUoZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5s
ZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRhdGEoKSwgZGF0
YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVja2VkVWludDMyIGRhdGFM
ZW5ndGggPSBkYXRhLT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFM
ZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShk
YXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5jb2xvclNwYWNlKCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTMxMSw4ICsx
MzI1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgd3JpdGUoQXJyYXlCdWZmZXJUYWcpOwotICAgICAgICAgICAgICAgIHdy
aXRlKGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgYnl0ZUxlbmd0aCA9
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgd3JpdGUoYnl0ZUxl
bmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzPEpT
QXJyYXlCdWZmZXJWaWV3Pih2bSkpIHsKQEAgLTE1MDIsNyArMTUxNyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsKICAgICB9CiAKLSAgICB2b2lk
IHdyaXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQorICAgIHZvaWQgd3JpdGUodWludDY0X3QgaSkK
ICAgICB7CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsKICAgICB9CkBA
IC0yMzkxLDcgKzI0MDYsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBib29sIHJlYWQodW5zaWduZWQgbG9uZyBsb25nJiBpKQorICAgIGJvb2wgcmVhZCh1
aW50NjRfdCYgaSkKICAgICB7CiAgICAgICAgIHJldHVybiByZWFkTGl0dGxlRW5kaWFuKGkpOwog
ICAgIH0KQEAgLTI1NTUsOSArMjU3MCwxMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+
JiBhcnJheUJ1ZmZlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMZW5ndGhUeXBlPgorICAgIGJv
b2wgcmVhZEFycmF5QnVmZmVySW1wbChSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikK
ICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aDsKKyAgICAgICAgTGVuZ3RoVHlwZSBsZW5n
dGg7CiAgICAgICAgIGlmICghcmVhZChsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAobV9wdHIgKyBsZW5ndGggPiBtX2VuZCkKQEAgLTI1NjksMTUgKzI1ODUs
MjMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBy
ZWFkQXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3KQorICAg
IGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAgICAgICAgcmV0dXJuIHJl
YWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5QnVmZmVyKTsKKyAgICAgICAgcmV0dXJu
IHJlYWRBcnJheUJ1ZmZlckltcGw8dWludDY0X3Q+KGFycmF5QnVmZmVyKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGVuZ3RoVHlwZT4KKyAgICBib29sIHJlYWRBcnJheUJ1ZmZl
clZpZXdJbXBsKFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3KQogICAgIHsKICAgICAg
ICAgQXJyYXlCdWZmZXJWaWV3U3VidGFnIGFycmF5QnVmZmVyVmlld1N1YnRhZzsKICAgICAgICAg
aWYgKCFyZWFkQXJyYXlCdWZmZXJWaWV3U3VidGFnKGFycmF5QnVmZmVyVmlld1N1YnRhZykpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5dGVPZmZzZXQ7Cisg
ICAgICAgIExlbmd0aFR5cGUgYnl0ZU9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkKGJ5dGVPZmZz
ZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50MzJfdCBieXRlTGVu
Z3RoOworICAgICAgICBMZW5ndGhUeXBlIGJ5dGVMZW5ndGg7CiAgICAgICAgIGlmICghcmVhZChi
eXRlTGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgSlNPYmplY3Qq
IGFycmF5QnVmZmVyT2JqID0gYXNPYmplY3QocmVhZFRlcm1pbmFsKCkpOwpAQCAtMjU4Nyw3ICsy
NjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSB0eXBlZEFy
cmF5RWxlbWVudFNpemUoYXJyYXlCdWZmZXJWaWV3U3VidGFnKTsKICAgICAgICAgaWYgKCFlbGVt
ZW50U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOworICAgICAgICBMZW5ndGhUeXBlIGxlbmd0
aCA9IGJ5dGVMZW5ndGggLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKGxlbmd0aCAqIGVsZW1l
bnRTaXplICE9IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2
MzQsNiArMjY1OCwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBy
ZWFkQXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3KQorICAg
IHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAgICAgICAgcmV0dXJuIHJlYWRB
cnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQzMl90Pih2bSwgYXJyYXlCdWZmZXJWaWV3KTsKKyAgICAg
ICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQ2NF90Pih2bSwgYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICB9CisKICAgICBib29sIHJlYWQoVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQp
CiAgICAgewogICAgICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7CkBAIC0zMzQ1LDcgKzMz
NzYsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
cjsKIAotICAgICAgICBpZiAoIXJlYWQoc2VyaWFsaXphdGlvblN0YXRlKSB8fCAhcmVhZChsb2dp
Y2FsV2lkdGgpIHx8ICFyZWFkKGxvZ2ljYWxIZWlnaHQpIHx8ICFyZWFkKHJlc29sdXRpb25TY2Fs
ZSkgfHwgKG1fdmVyc2lvbiA+IDggJiYgIXJlYWQoY29sb3JTcGFjZSkpIHx8ICFyZWFkQXJyYXlC
dWZmZXIoYXJyYXlCdWZmZXIpKSB7CisgICAgICAgIGlmICghcmVhZChzZXJpYWxpemF0aW9uU3Rh
dGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNhbEhlaWdodCkgfHwgIXJl
YWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAhcmVhZChjb2xvclNwYWNl
KSkgfHwgIXJlYWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5QnVmZmVyKSkgewogICAg
ICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCBmYjc1N2E0ZDc0ZjYuLmFmYzdjYzFlZjU3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgaWYgKGhhc0FycmF5KSB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5zaXplKCkpOwogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8gJmFycmF5QnVmZmVyQ29udGVudHMgOiAqbV9hcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgYXJyYXlCdWZmZXJDb250
ZW50cy5zaXplSW5CeXRlcygpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpKTsKICAgICAgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihhcnJheUJ1ZmZlckNvbnRlbnRzLmRhdGEoKSksIGFycmF5QnVmZmVyQ29udGVudHMuc2l6ZUlu
Qnl0ZXMoKSwgMSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTksOSArMTk5LDEyIEBAIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAKICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gbWFr
ZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgICAgIHdoaWxlIChhcnJh
eUxlbmd0aC0tKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBidWZmZXJTaXplOworICAgICAgICAg
ICAgdWludDY0X3QgYnVmZmVyU2l6ZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YnVmZmVyU2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICBDaGVja2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRCdWZmZXJTaXpl
ID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGlmIChjaGVja2VkQnVmZmVyU2l6ZS5oYXNPdmVy
Zmxvd2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBp
ZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90
PihidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjEy
LDcgKzIxNSw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgICAgICAgICAgR2lnYWNh
Z2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFycmF5QnVmZmVyQ29u
dGVudHNBcnJheS0+YXBwZW5kKHsgYnVmZmVyLCBidWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJp
bWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgY2hlY2tlZEJ1ZmZlclNpemUsIEFycmF5QnVm
ZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSB9KTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCBjYTM5NDNhM2M5NTMu
LjBlMzJjYTAzNDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNy
eXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAg
LTQ1OCw3ICs0NTgsMTAgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8S2V5RGF0YT4gdG9LZXlEYXRh
KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgU3VidGxlQ3IKICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIFtdIChh
dXRvJiBidWZmZXJTb3VyY2UpIC0+IHN0ZDo6b3B0aW9uYWw8S2V5RGF0YT4gewotICAgICAgICAg
ICAgICAgIHJldHVybiBLZXlEYXRhIHsgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJ1ZmZlclNvdXJjZS0+ZGF0YSgpKSwgYnVmZmVyU291cmNlLT5ieXRlTGVuZ3RoKCkgfSB9
OworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBieXRlTGVuZ3RoKCkgY3VycmVudGx5IHJldHVy
bnMgYSBVQ1BVUmVnaXN0ZXIuIEl0IHdvdWxkIGJlIHNvbWV3aGF0IG1vcmUgbG9naWNhbCBmb3Ig
aXQgdG8gcmV0dXJuIHNpemVfdAorICAgICAgICAgICAgICAgIC8vIEJ1dCB0aGlzIHdvdWxkIGlu
IHR1cm4gcmVxdWlyZXMgbWFraW5nIGxvdHMgb2YgY29kZSB0aGF0IGlzIGN1cnJlbnRseSBnYXRl
ZCBvbiAjaWYgQ1BVKFJFR0lTVEVSNjQpIGJlIGdhdGVkIG9uIHNpemVvZihzaXplX3QpID09IHNp
emVvZih1aW50NjRfdCksIHByb2JhYmx5IHdpdGggYSBuYW1lIGxpa2UgTEFSR0VfVFlQRURfQVJS
QVlTLgorICAgICAgICAgICAgICAgIENoZWNrZWRTaXplIGJ5dGVMZW5ndGggPSBidWZmZXJTb3Vy
Y2UtPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gS2V5RGF0YSB7IFZlY3Rv
ciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXJTb3VyY2UtPmRhdGEoKSksIGJ5
dGVMZW5ndGggfSB9OwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIGNhc2UgU3VidGxl
Q3J5cHRvOjpLZXlGb3JtYXQ6Okp3azoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFkNjg2ZC4uYmFmMWFiYWQ2N2JkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTY4LDcgKzY4LDkgQEAg
dm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKFdlYkNvcmU6OkJsb2ImIGJsb2IpCiAKICAg
ICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNpemUoKTsKICAgICBpZiAoIWJ5dGVMZW5ndGgpIHsK
LSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoMFUsIDEpLCAwLCAwKTsK
KyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mgd2VpcmQsIGJ1dCBpcyByZXF1aXJlZCBmb3IgdGhl
IG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8gc3VjY2VlZC4KKyAgICAgICAgLy8gV2l0aG91dCBp
dCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdoZXJlIEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qg
dm9pZCogc291cmNlLCBVQ1BVUmVnaXN0ZXIgYnl0ZUxlbmd0aCkgY291bGQgYmUgY2FsbGVkIGlu
c3RlYWQuCisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PFVDUFVSZWdpc3Rlcj4oMFUpLCAxKSwgMCwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxCbG9iTG9hZGVyPihbdGhpc10o
QmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyLmNwcAppbmRleCAyNWJmZjE1M2QxMmMuLjc1NDNmNDc1YTI3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNzQs
NiArNzQsOCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFz
T3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChidWZm
ZXJTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFwaXhlbEFy
cmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IDg3MGJkYzgwZjM1NS4uMWJhMzIyYzEw
YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjMsNyArNjQsMTAgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFImIHJldHVyblZhbHVlLCBWJiB2aWV3
LCB1bnNpZ25lZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5lc3MpCiAgICAgewogICAgICAg
ICBib29sIHJlYWRTdGF0dXMgPSBmYWxzZTsKLSAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVtcGxh
dGUgcmVhZDxUPihvZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1
cyk7CisgICAgICAgIFVDUFVSZWdpc3RlciBhY3R1YWxPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAg
IFQgdmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4oYWN0dWFsT2Zmc2V0LCBlbmRpYW5uZXNz
ID09IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChp
c0luQm91bmRzPHVpbnQzMl90PihhY3R1YWxPZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0ID0gYWN0
dWFsT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWRTdGF0dXMpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAK
</data>
<flag name="commit-queue"
          id="465473"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441303</attachid>
            <date>2021-10-14 16:28:52 -0700</date>
            <delta_ts>2021-10-14 17:19:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>270190</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi4zNzliYzNjYTY4MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBicmFu
Y2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZh
bCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pTVmFs
dWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1h
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwppbmRl
eCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRt
ZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9v
KG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQgbWF4
U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3
MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAgIHZh
ciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwICsg
MSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
ZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYg
KGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cgZXhw
ZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjog
ZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAog
ZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJh
eSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTogMHg4
MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNpemUg
PSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAgIG1l
bW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAtIDB4
MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4uODBm
ZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBAQAot
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9y
ICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikK
Ky8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1LDIx
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIpKTsK
KyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
Zm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBtYXhT
aXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9
PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikpOwog
ICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0
cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUudG9T
dHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAg
IGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKwor
ZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0
aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlW
YWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJh
eVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2Eg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0
aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFj
dHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsg
bCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0
ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmlu
Zyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdp
Z3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRocmVl
R2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBm
b3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0
aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCww
ICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVl
ICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Cisg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTUzOWI1MGQyZTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxs
eS1vb2IuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3Ig
KCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQor
Ly9AIHJ1bkRlZmF1bHQoKQorZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0
aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSkKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9
Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0
OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJy
YXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAg
ICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
ICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAg
IHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0
QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IGFjdHVhbExlbmd0aCArIDEwOworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAg
IGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAoIkluIG91dC1vZi1ib3Vu
ZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10
aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpp
bmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0
ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYsMTMg
QEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAgICAg
dmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRNZW1v
cnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1vZHVs
ZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAK
LWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAoZXhj
ZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBpbnZh
bGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIoKSkn
KSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUt
dGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNt
LW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwppbmRl
eCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3Jl
Z3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJ
WkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZhciBl
eGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7CiB9
IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAhPSAi
UmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAoZXhj
ZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2FzOiAi
ICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZGU0Yjk1NDQzNC4uNzNmYmU1NThkN2Y5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFJlYmFzZWxpbmVkIHRocmVlIGZvbGxvd2luZyB0ZXN0cyBhcyBkaWZmZXJlbnQgb3Ig
ZmV3ZXIgZXJyb3IgbWVzc2FnZXMgYXBwZWFyIG9uIHRoZSBjb25zb2xlLgorICAgICAgICBBbHNv
IGNoYW5nZWQgY3VycmVudFZlcnNpb24gaW4gc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBm
cm9tIDkgdG8gMTAuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWludmFsaWQtcmVzdWx0LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisgICAgICAgICogd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0xMiAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRob3V0LWlu
dGVyYWN0aW9uLnB5IGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYx
N2FkLi44N2JjYzQ0OTJjMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9z
ZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFn
ZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5
PgogICAgICAgICA8c2NyaXB0PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25z
dCBjdXJyZW50VmVyc2lvbiA9IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVy
IGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1
ZmZlci1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRj
NS4uNWI4ZjM2NjU5Y2IzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1
Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUg
b2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYg
aXQgZG9lcyBub3QgY3Jhc2guCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1s
ZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5k
MDczNjAwMTQzMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0
IGludGVybmFsIEF1ZGlvQnVmZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9m
IDQ0MDAwIGFuZCBhIGxlbmd0aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVu
Z3RoIHJldHVybmVkIGJ5IE9mZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8g
Y29uc3RydWN0IHRoZSByZW5kZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwYWM3NWM5NzQ3OWQuLjc1OTNmYmE5ZTEy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTEz
ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cg
V0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1B
WF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkg
dGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0
R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBs
ZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BVUmVnaXN0
ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkg
aW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNp
emUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
cywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2
ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIg
YW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBH
ZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIg
cmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBo
YWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisg
ICAgICAgIC0gSW4gdHVybnMsIEkgaGFkIHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2Ug
Q2hlY2tJbkJvdW5kcyBjb3VsZCBub3QgYWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIKKyAgICAgICAgLSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9u
cyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hY
WCB0byBhY2NlcHQgbm9uLUludDMyIGluZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXksIGEgbWF4aW11bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAy
Qi4KKyAgICAgICAgLSBJIGFkZGVkIGEgIm1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJy
YXlQcm9maWxlL1VubGlua2VkQXJyYXlQcm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdo
ZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBpbmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3Bl
Y3VsYXRpb24gYW5kIHNwZWNpYWxpemF0aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwu
CisgICAgICAgICAgICBJIHRoZW4gdXBkYXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBi
eSB0aGUgc2xvdyBwYXRocyB0byBjb3JyZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9y
dHVuYXRlbHkgSSByYW4gb3V0IG9mIHRpbWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3Vw
ZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMuCisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBo
YXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBs
YXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50Cisg
ICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJh
dGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcg
bGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwg
Zm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRv
bWljc1hYWAorCisgICAgICAgIFRoZSBjdXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdp
bGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNl
cyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3Ro
ZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVm
aW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5
IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhp
cyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0
aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNl
IENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgor
ICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAt
IEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFk
eSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0g
TWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFz
IHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OkltbTY0OjpJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6Oklt
bTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2Ny
YXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1
YXJkKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZEFycmF5UHJvZmlsZTo6VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6QXJyYXlNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhU
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NB
bmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnNwZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNBcnJheU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6
REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
TG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0
cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlk
YXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRB
cnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmlj
dEVxKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmlu
c2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5C
eXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxp
Z25tZW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxl
bmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNh
bGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAg
KEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6
CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
OgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dE
b3duQW5kV2FzdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9z
c2libHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6
Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFy
cmF5SW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aElu
ZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2lu
IG1pZ3JhdGlvbiBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2FhMGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUsOSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFz
cyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlh
dGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1l
bW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3Rl
ZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRy
dXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1Q
dHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVk
SW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51
bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpu
dWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0
ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRw
dHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Piht
X3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29u
c3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBw
dWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAg
ewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRy
dXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShw
dHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBA
QCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsK
LSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
Mih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
MihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0
ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAg
ICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVi
bGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2Np
ZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBz
dHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgp
IHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAg
ICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBt
X3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02
NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRw
dHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6
CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAg
ICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1
ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAg
ICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5k
aWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFz
VHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAg
IC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1
Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0
YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBE
YXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFiYmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2
ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hN
dWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
OjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJh
c2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7
CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUo
QVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0
KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0K
IAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBu
ZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdp
c3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAv
LyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBp
dCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3
aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAg
IGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAg
IGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQp
LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJl
Z2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFj
ZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50
ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAg
ICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwg
cmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAv
LyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThm
ZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJN
NjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAg
IHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZm
ZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAg
IH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIu
LjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQ
dHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRh
dGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRk
cmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7
CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAg
ICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxp
ZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6
IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0
LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBl
NjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkg
KzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAg
ICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZm
OyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0
aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzOTc5OTJhM2E3NTAuLjE3ZTAwYzI4MjM4NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2
LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAg
ICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6
CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRl
cjoKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2
YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAgLy8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5
cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBwcm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQg
YXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEy
ICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAK
ICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdo
LmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkp
OwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQu
c2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIENQVShBRERS
RVNTNjQpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBv
ciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxB
bmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWws
IHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFp
bEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVh
bCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0
byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQ
Uik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0
Y2hHUFIoKTsKQEAgLTExOTcsOSArMTIwMywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
V2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0
YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQ
dXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJh
U3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShBRERSRVNTNjQpCisgICAgICAg
IGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAg
IGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgogICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGppdC5jYWdl
Q29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gyR1BSLCBz
Y3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25FeHRlbmQz
MlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUp
KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CkBAIC0xNTk1LDkg
KzE2MDUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
ICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAotICAgICAgICBqaXQubG9hZDMyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJy
YXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCi0gICAgICAg
IHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQu
c2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIENQVShBRERS
RVNTNjQpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhl
ciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRl
LmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9y
RXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3Rh
dGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3Zl
T3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAg
ICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2Ny
YXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0
ZVNjcmF0Y2hHUFIoKTsKQEAgLTE2MDUsOSArMTYyMCwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNl
cnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0
ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIENQVShBRERSRVNTNjQpCisg
ICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisg
ICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgog
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGpp
dC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gy
R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25F
eHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50
KHR5cGUpKSB7CiAgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggNjkxNjc5NDg0M2Iw
Li5iYzRhYmQ1NDgyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7
CiAKIC8vIFRoaXMgaXMgYSBiaXRmaWVsZCB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5
cGUgb2YgYXJyYXkgYWNjZXNzIHRoYXQgd2UgaGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGlu
ZGV4aW5nIHR5cGVzIHRoYXQgdXNlIHRoZSBsb3dlciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlw
ZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDEx
IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBl
ZGVmIHVuc2lnbmVkIEFycmF5TW9kZXM7CiAKIC8vIFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVz
IGFyZSBsaW1pdGVkIHdpdGhpbiAoMCAtIDE2LCAyMSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUs
MTcgQEAgcHVibGljOgogICAgICAgICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxz
ZSkKICAgICB7CiAgICAgfQotICAgIAorCisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICAvLyBBY2Nl
c3NpbmcgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIHRoYXQgdGVuZHMgdG8gYmUgbW9yZSBjb21w
bGljYXRlZCBhcyB3ZSBjYW4ndCBmb3JjZSBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gaW50MzJfdC4K
KyAgICAvLyBXZSBvbmx5IHN1cHBvcnQgc3VjaCBsYXJnZSB0eXBlZCBhcnJheXMgb24gNjQtYml0
IHBsYXRmb3Jtcy4KKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFy
cmF5TWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAg
dm9pZCBzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9
IHRydWU7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KKyNlbHNl
CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBTdHJ1Y3R1cmVJRCogYWRk
cmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJl
SUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyByZXR1cm4gJm1f
b2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5U3RvcmVUb0hvbGUo
KSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjQ0LDYgKzI1NCw5IEBAIHByaXZh
dGU6CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEIHsgMCB9OwogICAgIGJv
b2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92
ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3Vu
dGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBl
LiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlw
ZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3Qg
bWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91
bmRzIHsgZmFsc2UgfTsKKyNpZiBDUFUoQUREUkVTUzY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdl
VHlwZWRBcnJheSB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzIDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVz
IDogMTsKICAgICBib29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMs
NyArMjY2LDEzIEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwog
CiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJh
eVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUo
KQorICAgICAgICA6IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgQ1BV
KEFERFJFU1M2NCkKKyAgICAgICAgLCBtX21heUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorI2Vu
ZGlmCisgICAgeworICAgIH0KIAogICAgIHZvaWQgdXBkYXRlKEFycmF5UHJvZmlsZSYgYXJyYXlQ
cm9maWxlKQogICAgIHsKQEAgLTI4MCw2ICsyOTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAg
YXJyYXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJy
YXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOworCisjaWYgQ1BVKEFERFJF
U1M2NCkKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAgICAgICAgICBh
cnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2ZpbGUubV9tYXlC
ZUxhcmdlVHlwZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5MCw3ICsz
MTYsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVzIDogMTsKKyNpZiBDUFUoQUREUkVTUzY0KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRB
cnJheSA6IDE7CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5
UHJvZmlsZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IDJiMmY1ZTAzMDE5Zi4uYTFjZDY5OTQ0YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0z
NDYzLDcgKzM0NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGg6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRy
eUdldEZvbGRhYmxlVmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAg
aWYgKHZpZXcgJiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcg
PSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcp
IHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldDogewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0
Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBp
ZiAodmlldykgewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNl
dCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRl
T2Zmc2V0KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldCA9
IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zm
c2V0ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2
aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAg
ICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAt
NDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUg
Q2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0
IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
ICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1
MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICsz
MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5j
aGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBu
b3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAg
ICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAg
ICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5
YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkp
OwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAg
aWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgp
KQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3Qg
YmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDgg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRB
cnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVz
ZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3Qg
R2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkg
ewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNi
Li5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24g
YWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0
aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5
TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNw
ZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAg
IHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJy
YXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNw
ZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAg
ICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlC
ZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYz
LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJy
YXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247
CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRl
cy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3Bl
Y3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNp
b24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlv
bik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5h
c0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3Jk
KCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9u
KEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJz
aW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3Mo
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZl
cnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
cywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRp
b247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAg
IH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxl
LCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAg
ICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3Jl
VG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBi
b29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlD
bGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9m
aWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMg
PSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0g
ICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNw
ZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBB
cnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAg
QXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJv
b2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2Vy
KTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJh
eSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51
c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAg
ICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAg
JiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBj
b252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVy
c2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3
OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwog
ICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29u
dmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBl
ZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7
CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLmExNjc5Y2MwMTM5NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgw
NywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxU
YXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVy
YW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50
JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogeworI2lmIENQVShBRERSRVNTNjQpCisgICAgc3RhdGljX2Fzc2VydChlbmFibGVJbnQ1
MigpKTsKKyNlbmRpZgorCiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAg
Y2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBib29sIHdpbGxO
ZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKEFERFJFU1M2NCkKKyAgICAgICAgaWYg
KHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRB
cnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJ
bmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4MjIsMjYgKzM4MzEsMzAgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJy
YXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0g
YWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFy
cmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3
aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRv
R3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3Jk
KCkpLCB0aGlzTm9kZSk7CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hvdWxkbid0IGNhdXNl
IHVzIHRvIGV4aXQgaGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3aXRob3V0IGVmZmVj
dHMuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0sp
OwogCi0KICAgICAgICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBs
ZW5ndGhOb2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAg
ICAgLy8gV2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdp
bGwgbmV2ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50
MzIuCi0gICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIobG9nU2l6
ZSkpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0TFNoaWZ0LCBsZW5n
dGhOb2RlLCBzaGlmdE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBhIEJpdExTaGlm
dCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxlbmd0aCB0aGF0IG92
ZXJmbG93cyBJbnQzMi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0NvbnN0YW50KGpzTnVt
YmVyKDEgPDwgbG9nU2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRo
TXVsLCBsZW5ndGhOb2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBib29s
IHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKEFERFJFU1M2NCkKKyAgICAg
ICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAg
VHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+
Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYsMTkg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVz
dWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUg
IT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBh
ZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJy
YXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3
aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChv
cCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRo
aXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9CiAKICAgICBjYXNlIFR5
cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhQ1BVKEFERFJFU1M2NCkKKyAgICAgICAgaWYgKHdp
bGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVk
QXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNz
SW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBAIC0zODcxLDcgKzM4OTAsOCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJh
eTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3Jh
cGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlwZSBvcCA9
IHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyID8gR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyIDogR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIHNldChy
ZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6
UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNm
ZGU5Nzc5Li45YWQ1YzI3MDIwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgICAgIGNhc2UgRW51bWVyYXRvckhhc093blByb3BlcnR5OgogICAgICAgICBjYXNlIEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVj
dG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxE
aXJlY3Q6CkBAIC0yMzksNiArMjQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBj
YXNlIFRvQm9vbGVhbjoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDaGVja0luQm91
bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgRG91YmxlUmVwOgog
ICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKQEAgLTEzMzcsNiArMTMzOSwx
MSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5
cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlO
b2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTI6CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihI
ZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9k
ZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKICAgICAgICAgY2FzZSBBcnJheVVzZToKQEAgLTE0NDQsNiArMTQ1MSwxNCBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB9CiAgICAgfQogCisgICAgY2FzZSBHZXRU
eXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlLmlzU29tZVR5cGVkQXJy
YXlWaWV3KCkpOworICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKFR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQx
KCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNl
IEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5
TW9kZSgpOwogICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaAppbmRleCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBi
b29sIHZhbGlkYXRpb25FbmFibGVkKCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBlbmFibGVJ
bnQ1MigpCitpbmxpbmUgYm9vbCBjb25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGI4ODI1YWNhZTM0ZS4u
ZmExN2JmMTE0MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMzg3LDYgKzM4Nyw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFs
OgogICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5Ny4uNDAy
ODRjZmEyMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0x
ODUsNiArMTg1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBDb25z
dGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1ZhcmFy
Z3M6CkBAIC0xOTcsMTAgKzE5OCwxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAg
ICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBH
ZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIEdldEJ5T2Zm
c2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXgg
OGUxYjkzZWVlNmNhLi41NjZmNTM5ZGUxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNDMsNiArMTA0Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRp
b24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMo
KQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkK
KyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBl
ZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBO
b2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xMDczLDcgKzEw
NzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6IHsK
ICAgICAgICAgICAgICAgICAvLyBEb24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZlIG9ubHkg
c2VlbiBPd25TdHJ1Y3R1cmVNb2RlLgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXRSBzaG91
bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgorICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgogICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IEVudW1lcmF0b3JHZXRCeVZhbCkKICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhUeXBlKEFy
cmF5OjpHZW5lcmljKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMzLDYgKzExMzQs
MTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5nVXNlPiht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMkFycmF5
OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToKKyAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDE2
QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0
NjRBcnJheToKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKQEAgLTExODQsNiArMTE5
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1
bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFy
cmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJh
eU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5
TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1f
Z3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAog
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCkBAIC0xNzE3LDEyICsxNzMxLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRU
aW1lKG5vZGUpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhO
b2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkg
eworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE0OSw2ICsyMTY3LDIzIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2Rl
LT5hcnJheU1vZGUoKS5yZWZpbmUobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRp
Y3Rpb24oKSwgQXJyYXlNb2RlOjp1bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAg
ICAgIEFTU0VSVChhcnJheU1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgICAg
ICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlP
cGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5l
ZWRzU3RvcmFnZSk7CisKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3Vs
dEludDUyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4Miw2ICsyMjE3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAg
ICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6Cisg
ICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIENvbnN0YW50U3Rv
cmFnZVBvaW50ZXI6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAgY2FzZSBW
YWx1ZVRvSW50MzI6CkBAIC00MDk2LDE0ICs0MTMyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IAogICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAot
ICAgIE5vZGUqIHByZXBlbmRHZXRBcnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSog
Y2hpbGQsIEFycmF5TW9kZSBhcnJheU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdl
ID0gY2hlY2tBcnJheShhcnJheU1vZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5l
ZWRzU3RvcmFnZSk7Ci0gICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3Ro
LCBvcmlnaW4sCi0gICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShj
aGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBj
b252ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYw
Li4yZDg2ZWI3NTczOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R2VuZXJhdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVy
YXRpb25JbmZvLmgKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBv
ZiBsaXZlIHZhbHVlcyBkdXJpbmcgY29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5m
b3JtYXRpb24gYXMgdG8gd2hldGhlciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBh
bmQgaWYgc28gd2hpY2gsCiAvLyB3aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0
aGUgUmVnaXN0ZXJGaWxlLCBhbmQgaWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0
YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBh
IGJveGVkIGZvcm0sIGJ1dCB3ZSBtYXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2Yg
Ym94KSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVt
YWluLAorLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBr
bm93IHdoZW4gdGhlIHZhbHVlIGlzIGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3Nv
Y2lhdGVkIHdpdGggaXQKIC8vIG1heSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZv
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRl
eCAyYmI5ZDRiZWE4MDAuLjA2NjFlNWI4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgICAgIG91
dC5wcmludCgiVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MiKTsKICAgICAgICAgcmV0dXJuOwogCisg
ICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQo
IlR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRB
cnJheUxlbmd0aEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgUHJvdG90
eXBlTG9jOgogICAgICAgICBvdXQucHJpbnQoIlByb3RvdHlwZUxvYyIpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAppbmRleCAy
NjkxNzFjYjM0MWQuLjQwZmI3MTY3MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02Nyw2ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsK
ICAgICBTZXR0ZXJMb2MsCiAgICAgU3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zm
c2V0TG9jLAorICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsCisgICAgVHlwZWRBcnJh
eUxlbmd0aEludDUyTG9jLAogICAgIFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBT
dGFja1BheWxvYWRMb2MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhi
Y2Y1MS4uNmRlZGEwMzdlZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTMz
NSw3ICsxMzM1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vbk5lZ2F0aXZlICYmIGxlc3NUaGFuTGVuZ3RoKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBleGVjdXRlTm9kZShibG9jay0+YXQobm9kZUluZGV4KSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVj
a0VsaW1pbmF0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigpKSAmJiBub2RlLT5vcCgpID09
IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBBc3NlcnRJbkJvdW5kcywgbm9kZS0+
b3JpZ2luLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV2UganVzdCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYSB2YWx1ZS1wcm9k
dWNpbmcgbm9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50
aXR5T24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKaW5kZXggMmFmNzk3MDY4YTljLi4wYmE3YjlmZjNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTk2NSw2ICsxOTY1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEFycmF5UHVzaDoKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAg
ICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRV
cGRhdGVJbmRleEFuZE1vZGU6CiAgICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2
ICsyMDA1LDcgQEAgcHVibGljOgogCiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNh
c2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTI6CiAgICAgICAgICAgICByZXR1cm4gMjsKIAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9w
ZXJ0eToKQEAgLTIyNzYsNiArMjI3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgp
KSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2Fz
ZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoK
ICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAppbmRleCA5YTkwYTRjZmRhYzguLjIzZjFjMTUwZDYwMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjYxLDggKzI2MSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNldCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE11bHRpRGVsZXRlQnlPZmZzZXQsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9k
ZVJlc3VsdEludDMyKSBcCisgICAgLyogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBUeXBlZEFy
cmF5cywgYXMgdGhleSBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IGNhbiBoYXZlIGEgbGVuZ3RoIHRo
YXQgZG9lcyBub3QgZml0IGluIDMyIGJpdHMuICovIFwKKyAgICAvKiBHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MiBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIGNoYW5nZSB0byBy
ZXR1cm5pbmcgSW50NTIgaW4gRml4dXAuIERvaW5nIGl0IGJlZm9yZSBjYXVzZXMgdmFsaWRhdGlv
biBmYWlsdXJlcy4gKi8gXAorICAgIG1hY3JvKEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQz
MikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIp
IFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRK
UykgXAogICAgIG1hY3JvKEdldFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lw
U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMjg2LDYgKzI5MCw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDaGVja0JhZFZhbHVlLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQXNzZXJ0SW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpT
KSBcCisgICAgbWFjcm8oQ2hlY2tJbkJvdW5kc0ludDUyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2hlY2tJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKENoZWNrVHlwZUluZm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFrZXMg
YW4gT3BJbmZvIHdpdGggdGhlIGZsYWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wKICAg
ICBtYWNybyhDaGVja0pTQ2FzdCwgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0aGUgc2Ft
ZSBhcyBqc0Nhc3QgYnV0IGFzIGEgc3BlY3VsYXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0aW9uICov
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTUw
N2YxZTgwYWMwLi45NDUzNTM1NmRlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcApAQCAtOTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUg
dm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFs
dWUKICAgICB9CiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRJbmRleFF1aWNrbHkoaW5kZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRy
eVNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQogCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTE3NSw3ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5
VmFsQ2VsbFN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50MzJfdCBzaXplLCBjaGFyKiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNp
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50cHRyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTgzLDExICsxODEsMTQgQEAgY2hhciogbmV3
VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
U3RydWN0dXJlKiBzdHIKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5l
Z2F0aXZlIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKworICAg
IHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxpbnRwdHJfdD46Om1heCgpIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIHNpemVfdCB1bnNpZ25lZFNp
emUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZl
Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3Is
IHNpemUpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6
Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6
ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVuc2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0
PgpAQCAtMTkwOCw3ICsxOTA5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAoVk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRw
dHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTE5MjQsNyArMTkyNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0MCw3ICsxOTQxLDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk1Niw3ICsx
OTU3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTk3Miw3ICsxOTczLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcgKzE5
ODksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVk
QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
VWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0yMDA0LDcgKzIwMDUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2
ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjEs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWlu
dDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6
bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTIwMzYsNyArMjAzNyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Myw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50
NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMjA2OCw3ICsyMDY5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2
ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDM5M2RlODg1MDcwNy4uNGZkNTc5NWQyZDJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3
ICsxMTksMjcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhp
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90
LCBCdXR0ZXJmbHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRw
dHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBF
bmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
aW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMy
X3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0lu
dDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0q
LCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld01h
cEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDIwZDA0NGY1ZjVjMC4uOGUwYzU4YjhhMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAg
c2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5n
Q29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7
CkBAIC0xMzIwLDYgKzEzMjYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVw
QW5kT1NSRW50ZXI6CiAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgIGNhc2Ug
Q2hlY2tJbkJvdW5kczoKKyAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgICAg
IGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIERvdWJsZVJlcDoKICAgICAgICAgY2Fz
ZSBWYWx1ZVJlcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
TG93ZXJpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2Vy
aW5nUGhhc2UuY3BwCmluZGV4IGUzYTIzOWEzM2UzMC4uNWEyMjczZmQ0ZTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKQEAgLTEw
MCwxMSArMTAwLDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBl
KCkgIT0gTm90VHlwZWRBcnJheSAmJiBtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMo
KSkgewotICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBH
ZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5m
byhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQp
ID0gRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpOworI2lmIENQVShBRERSRVNTNjQpCisgICAg
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxv
dykpIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwg
YmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5k
ZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwg
YmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKKyNpZiBDUFUoQUREUkVT
UzY0KQorICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzcsMTIgKzE0NywyOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBOb2RlKiBs
ZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5k
ZXgsIFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5m
byhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgRWRnZShiYXNlLm5vZGUoKSwgS25vd25D
ZWxsVXNlKSwgc3RvcmFnZSk7Ci0gICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9u
bHksIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgaW5kZXgsIEVk
Z2UobGVuZ3RoLCBLbm93bkludDMyVXNlKSk7CisgICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHM7
CisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICAgICAgaWYgKChvcCA9PSBHZXRBcnJheUxlbmd0aCkg
JiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBo
Lmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpKSB7CisgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5h
cnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVzZSksIHN0
b3JhZ2UpOworICAgICAgICAgICAgbGVuZ3RoLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsK
KyAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlwZSBpcyBhIGR1bW15IHNpbmNlIHRoaXMgbm9k
ZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55dGhpbmcuCisgICAgICAgICAgICBjaGVja0lu
Qm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25v
ZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdp
biwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNlKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJ
bnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9u
b2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVz
ZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHks
IENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgIGluZGV4LCBF
ZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworI2lmIENQVShBRERSRVNTNjQpCisgICAgICAg
IH0KKyNlbmRpZgorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGphY2VuY3lMaXN0ID0gbV9n
cmFwaC5jb3B5VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAgbV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuLmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlwZWRVc2UpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMx
MDg2Li4yZTdmNTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
ICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
IGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2Ug
Q2hlY2tWYXJhcmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25v
CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAg
ICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBi
b29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgog
ICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+
KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERp
cmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggNDc5NjM4NDQ5NDRhLi42Y2VkYjY0MmI4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4ICszMjM4LDQy
IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0
LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3Bl
Y3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0
aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewogICAgIGlmIChu
b2RlLT5vcCgpID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6
SnVtcCgpOwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlH
ZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNo
aWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcp
IHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIHNp
emVfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0g
bV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5v
ZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkK
KyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+
YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVt
cCgpOworI2lmIENQVShBRERSRVNTNjQpCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRy
KGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIG1faml0
LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5k
ZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyNlbmRpZgogICAgIH0KKwor
I2lmIENQVShBRERSRVNTNjQpCisgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoaW5kZXhHUFIs
IHNjcmF0Y2hHUFIpOworICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
KTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNl
bmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNr
KE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewotICAgIEpJVENv
bXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJh
c2VHUFIsIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wID0ganVtcEZvclR5
cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBpbmRleEdQUiwgc2NyYXRjaEdQUik7
CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJldHVybjsKICAgICBzcGVjdWxhdGlv
bkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBqdW1wKTsKQEAgLTMz
ODAsMTAgKzMzOTQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25J
bnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHQKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAg
IFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0
eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5n
cHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBzdGQ6
Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcDsKICAgICBGUFJSZWcgcmVzdWx0RlBSID0g
SW52YWxpZEZQUlJlZzsKQEAgLTMzOTcsNyArMzQxMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlw
ZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9IHByZWZpeChEYXRhRm9ybWF0
SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9ybWF0ID09IERhdGFGb3JtYXRKUzsKIAot
ICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcp
OworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxvYWRGcm9tSW50VHlwZWRBcnJheShzdG9yYWdlUmVnLCBw
cm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIHR5cGUpOwogICAgIGNvbnN0ZXhw
ciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50VHlwZWRBcnJheUxvYWRSZXN1
bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3BlY3VsYXRlLCBzaG91bGRCb3gsIHJlc3Vs
dEZQUik7CkBAIC0zNTU1LDYgKzM1NzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydAogICAg
IEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0
aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7
CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMik7CkBAIC0zNTg3LDcgKzM2MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydAogICAg
IEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHByb3BlcnR5KTsKICAgICBBU1NF
UlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVlR1BSICE9IHN0b3JhZ2VSZWcp
OwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlP
dXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAg
b3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHBy
b3BlcnR5LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkp
IHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1LDEwICszNjYyLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJy
YXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVy
dHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgU3RvcmFnZU9wZXJh
bmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIo
KTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICBHUFJSZWcg
c3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKICAgICBEYXRhRm9ybWF0
IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAK
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQUlJlZyByZXN1bHRSZWcgPSBy
ZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVn
LCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNl
UmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0
eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9hZEZsb2F0KE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzY5MCwxMCArMzcwOSwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2Us
IEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMs
IHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1w
b3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlT3AuZnBy
KCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZwcigpOworICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
b3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHBy
b3BlcnR5KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JU
eXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2hHUFIpOwog
ICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDQ6IHsKQEAg
LTc5NjcsNyArNzk4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3Rv
cmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1
bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVu
dGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0
aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0
b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFs
aWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODAzOSw5ICs4
MDYwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQ
UlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRh
LmdwcigpOwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQUik7Ci0gICAgQVNTRVJUKGJh
c2VHUFIgIT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKIAog
ICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAKQEAgLTgwODMsNiArODEwMSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQo
Tm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKICNlbmRpZgogCisjaWYg
Q1BVKEFERFJFU1M2NCkKKyAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhh
dCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0
b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
KTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0K
IApAQCAtODM0OSwxMiArODM3MiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBDUFUoQUREUkVTUzY0
KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1f
aml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAg
ICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAg
IHN0cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0gfQogfQogCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUq
IG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTExMTksMTAgKzExMTQ4LDI0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRv
IHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBl
KSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIENQ
VShBRERSRVNTNjQpCisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBw
YXRoIGV4cGVjdCBhIGludHB0cl90LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKICAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdw
cigpOwotICAgIAorICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBt
X2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0
dXJlLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsK
KyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5
VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBl
ZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUs
IEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAg
R1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CkBAIC0xMTEzNiw4ICsxMTE3OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIENQVShBRERSRVNTNjQp
CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZh
c3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhl
IGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNf
YXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGlt
aXQpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1
ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3Zl
KHNpemVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihs
b2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkg
KzExMjQzLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0
aFNpemUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQ
UiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIENQVShBRERSRVNTNjQpCisgICAgbV9q
aXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOwor
I2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBUcnVzdGVk
SW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAtMTQxNjcs
NiArMTQyMjMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXko
Tm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3VHlwZWRB
cnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBDUFUoQUREUkVTUzY0KQor
ICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aElu
dDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFVudHlwZWRV
c2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVl
UmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IDA3YjU2M2IzNDgzYS4uZjI5YWMwMWY2MTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5ICsxMzAwLDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3Rh
bnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVj
dChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUqKTsKLSAgICAKKworICAg
IHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSosIFR5cGVkQXJy
YXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUik7CiAgICAgdm9pZCBj
b21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAKKyNpZiBDUFUoQUREUkVT
UzY0KQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsK
KyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJl
KE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJ
R0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdl
dEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9k
ZSopOworI2lmIENQVShBRERSRVNTNjQpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJ
bmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAt
MTQzMSwxMCArMTQzOCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhNaW5NYXgo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwotICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBG
b3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5k
ZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9y
VHlwZWRBcnJheUlzRGV0YWNoZWRJZk91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlC
b3VuZHNDaGVjayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAg
dm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSopOworI2lmIENQVShBRERSRVNTNjQpCisgICAgdm9pZCBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAg
IHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlw
ZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+
KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxl
UHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5v
ZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlw
ZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1
cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+
JiBwcmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9n
cHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4g
aXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEg
Y2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6
ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQ
UlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAo
aS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUg
c2lnbi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBh
eWxvYWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5k
ZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4uMjJmNmY3
Mjc0YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0
dXBsZTxKCiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHBy
ZWZpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5v
ZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFy
cmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAg
ICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJy
YXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlz
IGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJ
ZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC0zNjIwLDYgKzM2MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAg
ICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzk4
LDYgKzQ0MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2Fz
ZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2Ug
QXJpdGhJTXVsOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0
QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCAzYjM5M2Y1Mjc1ZjcuLmY0NDA2MjM5NzExZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5
NCw2ICsyNjk0LDg2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2Rl
KiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNp
ZiBDUFUoQUREUkVTUzY0KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7
CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRs
eSh0eXBlZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7
CisKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5
cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVy
ZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFy
cmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUt
PmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsK
KyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVG
RkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBv
ZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUy
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1w
b3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0
b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVn
IGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5
Qnl0ZU9mZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1
bFR5cGVkQXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JH
UFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0
cihKSVRDb21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVm
ZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRh
dGFHUFIpOworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVl
LCBkYXRhR1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JH
UFIpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BS
LCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAg
ICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEo
KSksIGRhdGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJU
YWcoZGF0YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JH
UFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lm
IENQVShBUk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBl
bXB0eUJ5dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihudWxscHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFD
UFUoQVJNNjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIo
KSk7CisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdElu
dDUyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYgLy8gQ1BVKEFERFJFU1M2NCkK
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5vZGVU
eXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjQsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaDsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgaW5k
ZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRUeXBlZEFycmF5Qm91
bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgICAgICBlbWl0VHlwZWRBcnJh
eUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoLmdwcigpKTsKICAg
ICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwogICAgICAgICAKQEAgLTQzODEs
NiArNDQ2MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorI2lmIFVTRShBRERSRVNTNjQpCisg
ICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNlCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTg4LDE1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBDUFUoQUREUkVT
UzY0KQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUp
OworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAg
ICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01NTg5
LDcgKzU2ODcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAg
aWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZElt
bTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworI2lmIENQVShBRERSRVNTNjQpCisgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCisgICAg
ICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIGluZGV4R1BS
LCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHQxKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNr
IGFnYWluc3QgMCBoZXJlLCBuZWdhdGl2ZSBpbmRpY2VzIGFyZSBjYXVnaHQgYnkgdGhlIGNvbXBh
cmlzb24gd2l0aCBsZW5ndGggcmlnaHQgYWZ0ZXIKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSksIHQxKTsKKyNlbmRpZgogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9m
Qm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAKQEAgLTU3OTAsNyArNTg5
NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0
YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0
YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAg
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0
ZWRJbW0zMigwKSkpOworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEp
OworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5z
dCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMgYXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3
aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMs
IEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNjA0Miw2ICs2MTU0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNr
SW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElN
dWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNl
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJh
eToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAg
ICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlP
ZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAg
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAg
ICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUu
Y3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0
SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAg
ICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoK
ICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5
ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6
CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90Ogog
ICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNh
c2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoK
ICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6
CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAg
ICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNhOGY1Y2ZjNzk1ZS4uODA0ZTZlYjJmNzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUs
NiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIp
CisgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUg
dmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0x
MDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgog
ICAgICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNv
bXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rv
ckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hl
Y2tJbkJvdW5kcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21w
aWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAg
ICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAg
ICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxl
R2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGws
IG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQg
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFs
dWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFs
dWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2lj
QmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2
YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3Rl
ZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQ
dHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBt
X291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5
QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksIAorICAgICAgICBtX291dC5icmFuY2gobV9v
dXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVs
bFZlY3RvclB0cigpKSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJl
KG5vdE51bGwpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRp
b24pOwpAQCAtNDg2Niw3ICs0ODc3LDI1IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBv
aW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1
cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsK
KyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAg
eworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhj
ZXB0U2V0dGluZ1Jlc3VsdCgpOworI2lmIENQVShBRERSRVNTNjQpCisgICAgICAgIC8vIEFJIHBy
b21pc2VzIHRoYXQgdGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJl
IEludDMyLCBzbyB3ZSBtdXN0IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3Bl
Y3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHJlc3VsdCwg
bV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsK
KyNlbmRpZgorICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoKQor
ICAgIHsKKyAgICAgICAgLy8gVGhlIHByZXByb2Nlc3NvciBjaG9rZXMgb24gUkVMRUFTRV9BU1NF
UlQoQ1BVKEFERFJFU1M2NCkpLCB0aGlzIHNob3VsZCBiZSBlcXVpdmFsZW50LgorICAgICAgICBS
RUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRp
bmdSZXN1bHQoKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIocmVzdWx0KTsKICAgICB9CiAKICAg
ICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCkBAIC01MDU0LDggKzUwODMsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1f
bm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSkgewotICAgICAgICAgICAg
ICAgIHNldEludDMyKAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2
ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xl
bmd0aCkpOworI2lmIENQVShBRERSRVNTNjQpCisgICAgICAgICAgICAgICAgTFZhbHVlIGxlbmd0
aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1f
aGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxh
dGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmUobGVuZ3RoLCBtX291
dC5jb25zdEludDY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworICAg
ICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKGxlbmd0aCkpOworI2Vsc2UK
KyAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC01MDY0LDYgKzUwOTgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAor
ICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZp
ZXcoKSk7CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNT
RVJUKENQVShBRERSRVNTNjQpKSwgdGhpcyBzaG91bGQgYmUgZXF1aXZhbGVudC4KKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAg
ICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgfQor
CiAgICAgdm9pZCBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTUxMDgsNyArNTE1MCwyMCBAQCBw
cml2YXRlOgogICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlzIG5v
ZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKICAgICAgICAgLy8gd2UgZG9taW5hdGUgdGhl
bS4KICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGNvbXBpbGVDaGVja0luQm91bmRzSW50NTIoKQor
ICAgIHsKKyAgICAgICAgLy8gVGhlIHByZXByb2Nlc3NvciBjaG9rZXMgb24gUkVMRUFTRV9BU1NF
UlQoQ1BVKEFERFJFU1M2NCkpLCB0aGlzIHNob3VsZCBiZSBlcXVpdmFsZW50LgorICAgICAgICBS
RUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAg
ICAgLy8gU2lnbi1leHRlbmRlZCB0byBhbHNvIGNhdGNoIG5lZ2F0aXZlIGluZGljZXMKKyAgICAg
ICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuc2lnbkV4dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNo
aWxkMSgpKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51
bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbGVuZ3RoKSk7CisgICAgICAgIC8vIEV2
ZW4gdGhvdWdoIHdlIGNsYWltIHRvIGhhdmUgSlNWYWx1ZSByZXN1bHQsIG5vIHVzZXIgb2YgdXMg
c2hvdWxkCisgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9k
ZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAorICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVt
LgorICAgIH0KKwogICAgIExWYWx1ZSBjb21waWxlR2V0QnlWYWxJbXBsKCkKICAgICB7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CkBAIC02MDA4LDExICs2MDYzLDE4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzSW5Cb3VuZHMgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc091dE9mQm91bmRzID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFi
b3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBpc091dE9mQm91bmRz
Q29uZGl0aW9uOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ1LnVzZUtpbmQoKSA9PSBJ
bnQ1MlJlcFVzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHByZXByb2Nlc3Nv
ciBjaG9rZXMgb24gUkVMRUFTRV9BU1NFUlQoQ1BVKEFERFJFU1M2NCkpLCB0aGlzIHNob3VsZCBi
ZSBlcXVpdmFsZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6
ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpc091dE9mQm91bmRzQ29uZGl0aW9uID0gbV9vdXQuYWJvdmVPckVxdWFsKG1fb3V0LnNpZ25F
eHQzMlRvNjQoaW5kZXgpLCBsb3dTdHJpY3RJbnQ1MihjaGlsZDUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZDUudXNl
S2luZCgpID09IEludDMyVXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3Vu
ZHNDb25kaXRpb24gPSBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5j
aChpc091dE9mQm91bmRzQ29uZGl0aW9uLCB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShp
c0luQm91bmRzKSk7CisKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhpc0luQm91bmRzLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUodHlw
ZSkpOwogICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC04
MTY5LDk1ICs4MjMxLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAg
ICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHko
dHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMiht
X25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUs
IG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAg
ICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkp
OwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNt
YWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUg
PQotICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291
dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAg
ICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAg
ICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRk
KGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9y
U2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93
Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxs
b2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMo
Ci0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlpl
cm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6
ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFpl
cm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNp
ZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXpl
UHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0g
ICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7
Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVl
UmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1
dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGlj
YXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVl
IHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsK
IAotICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVf
Q0FTRShuYW1lKSBcCi0gICAgICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAg
ICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4o
c3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5H
X0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQ
RV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBm
YXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1f
b3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZh
c3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAg
ICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFz
dFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXpl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9y
YWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFn
ZSk7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAot
ICAgICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93
UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNv
bnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6
R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdl
bmVyYXRvcih2bSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BS
KCksIGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jl
c3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAg
ICAgICAgIExWYWx1ZSBzaXplID0gbG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAK
LSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAg
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwg
c2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBl
ZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTgyNzcsNyArODI2MiwxMDQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1p
dE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUs
IExWYWx1ZSBzaXplNjRCaXRzKQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91
Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBt
X291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1f
b3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisg
ICAgICAgICAgICBtX291dC5hYm92ZShzaXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJy
YXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nh
c2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxh
c3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAg
ICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0
aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJv
dW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAg
ICAgIExWYWx1ZSBieXRlU2l6ZSA9CisgICAgICAgICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywg
bV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAg
ICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5
dGVTaXplID0gbV9vdXQuYml0QW5kKAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6
ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExW
YWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3Jh
Z2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNw
bGF0V29yZHMoCisgICAgICAgICAgICBzdG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJa
ZXJvLAorICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwg
bV9vdXQuY29uc3RJbnRQdHIoMykpKSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAg
ICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0
RSkKKyAgICAgICAgeworICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUg
PSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPmFwcGVuZChzaXplNjRCaXRzLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0
ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigp
LCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdl
ID0gYXV0aGVudGljYXRlOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21C
bG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFs
dWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5
VHlwZSkgeworI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBj
YXNlIFR5cGUgIyMgbmFtZTogXAorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2Nh
dGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNs
b3dDYXNlKTsgXAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FS
UkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5k
ZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAg
ICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3Ry
dWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3Jl
UHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192
ZWN0b3IpOworI2lmIENQVShBRERSRVNTNjQpCisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0
Qml0cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
CisjZWxzZQorICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKHNpemU2NEJp
dHMpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsK
KyNlbmRpZgorICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVk
QXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7
CisKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RS
ZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250
aW51YXRpb24pOworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgo
CisgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25z
KSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2Nh
dGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sx
XS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQ
UigpKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFs
dWUpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNs
b3dSZXN1bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0
SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7CkBAIC0xNDY1Niw2ICsxNDczOCw4IEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5k
IGVuZCBhcmUgMzItYml0cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdv
cmQgYmV0d2VlbiBiYXNlK2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29y
ZHMoTFZhbHVlIGJhc2UsIExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBj
b25zdCBBYnN0cmFjdEhlYXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1
bnJvbGxpbmdMaW1pdCA9IDEwOwpAQCAtMTU1OTEsNyArMTU2NzUsMTMgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNp
ZiBDUFUoQUREUkVTUzY0KQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsK
KyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBO
byBuZWVkIGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVj
ayBhZ2FpbnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3Ro
ID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUg
aW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRl
eFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0
LDcgKzE1ODI0LDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBt
X25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICAgICAgc3Bl
Y3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGlu
ZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY29tcGFy
aXNvbiBvZiBpbmRleCB0byAwLCB0aGUgY2hlY2sgYWdhaW5zdCBsZW5ndGggY2F0Y2hlcyB0aGF0
IGNhc2UKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQ
dHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBp
bmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRh
dGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzMzMiwxMSBAQCBwcml2YXRlOgogICAg
ICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAjaWYg
Q1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUp
IHsKKyNpZiBVU0UoQUREUkVTUzY0KQorICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9v
dXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbHNl
CiAgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRl
eCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBub25OZWdh
dGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsg
fQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBy
ZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExW
YWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIoYmFz
ZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBj
b25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQpOyB9
CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RFcXVh
bChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5z
aWNFbWl0dGVyLmNwcAppbmRleCAyNTIwZjhjYzQ0NTYuLjNmYjcxNmIxNWZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODMsMjMg
KzgzLDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dl
dHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJpbnNp
YygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgQ1BVKEFE
RFJFU1M2NCkKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0
ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BS
KTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRj
aEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIs
IHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzog
ewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
LT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBDUFUoQUREUkVTUzY0KQorICAgICAgICBq
aXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBpZiAoZWxl
bWVudFNpemUodHlwZSkgPiAxKQorICAgICAgICAgICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0z
Mihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUy
KHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7
CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRl
LmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIp
OwotCiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpIHsKLSAgICAgICAgICAgIC8v
IFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBo
YXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCi0gICAgICAgICAgICBqaXQu
bHNoaWZ0MzIodmFsdWVHUFIsIEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIp
OworICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gQURE
UkVTUzMyIHBsYXRmb3JtcyBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQg
b3ZlcmZsb3dzIGFuIGludDMyLgorICAgICAgICAgICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0z
Mihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKICAgICAgICAgfQotCiAgICAgICAg
IGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0
ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzAsOCArMTM5LDEyIEBA
IHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIo
bnVsbHB0ciksIHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmaml0KTsK
LSAgICAgICAgCisKKyNpZiBDUFUoQUREUkVTUzY0KQorICAgICAgICBqaXQuYm94SW50NTIodmFs
dWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNl
bHNlCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgog
ICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMu
LmZhYzhlMGFjNjY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC05MzcsMTAgKzkzNyw4IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAg
ICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3Qo
KSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7
Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsK
KyAgICAgICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUs
IGFycmF5UHJvZmlsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAgLTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBp
bnQzMl90IGkgPSAqaW5kZXg7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBp
ID0gKmluZGV4OwogICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAg
ICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQor
ICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVl
KS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9m
aWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAg
ICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJh
eVByb2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAg
IGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAo
b2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAm
JiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgPCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNM
ZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJy
YXlXaXRoQ29udGlndW91cworICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90
PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBt
YXliZSBEb3VibGU6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mjk0MAogICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVj
dCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFs
dWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkp
KTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0Nl
bGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3Vu
ZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKaW5kZXggNTY4MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0
T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewog
ICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAg
ICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpT
VmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNr
aXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3MCwxMyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUp
OwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgp
OworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAg
ICAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5
R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAg
ICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5T
ZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5k
ZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBp
ZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7
CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI0MjFhN2Zh
NDEwZS4uYjkxNWEzY2JmOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFM
VUU2NAogICAgIGNvbnN0IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3Ry
dWN0dXJlSURUYWJsZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5k
CiAKK2lmIEFERFJFU1M2NAorICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNv
bnN0ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwog
Y29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQg
b3IgQVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5UHJv
ZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAg
IGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUK
IGVuZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdl
dEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBpbmRl
eCBpcyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21hY3Jv
IGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlz
aERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmly
c3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVz
IGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVb
YmFzZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwxMSAr
MTMyNiwyNiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaElu
dEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAg
ICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAg
bG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAg
YmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgaWYgQUREUkVTUzY0CisgICAg
ICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAor
ICAgICAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5n
dGgKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgICAgIGVu
ZAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlvbmFs
bHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQgb24g
b3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBpZiBBRERSRVNTNjQKKyAgICAgICAg
ICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQ
YXRoCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBKU0FycmF5QnVmZmVy
Vmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVuZAorICAgIGVuZAorCisg
ICAgaWYgQUREUkVTUzY0CisgICAgICAgIGJxYmVxIGluZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhM
ZW5ndGgsIC5zbWFsbFR5cGVkQXJyYXkKKyAgICAgICAgc2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5z
bWFsbFR5cGVkQXJyYXk6CiAgICAgZW5kCiAKICAgICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6
bV92ZWN0b3JbYmFzZV0sIHQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDUwZDVkYmRmNjAyYS4uNjc4
ZWM2NGM2NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhl
ZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlW
YWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxU
eXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFs
LCBtYWNybyAoKSBlbmQsIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IGQ4NGI2ZWFkMzdmZC4uZTc1YjgyYzc1NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEz
LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNj
cmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJh
eSgpCisgICAgICAgIGlmIEFERFJFU1M2NAorICAgICAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlW
YWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjcmFzaCgpCisgICAgICAgIGVuZAorICAgIGVuZAor
CiAgICAgbWV0YWRhdGEodDUsIHQyKQogCiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBAIC0xNzIzLDcg
KzE3MzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWws
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogCiAgICAgZ2V0KG1fcHJvcGVydHks
IHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdl
dEJ5VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKKyAgICBzeGkycSB0MSwgdDEgIyBUaGlzIHNp
Z24tZXh0ZW50aW9uIG1ha2VzIHRoZSBib3VuZHMtY2hlY2tpbmcgaW4gZ2V0QnlWYWxUeXBlZEFy
cmF5IHdvcmsgZXZlbiBvbiA0R0IgVHlwZWRBcnJheS4KIAogICAgIGxvYWRDYWdlZEpTVmFsdWUo
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKICAgICBtb3ZlIFRhZ051
bWJlciwgbnVtYmVyVGFnCkBAIC0xNzYzLDcgKzE3NzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAg
ICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91
YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAs
IHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlw
ZWRBcnJheSwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4
YTFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQyLDcgKzQyLDcgQEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1
ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rv
ci5nZXQoKS5jb3B5UmVmKCk7CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRh
KGRhdGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAg
ICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250
ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAg
ICAgb3RoZXIudHJhbnNmZXJUbygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVu
dHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEo
ZGF0YSwgc2l6ZUluQnl0ZXMpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpA
QCAtMTA5LDIzICsxMDksMjEgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAg
ICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5
QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0
cnlBbGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1i
aXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXpl
OwotICAgICAgICBpZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXpl
IHx8IHRvdGFsU2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVz
ZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNp
emVJbkJ5dGVzID0gbnVtRWxlbWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVT
aXplOworICAgIGlmIChzaXplSW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMu
dmFsdWUoKSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0
PHNpemVfdD4obnVtRWxlbWVudHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNp
emUpOwotICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6
ZV90IGFsbG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9j
YXRpb25TaXplKQogICAgICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxs
b2MgYWN0dWFsbHkgYWxsb2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNl
IG51bGwgdG8gbWVhbiB0aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBk
YXRhID0gR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9u
U2l6ZSk7Ci0gICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1f
ZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0
YSkgewogICAgICAgICByZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcg
QEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFs
aXplKQogICAgICAgICBtZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9z
aXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRl
cy52YWx1ZSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKTsKICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAg
UkVMRUFTRV9BU1NFUlQob3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxl
bWVudEJ5dGVTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAg
IHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0
aCgpKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewog
ICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYg
KCFidWZmZXIpCkBAIC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhp
cyBpcyBvbmx5IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xv
d0Rvd25BbmRXYXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQg
aGF2ZSBhbHJlYWR5IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2Fn
ZTo6aXNFbmFibGVkKCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6
Y29udGFpbnMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAt
IDEpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3
IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9p
ZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291
bGQgaW50cm9kdWNlIGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNh
Z2VkIGFuZCBnZXQgYWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5
LiBXYXNtIHNob3VsZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1Jl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBk
ZXN0cnVjdG9yKQogewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVH
aWdhY2FnZSgpOwpAQCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAg
ICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewog
ICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3Ro
ZXIpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgo
KSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxl
bmd0aCkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRz
LnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0
aWFsaXplKTsKQEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAg
ICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVM
ZW5ndGgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVh
dGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9u
dEluaXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQog
ewogICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9s
aWN5KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0
aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUo
bnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikK
QEAgLTI2NiwxNSArMjY0LDE3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0
IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywg
Y29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5
dGVMZW5ndGggfHwgc291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJy
YXlCdWZmZXIoV1RGTW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCks
IHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNT
RVJUKHNvdXJjZSk7CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRl
TGVuZ3RoKTsKKyAgICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9s
aWN5IHBvbGljeSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShz
aXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVy
Q29udGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMs
IGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZl
cjo6QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11
bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwg
dW5zaWduZWQgcmlnaHQpCitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgs
IHNpemVfdCBsZWZ0LCBzaXplX3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQp
OwogICAgIGlmICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1
ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQp
CiAgICAgcmV0dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRv
dWJsZSBpbmRleCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUg
aW5kZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgo
KTsKKyAgICBzaXplX3QgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5k
ZXggPCAwKQogICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1
cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBj
b25zdAogICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiks
IGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAor
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNp
emVfdCBiZWdpbiwgc2l6ZV90IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVn
aW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0g
ZW5kID8gZW5kIC0gYmVnaW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsK
ICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdN
b2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5k
ZXggNjhmZjkwZTEzZWJhLi4yZmQwODBkNjU3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCisjaWYgQ1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9T
SVpFICgxdWxsIDw8IDMyKQorc3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2Yo
dWludDY0X3QpKTsKKyNlbHNlCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3QpID09IHNpemVv
Zih1aW50MzJfdCkpOworLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUg
dGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdC
IG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0
IHNob3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIp
IGlmIGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZm
ZmZ1CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzYw
LDcgQEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRS
ZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJD
b250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAg
ICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMo
KTsKICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJl
TnVsbChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHByaXZhdGU6CiAgICAg
dXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVz
OworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250
ZW50cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWdu
ZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNp
emVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMm
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9
KEFycmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2
b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRl
cygpKTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
SW5CeXRlczsgfQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZUluQnl0ZXM7IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFyZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJ
bml0aWFsaXplCiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOwor
ICAgIHZvaWQgdHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFy
ZWQoKTsKICAgICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1
LDI4ICsxMTQsMjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2Vk
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJl
ZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBt
X3NpemVJbkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJy
YXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1
YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9p
ZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3Qg
Ynl0ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUo
Y29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCog
c291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWlu
dDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
UHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQq
IGRhdGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGlu
ZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVu
Z3RoKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRT
aGFyaW5nTW9kZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBw
dWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNl
KGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVu
c2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRF
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwg
c2l6ZV90IGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5s
aW5lIHZvaWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRp
dmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMm
JiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kp
OworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVy
Q29udGVudHMmJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQg
Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwor
ICAgIGlubGluZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0
YXRpYyBpbmxpbmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXpl
X3QgcmlnaHQpOwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcg
KzIwMSw3IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1
cm4gbV9jb250ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVu
Z3RoKCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBA
QCBib29sIEFycmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6
OmdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2Jh
Ymx5IHdhbnQgdG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhp
bmcuCi0gICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVu
Z3RoKCk7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIu
LjQ3MzcyMjc0NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVm
ZmVyVmlldygKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBt
X2J5dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQog
ICAgICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+
IGxlbmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93
PiBsZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjkxZDgx
MzFmOTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAg
ICAvLyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBz
dGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQo
c2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9m
ZnNldCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVy
aWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3
aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3Qg
QXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxl
bWVudHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVu
IHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGlj
IGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUp
CiAgICAgewotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgo
KTsKKyAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAg
ICAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBi
eXRlT2Zmc2V0KSAvIHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChi
eXRlTGVuZ3RoIC0gYnl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXpl
KTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMs
NDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9i
YWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChB
cnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBz
ZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGlu
ZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5n
dGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zm
c2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wg
Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNp
emVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWdu
ZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5s
aW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGlu
dCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5z
aWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQg
aXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8g
b3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBi
dWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lk
IGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBi
dWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWdu
ZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBzaXpl
X3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9mZnNldCwKKyAgICAgICAgc2l6
ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChV
SU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIHNpemVfdCBt
YXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0
ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7
CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAg
ICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAg
ICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAg
ICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAt
ICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVja2VkU2l6ZSBhZGp1c3RlZE9mZnNl
dCA9ICpvZmZzZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAgICAg
ICAgYWRqdXN0ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRqdXN0
ZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBidWZm
ZXIuYnl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3Ro
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNldC52
YWx1ZSgpOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVM
ZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVudHMgPSBz
dGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB1
bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBDUFUoQUREUkVTUzY0KQorICAgIHVpbnQ2
NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZzZXQg
OiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVk
IG1fYnl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNp
bmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIn
cyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
IGFycmF5LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8
IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxv
dworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgYXJyYXktPmJ5
dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFk
ZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VBZGRy
ZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBk
YXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3
OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBz
aXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAg
ICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNt
YWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVpbnQ4X3QqIGJhc2UgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsg
Ynl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVm
ZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVM
ZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0
KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAo
IWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRl
TGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsK
ICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5n
dGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1Jh
bmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9v
bCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVf
dCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkK
LSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewot
ICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5n
dGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90
KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNl
dChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgK
LSAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9m
ZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBz
dGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAw
OwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChl
bmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQg
PCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
bmQgLSBzdGFydCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5
QnVmZmVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0
b21pY3NPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAKaW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIw
LDcgQEAgc3RhdGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nl
c3NJbmRleFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VS
VCh0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9N
QVgpKTsKKwogICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkp
IHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3Mg
aW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBk
Y2MyZjUwNjRhZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLURhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
Ynl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0
ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5n
dGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIx
NDQuLjM0MDI2NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmll
dy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcg
ZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFW
aWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5
VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2ln
bmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisg
ICAgVCBnZXQoc2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAo
b2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQo
dW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCisgICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxh
dGUgZ2V0PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0
YXR1cyB8fCAqc3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBU
IHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2
b2lkIHNldChzaXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAg
ICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJy
YXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRl
eCBiZTdlNmMwNTM0ZmEuLjViZTgxNjVmNzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMzLDI0IEBA
IG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVy
aWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7
CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJl
c3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wg
c2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50
LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldFJhbmdlSW1wbCgKICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLApAQCAtNTgsMzkg
KzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVk
IG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wgemVyb1JhbmdlKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBjb3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNl
dCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwgY291bnQgKiBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6
ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFj
aGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgo
KSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwog
ICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChzaXplX3Qg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRh
KClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0
YSgpW2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAg
Ym9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQs
IHNpemVfdCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UmFuZ2VJbXBsKAogICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBAIC05OCwxOCArOTgsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zm
c2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgK
LSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8g
Y2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7
CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGNvdW50LCB0
aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAg
ICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJl
dHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVibGljOgogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uZjFhNzZkZmQzYmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBB
cnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
YXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBA
IC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0
cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQg
PSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcg
QEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsK
QEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRl
KFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwot
ICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFT
U0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlw
ZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4g
dHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjNkOGU0NzQ1
MDY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLAorICAg
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVs
ZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1
cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwxOCBAQCBK
U0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4
dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQg
YXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWRTaXplIHNpemUg
PSBsZW5ndGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZS5oYXNPdmVy
Zmxvd2VkKCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICog
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBWZWN0b3JU
eXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSksIGxlbmd0
aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwogICAgIGlmICghbV92ZWN0
b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkKICAgICAgICAg
bWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXpl
KTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7
CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0gT3ZlcnNp
emVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIs
Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQog
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkK
QEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4
dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHNpemVfdCBieXRlT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVy
ZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUpCkBA
IC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpTVHlw
ZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5cGVd
OwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0Citz
aXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAgIHJl
c3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsK
KyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVja2Vk
IGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNoZWNr
IHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVtZW50
U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmll
dzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlCdWZm
ZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxl
bmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAg
ICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0zMTUs
OCArMzIyLDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBv
c3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hh
cmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSB0aGlz
LT5ieXRlT2Zmc2V0KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAg
IHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlw
ZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uMTRmYTViYmE1YTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6
ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmYXN0U2l6ZUxpbWl0
ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxW
ZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVp
bnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIHNpemVfdCBz
aXplT2Yoc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOwor
ICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihz
aXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYsMjUg
KzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIEluaXRpYWxp
emF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAgICAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSos
IHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9k
ZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXpl
LCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAgICAvLyBU
aGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQncyB1c2Vk
IGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3Ry
dWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBDb25zdHJ1
Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAog
ICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAg
ICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgICAgICAKICAgICAgICAg
ZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFn
KTsKKyAgICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmll
d1RhZyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX3N0cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAg
IHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNp
emVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFy
cmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZs
eSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBA
IC0xNjIsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwot
ICAgICAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAg
ICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJm
bHk7CiAgICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkKiB2ZWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkpOyB9CiAg
ICAgdm9pZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Zl
Y3Rvci5nZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0
KCk7Ci0gICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJy
ZW50bHkoKTsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVPZmZzZXQoKTsKKyAgICBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xl
bmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJh
eUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1f
dmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAg
ICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4IDFkMDcy
YjcxYWNiNy4uZDg1YjMyODMwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTksNyArOTksNyBA
QCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQog
ICAgIHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVj
dG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVy
LT5kYXRhKCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlbHRhKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihkZWx0YSk7
CiAgICAgaWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAgLTExMCwxNCAr
MTEwLDE0IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0
SW1wbCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIEpTQXJyYXlC
dWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKK2lubGluZSBzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCB1bnNp
Z25lZD4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgc2l6ZV90PigpOwog
fQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBKU0Fy
cmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5
dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+Pigp
OworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0Fy
cmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBiMWVhOWRhMGZlNGMuLmY2
YzQ1NDNmZTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25tb3ZhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtMjk4LDYgKzI5OSw3IEBAIHB1YmxpYzoKICAg
ICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0
b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvSW5kZXgoSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OworICAgIHNpemVfdCB0
b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkg
Y29uc3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAppbmRleCAzNGVhMjE0NjBhMGQuLjNiM2E4MDk2OTNmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxNCArNjks
NDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJp
bmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkgeworCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKwor
ICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwg
IiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGluZSBzaXplX3Qg
SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gYXNJ
bnQzMigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsK
KworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
KSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2Ui
KSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBBbGwgb2YgdGhpcyBtb25z
dHJvc2l0eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0IG9uIDE8PDMyLgorICAg
IHNpemVfdCBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1dE9mZnNldCA9IDA7Cisg
ICAgc2l6ZV90IGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7
CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4KSkgeworICAgICAgICBv
dXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZzZXQgPSBpbnQzMk1heDsK
KyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRwdXRPZmZzZXQgKyBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0M6OnRvSW50MzIoZCAtIGlu
cHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2lu
dGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNE
YXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQs
IEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRh
Vmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6
ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5hNWU3OGM0NjliMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYsMTQgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUo
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8g
RHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3Qg
aW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24g
d2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBK
U09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmpl
Y3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBB
cnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
cjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmlu
ZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSAr
MTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9m
IERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29s
IGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBA
IC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlz
RGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlm
IChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBl
bGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmll
dyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5
dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBk
YXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0g
ICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
Pj0gMykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJh
eUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5n
dGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0
aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMg
YWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi5lYTFlZjljMTNm
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZl
RnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
Q2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVy
ZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20g
SlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAg
ICBzaXplX3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMg
dGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UK
Ky8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdv
cmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1
YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0
YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFt
ZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlw
ZWRWZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAg
ICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5C
b3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
OwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4
ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2Ug
dGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVy
dFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNp
emVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBt
X2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVp
Y2tseTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1
aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZl
Y3RvcigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNp
Z25lZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJ
bmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBp
LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkg
PCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB2b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAg
IHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlw
ZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9i
YWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5h
dGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xv
YmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxF
bGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFs
dWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRh
cHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4g
dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxB
ZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5
OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2Fu
QWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
CiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAm
JiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJm
bG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICBy
ZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsK
ICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJl
dHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0
aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxP
YmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFs
c2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJv
b2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2ln
bmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5
cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qg
b2Zmc2V0LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENv
cHlUeXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAg
LTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNz
ZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlw
ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCos
IHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAor
ICAgICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAK
ICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQg
QXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0
OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAg
ICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFO
KGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uMzM2ZjFhZWUzZjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0Myw3ICsxNDMs
NyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5l
ZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3Vt
ZW50LCBzaXplX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoT3B0KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAg
IGlmIChsZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsK
ICAgICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG8KICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkg
b2YgdGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmpl
Y3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICBzaXplX3QgbGVuZ3RoOwogICAgICAg
ICBKU0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChp
c1R5cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkp
IHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUu
dG9JbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gZmly
c3RWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5n
dGgpKTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAg
fQogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAx
KSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1w
bChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFsdWUgaXMg
cHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAgICAgICAg
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAg
ICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAg
ICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNz
OjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDog
Imxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVHlwZWRB
cnJheUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIz
ODc5MmQxMC4uYTNkZGMxZjgzNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5j
bHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2
LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJl
LCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0
aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksMTcgKzEwMCwxNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVfdCBzaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBpZiAo
IUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNl
dCwgbGVuZ3RoLCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJS
YW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIGVsZW1lbnRTaXplKSkgewog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZl
cmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkpIHsKKyAgICBpZiAoIUFy
cmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBlbGVt
ZW50U2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25l
ZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTQ1LDcgKzE0Niw3IEBA
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBl
KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQg
b3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVf
dCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3
ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRo
U3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlz
dGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXpl
ICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5
VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAg
ICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRv
cj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZh
bHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8g
Tm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVy
ICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZl
VmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0
ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5
LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJh
bnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewog
ICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVy
dFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZl
VmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxl
bmd0aDsgaS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBz
ZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ld
KTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQg
b2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBz
aXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChj
aS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAg
ICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUg
dGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1
c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihv
YmplY3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgo
KSk7CiAgICAgICAgIApAQCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBldmVyIGNh
bGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZzZXQpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkp
OwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3cs
IHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9v
bCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAg
ICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vz
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA0YzBlYmQx
ZjYxNjUuLmE5NzQ3MzczYzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNW
YWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQcm9maWxl
OwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50ZXJuYWxG
dW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7
CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5T
ZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldElu
ZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJ
bmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9v
bCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKLSAgICBK
U1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OworICAg
IEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJyYXlQcm9m
aWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAg
Ci0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKworICAg
IC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVM
YXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdldEluZGV4
UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIp
IGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMt
PmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNhbkdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0g
ICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAg
ICB2b2lkIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nl
c3MKKyAgICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSop
OworICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0
Y2ggKGluZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZ
UEVTOgotICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
aSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkoaSwgdiwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFM
TF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFC
TEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05U
SUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9J
TkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IXYuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNv
bnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5H
X1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+
Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAg
ICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAg
ICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7
CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7
CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWlu
Z1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAg
aWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0
ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAg
ICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHkt
PnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZl
Y3Rvckxlbmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFn
ZSgpLT5tX3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0Nv
cHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZs
eS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT5tX3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhR
dWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNmUxYmIxYjU5ZjFlLi5j
MDgyNmJjZGYyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAogICAgIH0K
IH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2Jq
ZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0jZGVmaW5l
IENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlw
ZSA6XAotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJyYXkgKj4o
dGhpcyktPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUp
Ci0jdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KKyNpZiBDUFUoQUREUkVTUzY0KQorICAgIGlmIChpID4gQXJy
YXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUpCisg
ICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7CisjZW5kaWYKIAotaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QK
LXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUo
bmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcgKzUwNiw1
MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1
bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogfQotICAg
IAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdl
SW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAgIEFycmF5
U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKKyAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICBK
U1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAgIGlmICgh
b2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAgICAgICAg
aWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5n
dGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUq
IGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIENQVShBRERSRVNT
NjQpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8geyBc
CisgICAgICAgIGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5n
dGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJl
TGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUg
VVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7IFwKKyAgICBVTlVTRURf
UEFSQU0oYXJyYXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZp
bmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlU
eXBlIDogeyBcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAj
IyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhR
dWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisgICAgICAgIHR5cGVk
QXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFURV9BUlJBWV9QUk9G
SUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAg
IEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVE
X0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisjdW5kZWYgVVBEQVRF
X0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHko
Vk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lm
IEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5M
SU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2Fu
R2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUg
cmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3Ry
aW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi5i
N2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Q
YWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50
LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1
ZGUgIkFycmF5QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAz
MikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291
bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50MzJfdCBtX3BhZ2VDb3VudDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGU1YjdjZDQ2NjE4Ny4uZTZhYTdhMjBlYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDIxLTEwLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBNYWRlIHNv
bWUgb2YgQ2hlY2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVy
VGhhbk9yRXF1YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZm
ZXIgYW5kIGVhc3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAg
ICogd3RmL0NoZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgor
ICAgICAgICAoV1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVy
VGhhbk9yRXF1YWwpOgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG5vbi1IQVZFKENGTkVUV09SS19OU1VS
TFNFU1NJT05fU1RSSUNUUlVTVEVWQUxVQVRFKSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFy
Z2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28g
aW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0
byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9u
IHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFs
dWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTks
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291
cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4K
ICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6
bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAg
IHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNp
c2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4u
CiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2ln
biwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAg
ICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkg
Z3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+
IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZh
bHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUg
Y29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29s
IGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIg
Ym9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAg
aWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+
IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQ
cm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sK
KyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOwor
ICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsK
K30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQs
NCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3Vu
ZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93
czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM2
ZDE1ZWRkMTNjLi5iZDY4NWQzYTdlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAy
MS0xMC0xMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgU29tZSBwYXJ0cyBv
ZiBXZWJDb3JlIHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5vdCBidWlsZCBhZnRlciBJIG1h
ZGUgdGhlIGxlbmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5cyByZXR1cm4gVUNQVVJlZ2lz
dGVyIGluc3RlYWQgb2YgdWludDMyX3QuCisgICAgICAgIE1vc3QgZml4ZXMgd2VyZSB0cml2aWFs
LCB0aGUgb25seSBleGNlcHRpb24gaXMgU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCwgd2hlcmUg
SSBoYWQgdG8gaW5jcmVtZW50IHRoZSB2ZXJzaW9uIG51bWJlciwgYXMgQXJyYXlCdWZmZXIgKGFu
ZCBBcnJheUJ1ZmZlclZpZXdzKSBub3cgd3JpdGUvcmVhZCB0aGVpciBsZW5ndGggaW4gYSA2NC1i
aXQgZmllbGQgKGFuZCBzYW1lIGZvciB0aGUgYnl0ZU9mZnNldCBvZiBBcnJheUJ1ZmZlclZpZXcp
LgorCisgICAgICAgIEkgYWxzbyBoYWQgdG8gYWRkIGEgdGVzdCBpbiBQaXhlbEJ1ZmZlci5jcHAg
dGhhdCB0aGUgc2l6ZSBvZiB0aGUgQXJyYXlCdWZmZXIgaXQgd2lsbCB0cnkgdG8gYWxsb2NhdGUg
aXMgPCBJTlQzMl9NQVguCisgICAgICAgIE90aGVyd2lzZSwgdGhlIHRlc3QgTGF5b3V0VGVzdHMv
ZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1pbWFnZWRhdGEt
b3ZlcmZsb3cuaHRtbCB3aGljaCBjaGVja3MgdGhhdCB2ZXJ5IGxhcmdlIGltYWdlcyBhcmUgcHJv
cGVybHkgcmVqZWN0ZWQgd2l0aG91dCBjcmFzaGluZywgd291bGQgdGltZW91dC4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGFzIHRoZSBjb2RlIGlzIGFscmVhZHkgZXh0ZW5zaXZlbHkgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cywgYW5kIEkgaW1wbGVtZW50ZWQgbm8gbmV3IGZlYXR1cmVzLgor
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNl
cjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFs
eXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OmR1bXBBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJp
YWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxp
emVyOjpkdW1wSWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXpl
cjo6cmVhZEFycmF5QnVmZmVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFs
aXplcjo6cmVhZEFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxp
emVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURl
c2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlY29kZSk6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Cb3guaDoKKwogMjAyMS0xMC0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBIYXZlIHRoZSBTY3JvbGxpbmdUcmVlIHRyYWNrIG5vZGVzIHdp
dGggYW5pbWF0ZWQgc2Nyb2xscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmNwcAppbmRleCBjYjdlODRkNDUzODMuLmIxOGQ4ZmQ2YTM4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE5
OCw3ICsxOTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFu
bmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgZGVzdGluYXRpb24sCiAgICAgaWYgKGJ1ZmZlck9mZnNl
dCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVk
IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3QgY291bnQgPSBk
YXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oZGVzdGluYXRp
b24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0g
Y2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJjZSwg
dW5zaWduZQogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJP
ZmZzZXQ7CisgICAgc2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAg
ICBjb3VudCA9IHN0ZDo6bWluKHNvdXJjZS5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwogICAgIAog
ICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBzb3VyY2UtPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5
NDQwMjJlZC4uZDUzYjllNjQ0ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTE5Niw4ICsxOTYsOSBAQCB2b2lk
IFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3Rp
bmF0aW9uQXJyYXkpCiAgICAgZG9GRlRBbmFseXNpc0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAg
Ly8gQ29udmVydCBmcm9tIGxpbmVhciBtYWduaXR1ZGUgdG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVs
cy4KLSAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7
Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25B
cnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZl
cigpLnNpemUoKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFy
cmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgs
IGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25z
dCBkb3VibGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVs
cyA/IDEgOiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29u
c3QgZG91YmxlIG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjgsOSBA
QCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFy
cmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3Qg
bGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7Cisg
ICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsK
KyAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3Ro
ID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGgg
PiAwKSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNp
emUoKSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXpl
OwogICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Myw5IEBA
IHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkm
IGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IHVuc2lnbmVkIGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9
IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVf
dCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6
ZV90IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6
bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewog
ICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0g
SW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAg
ICAgQVNTRVJUKGlzSW5wdXRCdWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4u
MTgyMjFlMzVhYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9XYXNtTW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZs
YWdzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Miw4ICszNDMsOSBA
QCBzdGF0aWMgdW5zaWduZWQgY291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2Vz
KQogICogVmVyc2lvbiA3LiBhZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0
dHJpYnV0ZS4KICAqIFZlcnNpb24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29s
b3JTcGFjZSBhdHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdl
Qml0bWFwIGNvbG9yIHNwYWNlLgorICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVuZ3RoIChh
bmQgb2Zmc2V0cykgb2YgQXJyYXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgZnJvbSAz
MiB0byA2NCBiaXRzCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9
IDk7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSAxMDsKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBUZXJtaW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBOb25JbmRleFByb3BlcnRpZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMzk5LDcgKzQwMSw3IEBA
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7
CiAgKiAgICB8IE9iamVjdFJlZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRh
ZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFycmF5QnVm
ZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxi
eXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAg
ICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6
dWludDY0X3Q+IDxieXRlTGVuZ3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZl
cmVuY2UpCiAgKiAgICB8IENyeXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4g
PGZhY3RvcjpieXRle3dyYXBwZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAogICogICAg
fCBET01SZWN0CkBAIC00NjMsNyArNDY1LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmlu
Z0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIE9iamVjdFJlZmVyZW5jZVRhZyA8
b3BJbmRleDpJbmRleFR5cGU+CiAgKgogICogQXJyYXlCdWZmZXIgOi0KLSAqICAgIEFycmF5QnVm
ZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBB
cnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQ2NF90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9Pgog
ICogICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICBTaGFy
ZWRBcnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAtOTk4LDggKzEwMDAsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlC
dWZmZXJWaWV3KHZtLCBvYmopOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YXJyYXlCdWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIHVp
bnQ2NF90IGJ5dGVPZmZzZXQgPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKTsKKyAgICAg
ICAgd3JpdGUoYnl0ZU9mZnNldCk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVMZW5ndGggPSBhcnJh
eUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CiAg
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXct
PnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAg
ICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9y
OwpAQCAtMTEzMSw4ICsxMTM1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlKHN0YXRpY19j
YXN0PGRvdWJsZT4oYnVmZmVyLT5yZXNvbHV0aW9uU2NhbGUoKSkpOwogICAgICAgICB3cml0ZShi
dWZmZXItPmNvbG9yU3BhY2UoKSk7CiAKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKKyAgICAgICAgQ2hlY2tlZFVpbnQzMiBieXRlTGVuZ3RoID0gYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgaWYgKGJ5dGVMZW5ndGguaGFzT3ZlcmZsb3dlZCgp
KSB7CisgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRp
b25FcnJvcjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB3cml0ZShi
eXRlTGVuZ3RoKTsKKyAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFy
cmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQpAQCAtMTI2Myw4ICsxMjcyLDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgd3JpdGUoSW1hZ2VEYXRhVGFnKTsKICAgICAgICAgICAgICAgICB3
cml0ZShkYXRhLT53aWR0aCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWlnaHQo
KSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVuZ3Ro
KCkpOworICAgICAgICAgICAgICAgIENoZWNrZWRVaW50MzIgZGF0YUxlbmd0aCA9IGRhdGEtPmRh
dGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aC5oYXNPdmVyZmxv
d2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOworICAg
ICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAg
ICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzExLDggKzEzMjUsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB3
cml0ZShBcnJheUJ1ZmZlclRhZyk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRh
dGEoKSksIGJ5dGVMZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+
KHZtKSkgewpAQCAtMTUwMiw3ICsxNTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGVMaXR0
bGVFbmRpYW4obV9idWZmZXIsIGkpOwogICAgIH0KIAotICAgIHZvaWQgd3JpdGUodW5zaWduZWQg
bG9uZyBsb25nIGkpCisgICAgdm9pZCB3cml0ZSh1aW50NjRfdCBpKQogICAgIHsKICAgICAgICAg
d3JpdGVMaXR0bGVFbmRpYW4obV9idWZmZXIsIGkpOwogICAgIH0KQEAgLTIzOTEsNyArMjQwNiw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVh
ZCh1bnNpZ25lZCBsb25nIGxvbmcmIGkpCisgICAgYm9vbCByZWFkKHVpbnQ2NF90JiBpKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oaSk7CiAgICAgfQpAQCAtMjU1NSw5
ICsyNTcwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIExlbmd0aFR5cGU+CisgICAgYm9vbCByZWFkQXJyYXlCdWZm
ZXJJbXBsKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQogICAgIHsKLSAgICAgICAg
dWludDMyX3QgbGVuZ3RoOworICAgICAgICBMZW5ndGhUeXBlIGxlbmd0aDsKICAgICAgICAgaWYg
KCFyZWFkKGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICht
X3B0ciArIGxlbmd0aCA+IG1fZW5kKQpAQCAtMjU2OSwxNSArMjU4NSwyMyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZp
ZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCisgICAgYm9vbCByZWFkQXJyYXlC
dWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCisgICAgeworICAgICAgICBp
ZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVySW1w
bDx1aW50MzJfdD4oYXJyYXlCdWZmZXIpOworICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVy
SW1wbDx1aW50NjRfdD4oYXJyYXlCdWZmZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZW5ndGhUeXBlPgorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlld0ltcGwoVk0mIHZt
LCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgewogICAgICAgICBBcnJheUJ1ZmZlclZp
ZXdTdWJ0YWcgYXJyYXlCdWZmZXJWaWV3U3VidGFnOwogICAgICAgICBpZiAoIXJlYWRBcnJheUJ1
ZmZlclZpZXdTdWJ0YWcoYXJyYXlCdWZmZXJWaWV3U3VidGFnKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgYnl0ZU9mZnNldDsKKyAgICAgICAgTGVuZ3RoVHlw
ZSBieXRlT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWQoYnl0ZU9mZnNldCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5dGVMZW5ndGg7CisgICAgICAgIExl
bmd0aFR5cGUgYnl0ZUxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGJ5dGVMZW5ndGgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJPYmog
PSBhc09iamVjdChyZWFkVGVybWluYWwoKSk7CkBAIC0yNTg3LDcgKzI2MTEsNyBAQCBwcml2YXRl
OgogICAgICAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHR5cGVkQXJyYXlFbGVtZW50U2l6ZShh
cnJheUJ1ZmZlclZpZXdTdWJ0YWcpOwogICAgICAgICBpZiAoIWVsZW1lbnRTaXplKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBieXRlTGVuZ3Ro
IC8gZWxlbWVudFNpemU7CisgICAgICAgIExlbmd0aFR5cGUgbGVuZ3RoID0gYnl0ZUxlbmd0aCAv
IGVsZW1lbnRTaXplOwogICAgICAgICBpZiAobGVuZ3RoICogZWxlbWVudFNpemUgIT0gYnl0ZUxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjYzNCw2ICsyNjU4LDEzIEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZp
ZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCisgICAgeworICAgICAgICBpZiAo
bV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0lt
cGw8dWludDMyX3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOworICAgICAgICByZXR1cm4gcmVhZEFy
cmF5QnVmZmVyVmlld0ltcGw8dWludDY0X3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOworICAgIH0K
KwogICAgIGJvb2wgcmVhZChWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKQEAgLTMzNDUsNyArMzM3Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
OwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyOwogCi0gICAgICAgIGlm
ICghcmVhZChzZXJpYWxpemF0aW9uU3RhdGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJl
YWQobG9naWNhbEhlaWdodCkgfHwgIXJlYWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9u
ID4gOCAmJiAhcmVhZChjb2xvclNwYWNlKSkgfHwgIXJlYWRBcnJheUJ1ZmZlcihhcnJheUJ1ZmZl
cikpIHsKKyAgICAgICAgaWYgKCFyZWFkKHNlcmlhbGl6YXRpb25TdGF0ZSkgfHwgIXJlYWQobG9n
aWNhbFdpZHRoKSB8fCAhcmVhZChsb2dpY2FsSGVpZ2h0KSB8fCAhcmVhZChyZXNvbHV0aW9uU2Nh
bGUpIHx8IChtX3ZlcnNpb24gPiA4ICYmICFyZWFkKGNvbG9yU3BhY2UpKSB8fCAhcmVhZEFycmF5
QnVmZmVySW1wbDx1aW50MzJfdD4oYXJyYXlCdWZmZXIpKSB7CiAgICAgICAgICAgICBmYWlsKCk7
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZiNzU3
YTRkNzRmNi4uYWZjN2NjMWVmNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBp
ZiAoaGFzQXJyYXkpIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPnNpemUoKSk7CiAgICAgICAgIGZvciAoY29uc3Qg
YXV0byAmYXJyYXlCdWZmZXJDb250ZW50cyA6ICptX2FycmF5QnVmZmVyQ29udGVudHNBcnJheSkg
ewotICAgICAgICAgICAgZW5jb2RlciA8PCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVz
KCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheUJ1
ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCkpOwogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyQ29u
dGVudHMuZGF0YSgpKSwgYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpLCAxKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTE5OSw5ICsxOTksMTIgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IAogICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4oKTsKICAgICAgICAgd2hpbGUgKGFycmF5TGVuZ3RoLS0pIHsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNpemU7CisgICAgICAgICAgICB1aW50NjRfdCBidWZm
ZXJTaXplOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIENoZWNrZWQ8VUNQVVJl
Z2lzdGVyLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZEJ1ZmZlclNpemUgPSBidWZmZXJTaXplOwor
ICAgICAgICAgICAgaWYgKGNoZWNrZWRCdWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci50ZW1w
bGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMTIsNyArMjE1LDcgQEAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZShHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBidWZmZXIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5hcHBl
bmQoeyBidWZmZXIsIGJ1ZmZlclNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKSB9KTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+YXBw
ZW5kKHsgYnVmZmVyLCBjaGVja2VkQnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdp
Z2FjYWdlRGVzdHJ1Y3RvcigpIH0pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCBhNjZiMTkxZDY4NmQuLjU1OWVi
Y2M0OGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3Bw
CkBAIC02OCw3ICs2OCw5IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZShXZWJDb3Jl
OjpCbG9iJiBibG9iKQogCiAgICAgYXV0byBieXRlTGVuZ3RoID0gYmxvYi5zaXplKCk7CiAgICAg
aWYgKCFieXRlTGVuZ3RoKSB7Ci0gICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKDBVLCAxKSwgMCwgMCk7CisgICAgICAgIC8vIFRoZSBjYXN0IGxvb2tzIHdlaXJkLCBidXQg
aXMgcmVxdWlyZWQgZm9yIHRoZSBvdmVybG9hZGluZyByZXNvbHV0aW9uIHRvIHN1Y2NlZWQuCisg
ICAgICAgIC8vIFdpdGhvdXQgaXQsIHRoZXJlIGlzIGFuIGFtYmlndWl0eSB3aGVyZSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpIGNvdWxk
IGJlIGNhbGxlZCBpbnN0ZWFkLgorICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KDBVKSwgMSksIDAsIDApOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8QmxvYkxvYWRlcj4o
W3RoaXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QaXhlbEJ1ZmZlci5jcHAKaW5kZXggMjViZmYxNTNkMTJjLi43NTQzZjQ3NWEyN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAK
QEAgLTc0LDYgKzc0LDggQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWEKICAgICBhdXRvIGJ1ZmZl
clNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOwogICAgIGlmIChidWZmZXJT
aXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBp
ZiAoYnVmZmVyU2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlclNpemUpOwogICAgIGlmICgh
cGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUuLmQ4
M2U0YTQwNDBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09Cb3guaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYzLDcgKzY0LDEwIEBA
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1cm5WYWx1ZSwg
ViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNzKQogICAgIHsK
ICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFsdWUgPSB2aWV3
LnRlbXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlhbiwgJnJl
YWRTdGF0dXMpOworICAgICAgICBzaXplX3QgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0OworICAgICAg
ICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFubmVz
cyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9IGFj
dHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCg==
</data>
<flag name="commit-queue"
          id="465508"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441310</attachid>
            <date>2021-10-14 17:19:27 -0700</date>
            <delta_ts>2021-10-14 17:48:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>272295</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi4zNzliYzNjYTY4MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBicmFu
Y2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZh
bCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pTVmFs
dWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1h
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwppbmRl
eCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRt
ZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9v
KG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQgbWF4
U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3
MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAgIHZh
ciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwICsg
MSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
ZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYg
KGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cgZXhw
ZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjog
ZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAog
ZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJh
eSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTogMHg4
MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNpemUg
PSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAgIG1l
bW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAtIDB4
MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4uODBm
ZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBAQAot
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9y
ICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikK
Ky8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1LDIx
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIpKTsK
KyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
Zm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBtYXhT
aXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9
PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikpOwog
ICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0
cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUudG9T
dHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAg
IGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKwor
ZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0
aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlW
YWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJh
eVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2Eg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0
aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFj
dHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsg
bCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0
ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmlu
Zyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdp
Z3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRocmVl
R2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBm
b3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0
aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCww
ICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVl
ICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Cisg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTUzOWI1MGQyZTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxs
eS1vb2IuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3Ig
KCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQor
Ly9AIHJ1bkRlZmF1bHQoKQorZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0
aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSkKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9
Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0
OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJy
YXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAg
ICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
ICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAg
IHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0
QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IGFjdHVhbExlbmd0aCArIDEwOworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAg
IGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAoIkluIG91dC1vZi1ib3Vu
ZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10
aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpp
bmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0
ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYsMTMg
QEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAgICAg
dmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRNZW1v
cnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1vZHVs
ZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAK
LWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAoZXhj
ZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBpbnZh
bGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIoKSkn
KSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUt
dGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNt
LW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwppbmRl
eCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3Jl
Z3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJ
WkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZhciBl
eGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7CiB9
IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAhPSAi
UmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAoZXhj
ZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2FzOiAi
ICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZGU0Yjk1NDQzNC4uNzNmYmU1NThkN2Y5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFJlYmFzZWxpbmVkIHRocmVlIGZvbGxvd2luZyB0ZXN0cyBhcyBkaWZmZXJlbnQgb3Ig
ZmV3ZXIgZXJyb3IgbWVzc2FnZXMgYXBwZWFyIG9uIHRoZSBjb25zb2xlLgorICAgICAgICBBbHNv
IGNoYW5nZWQgY3VycmVudFZlcnNpb24gaW4gc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBm
cm9tIDkgdG8gMTAuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWludmFsaWQtcmVzdWx0LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisgICAgICAgICogd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0xMiAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRob3V0LWlu
dGVyYWN0aW9uLnB5IGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYx
N2FkLi44N2JjYzQ0OTJjMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9z
ZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFn
ZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5
PgogICAgICAgICA8c2NyaXB0PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25z
dCBjdXJyZW50VmVyc2lvbiA9IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVy
IGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1
ZmZlci1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRj
NS4uNWI4ZjM2NjU5Y2IzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1
Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUg
b2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYg
aXQgZG9lcyBub3QgY3Jhc2guCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1s
ZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5k
MDczNjAwMTQzMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0
IGludGVybmFsIEF1ZGlvQnVmZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9m
IDQ0MDAwIGFuZCBhIGxlbmd0aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVu
Z3RoIHJldHVybmVkIGJ5IE9mZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8g
Y29uc3RydWN0IHRoZSByZW5kZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwYWM3NWM5NzQ3OWQuLjc1OTNmYmE5ZTEy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTEz
ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cg
V0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1B
WF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkg
dGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0
R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBs
ZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BVUmVnaXN0
ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkg
aW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNp
emUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
cywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2
ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIg
YW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBH
ZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIg
cmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBo
YWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisg
ICAgICAgIC0gSW4gdHVybnMsIEkgaGFkIHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2Ug
Q2hlY2tJbkJvdW5kcyBjb3VsZCBub3QgYWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIKKyAgICAgICAgLSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9u
cyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hY
WCB0byBhY2NlcHQgbm9uLUludDMyIGluZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXksIGEgbWF4aW11bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAy
Qi4KKyAgICAgICAgLSBJIGFkZGVkIGEgIm1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJy
YXlQcm9maWxlL1VubGlua2VkQXJyYXlQcm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdo
ZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBpbmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3Bl
Y3VsYXRpb24gYW5kIHNwZWNpYWxpemF0aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwu
CisgICAgICAgICAgICBJIHRoZW4gdXBkYXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBi
eSB0aGUgc2xvdyBwYXRocyB0byBjb3JyZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9y
dHVuYXRlbHkgSSByYW4gb3V0IG9mIHRpbWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3Vw
ZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMuCisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBo
YXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBs
YXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50Cisg
ICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJh
dGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcg
bGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwg
Zm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRv
bWljc1hYWAorCisgICAgICAgIFRoZSBjdXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdp
bGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNl
cyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3Ro
ZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVm
aW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5
IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhp
cyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0
aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNl
IENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgor
ICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAt
IEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFk
eSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0g
TWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFz
IHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OkltbTY0OjpJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6Oklt
bTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2Ny
YXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1
YXJkKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZEFycmF5UHJvZmlsZTo6VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6QXJyYXlNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhU
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NB
bmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnNwZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNBcnJheU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6
REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
TG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0
cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlk
YXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRB
cnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmlj
dEVxKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmlu
c2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5C
eXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxp
Z25tZW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxl
bmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNh
bGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAg
KEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6
CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
OgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dE
b3duQW5kV2FzdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9z
c2libHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6
Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFy
cmF5SW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aElu
ZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2lu
IG1pZ3JhdGlvbiBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2FhMGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUsOSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFz
cyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlh
dGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1l
bW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3Rl
ZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRy
dXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1Q
dHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVk
SW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51
bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpu
dWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0
ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRw
dHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Piht
X3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29u
c3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBw
dWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAg
ewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRy
dXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShw
dHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBA
QCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsK
LSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
Mih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
MihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0
ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAg
ICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVi
bGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2Np
ZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBz
dHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgp
IHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAg
ICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBt
X3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02
NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRw
dHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6
CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAg
ICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1
ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAg
ICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5k
aWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFz
VHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAg
IC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1
Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0
YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBE
YXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFiYmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2
ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hN
dWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
OjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJh
c2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7
CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUo
QVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0
KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0K
IAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBu
ZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdp
c3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAv
LyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBp
dCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3
aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAg
IGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAg
IGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQp
LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJl
Z2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFj
ZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50
ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAg
ICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwg
cmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAv
LyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThm
ZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJN
NjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAg
IHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZm
ZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAg
IH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIu
LjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQ
dHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRh
dGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRk
cmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7
CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAg
ICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxp
ZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6
IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0
LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBl
NjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkg
KzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAg
ICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZm
OyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0
aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzOTc5OTJhM2E3NTAuLjEzMjUwZWM0ODQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2
LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAg
ICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6
CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRl
cjoKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2
YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAgLy8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5
cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBwcm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQg
YXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEy
ICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAK
ICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdo
LmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkp
OwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQu
c2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVp
dGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0
YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92
ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAg
c3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFi
b3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAg
ICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Io
c2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxv
Y2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTExOTcsOSArMTIwMywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlBy
ZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVn
aXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BS
KTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BS
KTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7
CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5
cGUpKSB7CkBAIC0xNTk1LDkgKzE2MDUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdp
dGhHdWFyZCgKICAgICAgICAgICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRP
ZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24g
ZnVuY3Rpb24uCi0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNo
MzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7
CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hH
UFIpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGgg
aXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0
aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJh
bmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxl
bmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5i
cmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NP
Zkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtl
RGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTE2MDUsOSArMTYy
MCwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxs
b2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0
LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNl
KTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRk
cmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRk
cmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
VmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFu
ZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3Jh
dGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAg
ICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggNjkxNjc5NDg0M2IwLi4zNmZlYjE0NGJhZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRm
aWVsZCB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRo
YXQgd2UgaGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNl
IHRoZSBsb3dlciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5n
IHRoZSBiaXRzIDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRh
a2luZyB0aGUgYml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9k
ZXM7CiAKIC8vIFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAo
MCAtIDE2LCAyMSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUsMTUgQEAgcHVibGljOgogICAgICAg
ICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAgICAgfQotICAg
IAorCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCk7CisgICAgdm9pZCBzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXk7IH0KKyNlbHNlCisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
ICAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJu
ICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJh
eU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRk
cmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAt
MjQ0LDYgKzI1Miw5IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVj
dHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRo
aXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBj
YXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVw
ZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkg
anVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRo
aXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMu
CiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7IGZhbHNlIH07CisjZW5k
aWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDogMTsKICAgICBib29s
IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29sIG1fZGlkUGVyZm9y
bUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY0LDEzIEBAIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmls
ZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAg
ZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1fdXNlc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAg
ICAgLCBtX21heUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorI2VuZGlmCisgICAgeworICAgIH0K
IAogICAgIHZvaWQgdXBkYXRlKEFycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlKQogICAgIHsKQEAg
LTI4MCw2ICsyOTcsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1fdXNl
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJyYXlQcm9maWxlLm1fdXNlc09y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOworCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAgICAgICAgICBhcnJheVByb2Zp
bGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlw
ZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5MCw3ICszMTQsMTEgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRB
cnJheSA6IDE7CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5
UHJvZmlsZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IDJiMmY1ZTAzMDE5Zi4uYTFjZDY5OTQ0YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0z
NDYzLDcgKzM0NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGg6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRy
eUdldEZvbGRhYmxlVmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAg
aWYgKHZpZXcgJiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcg
PSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcp
IHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldDogewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0
Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBp
ZiAodmlldykgewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNl
dCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRl
T2Zmc2V0KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldCA9
IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zm
c2V0ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2
aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAg
ICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAt
NDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUg
Q2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0
IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
ICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1
MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICsz
MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5j
aGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBu
b3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAg
ICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAg
ICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5
YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkp
OwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAg
aWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgp
KQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3Qg
YmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDgg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRB
cnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVz
ZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3Qg
R2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkg
ewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNi
Li5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24g
YWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0
aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5
TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNw
ZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAg
IHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJy
YXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNw
ZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAg
ICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlC
ZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYz
LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJy
YXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247
CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRl
cy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3Bl
Y3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNp
b24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlv
bik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5h
c0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3Jk
KCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9u
KEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJz
aW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3Mo
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZl
cnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
cywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRp
b247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAg
IH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxl
LCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAg
ICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3Jl
VG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBi
b29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlD
bGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9m
aWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMg
PSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0g
ICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNw
ZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBB
cnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAg
QXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJv
b2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2Vy
KTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJh
eSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51
c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAg
ICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAg
JiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBj
b252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVy
c2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3
OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwog
ICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29u
dmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBl
ZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7
CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLmEwMGM4NTM3MDEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgw
NywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxU
YXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVy
YW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50
JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogeworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljX2Fzc2VydChl
bmFibGVJbnQ1MigpKTsKKyNlbmRpZgorCiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygp
KSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBi
b29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7
CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQo
KS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4MjIs
MjYgKzM4MzEsMzAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVy
KE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VS
VChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBO
b2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5
TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAg
ICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgTm9kZSog
bGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CiAgICAgICAgIC8vIE91ciBBcnJheU1v
ZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8g
ZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAg
YWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAgICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAg
ICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1
c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8g
dGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3Rh
bnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFy
aXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fu
bm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEg
Ynl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUg
PSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNp
YzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAh
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFu
dC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdl
VHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAg
ICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9
KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcElu
Zm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUp
KTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAg
ICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUs
IEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7
CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAh
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODcxLDcgKzM4OTAsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwog
ICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAg
IH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyID8gR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIDogR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3As
IE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlz
Tm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNmZGU5Nzc5Li45YWQ1YzI3MDIwZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYg
KzE1Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0
IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRv
ckhhc093blByb3BlcnR5OgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBj
YXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0yMzksNiArMjQw
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFRvQm9vbGVhbjoKICAgICBj
YXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kc0ludDUyOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAg
ICAgY2FzZSBJbnQ1MlJlcDoKQEAgLTEzMzcsNiArMTMzOSwxMSBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9j
LCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAg
cmV0dXJuOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAg
ICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJh
eUJ5dGVPZmZzZXRJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9k
ZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsK
ICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2Fz
ZSBBcnJheVVzZToKQEAgLTE0NDQsNiArMTQ1MSwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVG
dQogICAgICAgICB9CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MjogeworICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBy
ZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlMZW5n
dGhJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewog
ICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOwogICAgICAgICBzd2l0
Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAppbmRl
eCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBib29sIHZhbGlkYXRpb25FbmFibGVk
KCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBlbmFibGVJbnQ1MigpCitpbmxpbmUgYm9vbCBj
b25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCmluZGV4IGI4ODI1YWNhZTM0ZS4uZmExN2JmMTE0MTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcApAQCAtMzg3LDYgKzM4Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIENoZWNr
SW5Cb3VuZHNJbnQ1MjoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5Ny4uNDAyODRjZmEyMmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAg
ICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CkBAIC0xOTcsMTAgKzE5OCwx
MiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRH
ZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVu
Z3RoOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2lu
dEF0OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBj
YXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGUxYjkzZWVlNmNhLi41NjZmNTM5
ZGUxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEwNDMsNiArMTA0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAg
ICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAg
ICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAg
JiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBP
dmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xMDczLDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBE
b24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZlIG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2Rl
LgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXRSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkg
dG8gZG8gdGhpcy4uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IEVudW1lcmF0b3JHZXRCeVZhbCkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhUeXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMzLDYgKzExMzQsMTggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5nVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkludDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6VWludDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFy
cmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDE2QXJyYXk6CisgICAgICAgICAgICBj
YXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJB
cnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAxKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpKTsKQEAgLTExODQsNiArMTE5Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRp
b24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMo
KQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkK
KyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBl
ZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBO
b2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xNzE3LDEyICsx
NzMxLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFy
cmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMy
KCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2Rl
LT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtMjE0OSw2ICsyMTY3LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUo
bV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1
bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUu
aXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUo
YXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQx
KCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dDogewogICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4Miw2ICsyMjE3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEFzc2VydEluQm91
bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAg
IGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CkBAIC00MDk2
LDE0ICs0MTMyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGls
ZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRB
cnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1v
ZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAg
IHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDgg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBp
cyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcg
Y29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhl
ciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3
aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQg
aWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGlu
IG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBt
YXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2Vz
IG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlz
IGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1h
eSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRleCAyYmI5ZDRiZWE4MDAuLjA2NjFl
NWI4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5
dGVPZmZzZXRMb2MiKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0
SW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3Ro
SW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUxlbmd0aEludDUyTG9jIik7
CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgUHJvdG90eXBlTG9jOgogICAgICAgICBvdXQu
cHJpbnQoIlByb3RvdHlwZUxvYyIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAppbmRleCAyNjkxNzFjYjM0MWQuLjQwZmI3MTY3
MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBA
IC02Nyw2ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0ZXJMb2MsCiAgICAg
U3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAorICAgIFR5cGVkQXJy
YXlCeXRlT2Zmc2V0SW50NTJMb2MsCisgICAgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jLAogICAg
IFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxvYWRMb2MsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MS4uNmRlZGEwMzdlZTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGlt
aXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTMzNSw3ICsxMzM1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vbk5lZ2F0
aXZlICYmIGxlc3NUaGFuTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRl
Tm9kZShibG9jay0+YXQobm9kZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRz
Q2hlY2tFbGltaW5hdGlvbigpKSAmJiBub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5k
ZXgsIFNwZWNOb25lLCBBc3NlcnRJbkJvdW5kcywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEo
KSwgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UganVzdCBu
ZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYSB2YWx1ZS1wcm9kdWNpbmcgbm9kZS4KICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTlj
Li4wYmE3YjlmZjNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk2
NSw2ICsxOTY1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAg
Y2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAg
ICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgog
CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1
cm4gMjsKIAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0
SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZh
bERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5YTkw
YTRjZmRhYzguLjIzZjFjMTUwZDYwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMjYxLDggKzI2MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKE11bHRpRGVsZXRlQnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAg
LyogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBUeXBlZEFycmF5cywgYXMgdGhleSBhcmUgdGhl
IG9ubHkgb25lcyB0aGF0IGNhbiBoYXZlIGEgbGVuZ3RoIHRoYXQgZG9lcyBub3QgZml0IGluIDMy
IGJpdHMuICovIFwKKyAgICAvKiBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIGNoYW5nZSB0byByZXR1cm5pbmcgSW50NTIgaW4gRml4
dXAuIERvaW5nIGl0IGJlZm9yZSBjYXVzZXMgdmFsaWRhdGlvbiBmYWlsdXJlcy4gKi8gXAorICAg
IG1hY3JvKEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFNj
b3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXApAQCAtMjg2LDYgKzI5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhDaGVja0JhZFZhbHVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
QXNzZXJ0SW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91
bmRzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oQ2hlY2tJ
bkJvdW5kc0ludDUyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFj
cm8oQ2hlY2tJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrVHlwZUlu
Zm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFrZXMgYW4gT3BJbmZvIHdpdGggdGhlIGZs
YWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wKICAgICBtYWNybyhDaGVja0pTQ2FzdCwg
Tm9kZU11c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0aGUgc2FtZSBhcyBqc0Nhc3QgYnV0IGFzIGEg
c3BlY3VsYXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0aW9uICovXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTUwN2YxZTgwYWMwLi45NDUzNTM1NmRl
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
OTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFsdWUKICAgICB9CiAgICAgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaW5k
ZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGlu
ZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwg
aW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3NSw3ICsxNzMs
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLCBjaGFy
KiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3Qgc2l6ZSwg
Y2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIApAQCAtMTgzLDExICsxODEsMTQgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHIKICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIl9zKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpu
dW1lcmljX2xpbWl0czxpbnRwdHJfdD46Om1heCgpIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOworICAgIHNpemVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNpemUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3Io
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0
b3IsIHVuc2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0
d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc2l6ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxj
aGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVk
U2l6ZSkpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA5LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0Nl
bGwqLCAoVk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MjQsNyArMTkyNSw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMTk0MCw3ICsxOTQxLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk1Niw3ICsxOTU3LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk3Miw3ICsx
OTczLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcgKzE5ODksNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDA0LDcgKzIwMDUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjEsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMzYsNyAr
MjAzNyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsy
MDY5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCmluZGV4IDM5M2RlODg1MDcwNy4uNGZkNTc5NWQyZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1w
dHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3Qs
IGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFs
dWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRw
dHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
VWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAo
Vk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVj
MC4uOGUwYzU4YjhhMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg2LDYgKzk4Niwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50
NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CkBAIC0xMzIwLDYgKzEzMjYsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgICAg
IGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICAg
ICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgog
ICAgICAgICBjYXNlIERvdWJsZVJlcDoKICAgICAgICAgY2FzZSBWYWx1ZVJlcDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCmluZGV4IGUz
YTIzOWEzM2UzMC4uZDlkYWUzYTgzMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKQEAgLTEwMCwxMSArMTAwLDIxIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkgIT0gTm90VHlwZWRBcnJheSAm
JiBtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgewotICAgICAgICAgICAgICAg
IE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2Rl
LT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgp
LmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEtub3du
SW50MzJVc2UpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgICAgICAgICAg
aWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBo
Lmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFn
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9
IEVkZ2UobGVuZ3RoLCBJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNl
bmRpZgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQz
Mk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFn
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9
IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzcsMTIgKzE0NywyOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBOb2RlKiBsZW5n
dGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyht
X25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgRWRnZShiYXNlLm5vZGUoKSwgS25vd25DZWxs
VXNlKSwgc3RvcmFnZSk7Ci0gICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHks
IENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgaW5kZXgsIEVkZ2Uo
bGVuZ3RoLCBLbm93bkludDMyVXNlKSk7CisgICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHM7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKChvcCA9PSBHZXRBcnJheUxl
bmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBt
X2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpKSB7
CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9u
b2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVz
ZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgbGVuZ3RoLT5zZXRSZXN1bHQoTm9kZVJlc3VsdElu
dDUyKTsKKyAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlwZSBpcyBhIGR1bW15IHNpbmNlIHRo
aXMgbm9kZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55dGhpbmcuCisgICAgICAgICAgICBj
aGVja0luQm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUt
Pm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNl
KSk7CisgICAgICAgIH0gZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcElu
Zm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3du
Q2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQz
Mk9ubHksIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgIGlu
ZGV4LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgICAgIH0KKyNlbmRpZgorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGph
Y2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlw
ZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdmNTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBib29sIGlnbm8KICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNz
ZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENo
ZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQ
cm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAg
Y2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNDc5NjM4NDQ5NDRhLi5mY2E2ZmIwMmE3YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
MjM4LDI4ICszMjM4LDQyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShK
SVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29t
cGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVy
OjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUq
IG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KQogewogICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVy
biBKSVRDb21waWxlcjo6SnVtcCgpOwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9q
aXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZSht
X2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7
CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3Ro
KCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9k
ZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAg
ICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50
MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgp
ICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBK
SVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
IG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
cmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vs
c2UKICAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5n
dGgpKTsKKyNlbmRpZgogICAgIH0KKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAg
bV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgIHJldHVy
biBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwg
c2NyYXRjaEdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1f
aml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRl
eEdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNl
R1BSLCBHUFJSZWcgaW5kZXhHUFIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJh
eUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIs
IEdQUlJlZyBzY3JhdGNoR1BSKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1w
Rm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2Rl
LCBiYXNlR1BSLCBpbmRleEdQUiwgc2NyYXRjaEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkp
CiAgICAgICAgIHJldHVybjsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1Zh
bHVlUmVncygpLCBudWxscHRyLCBqdW1wKTsKQEAgLTMzODAsMTAgKzMzOTQsMTIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlIHQKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBT
dG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcg
PSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwog
ICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4g
ZnByVGVtcDsKICAgICBGUFJSZWcgcmVzdWx0RlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTMzOTcs
NyArMzQxMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlw
ZWRBcnJheShOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0
UmVncywgZm9ybWF0KSA9IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxk
Qm94ID0gZm9ybWF0ID09IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRz
Q2hlY2sobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91
bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxv
YWRGcm9tSW50VHlwZWRBcnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5w
YXlsb2FkR1BSKCksIHR5cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRy
dWU7CiAgICAgc2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlw
ZSwgY2FuU3BlY3VsYXRlLCBzaG91bGRCb3gsIHJlc3VsdEZQUik7CkBAIC0zNTU1LDYgKzM1NzEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydAogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAg
ICAgCiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDMpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBH
UFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVz
ZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMik7CkBAIC0zNTg3LDcgKzM2MDQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIs
IHZhbHVlR1BSICE9IHByb3BlcnR5KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAg
ICAgQVNTRVJUKHZhbHVlR1BSICE9IHN0b3JhZ2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1w
IG91dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBw
cm9wZXJ0eSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlw
ZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoLmdwcigpKTsK
IAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1
LDEwICszNjYyLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxv
YXRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBT
cGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKSk7CiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
IAogICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlS
ZWcgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3By
KCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVnczsKICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFy
cmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwogICAgIEZQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5
cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1p
dFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRj
aEdQUik7CiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAg
ICAgICAgbV9qaXQubG9hZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJl
ZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpA
QCAtMzY5MCwxMCArMzcwOSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlW
YWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwog
ICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlT3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hG
UFIgPSBzY3JhdGNoLmZwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdw
cigpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlw
ZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9k
ZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2hHUFIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVu
dFNpemUodHlwZSkpIHsKICAgICBjYXNlIDQ6IHsKQEAgLTc5NjcsNyArNzk4OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BS
UmVnIHN0b3JhZ2VSZWcsIGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewog
I2lmIENQVShBUk02NEUpCi0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFn
QXJyYXlQdHJMZW5ndGg2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5V
U0VEX1BBUkFNKGJhc2VSZWcpOwpAQCAtODAzOSw5ICs4MDYwLDYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3Iu
Z3ByKCk7CiAgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOwotICAgIEFTU0VSVChiYXNl
R1BSICE9IHZlY3RvckdQUik7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7Ci0gICAg
QVNTRVJUKHZlY3RvckdQUiAhPSBkYXRhR1BSKTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQ
UiA9IGRhdGFHUFI7CiAKQEAgLTgwODMsNiArODEwMSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVj
dG9yLmxpbmsoJm1faml0KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyAgICAvLyBBSSBwcm9taXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUu
CisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJ
bW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAg
ICAgc3RyaWN0SW50MzJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiAr
ODM3MiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9k
ZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7
CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAg
ICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJy
YW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmlj
dEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQog
fQogCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUp
CiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTExMTksMTAgKzExMTQ4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVk
QXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xv
dyBwYXRoIGV4cGVjdCBhIGludHB0cl90LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMK
KyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXpl
LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBtX2pp
dC5zaWduRXh0ZW5kMzJUb1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3VHlw
ZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJl
LCBzY3JhdGNoR1BSKTsKKyNlbHNlCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAg
ICAKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFy
cmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBU
eXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUsIEdQUlJlZyBzaXplR1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CkBAIC0xMTEzNiw4ICsxMTE3OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1
ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhl
IHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4K
KyAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6
OmZhc3RTaXplTGltaXQpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1t
MzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAg
ICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRy
dXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsK
QEAgLTExMTkzLDkgKzExMjQzLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAg
ICAgc3RvcmFnZUdQUiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgbV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBz
aXplR1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9y
ZTMyKAogICAgICAgICBUcnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zk1vZGUoKSkpOwpAQCAtMTQxNjcsNiArMTQyMjMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAg
ICAgICBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAg
ICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJl
YWs7CisjZW5kaWYKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBh
cmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDA3YjU2M2IzNDgzYS4uMDQ5YmNm
N2U2ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTMwMCw5ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwog
ICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
TmV3U3ltYm9sKE5vZGUqKTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZUluUmVnaXN0ZXIoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJl
LCBHUFJSZWcgc2l6ZUdQUik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXpl
KE5vZGUqKTsKLSAgICAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29t
cGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9p
ZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2
ICsxMzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSop
OwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIoTm9kZSopOworI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3Mo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzMSwxMCAr
MTQzOCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhNaW5NYXgoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwotICAgIEpJVENvbXBpbGVy
OjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BS
LCBHUFJSZWcgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFy
cmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQ
UlJlZyBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJh
eUlzRGV0YWNoZWRJZk91dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGls
ZXI6Okp1bXAgb3V0T2ZCb3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVj
ayhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgdm9pZCBlbWl0
VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4
R1BSLCBHUFJSZWcgc2NyYXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQoTm9kZSopOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAg
IHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlw
ZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+
KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxl
UHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5v
ZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlw
ZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1
cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+
JiBwcmVmaXgpOwpAQCAtMjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9n
cHJPckludmFsaWQ7CiB9OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4g
aXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEg
Y2Fub25pY2FsIEludDUyIChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6
ZXJvKS4KIGNsYXNzIFNwZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQ
UlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAo
aS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUg
c2lnbi1leHRlbmRlZCkuCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBh
eWxvYWQgaXMgaW4gdGhlIGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5k
ZWQpLgogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4uMjJmNmY3
Mjc0YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0
dXBsZTxKCiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHBy
ZWZpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5v
ZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFy
cmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAg
ICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJy
YXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlz
IGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJ
ZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC0zNjIwLDYgKzM2MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAg
ICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzk4
LDYgKzQ0MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2Fz
ZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2Ug
QXJpdGhJTXVsOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0
QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCAzYjM5M2Y1Mjc1ZjcuLmI1YzQ4NDk4M2ZiYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5
NCw2ICsyNjk0LDg2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2Rl
KiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNp
ZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJy
YXlUeXBlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNv
bmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVy
ZS5nZXQoKSk7CisKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAg
ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUs
IHN0cnVjdHVyZSwgc2l6ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0
LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhf
QVJSQVlfQlVGRkVSX1NJWkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0
aGUgc2l6ZSBvZiBhIHR5cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0
cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sK
KyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICBHUFJUZW1wb3JhcnkgdmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMp
OworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JH
UFIgPSB2ZWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisg
ICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpK
dW1wIGVtcHR5Qnl0ZU9mZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0z
MihXYXN0ZWZ1bFR5cGVkQXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkp
LCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0
LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihK
U0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIGRhdGFHUFIpOworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdl
OjpKU1ZhbHVlLCBkYXRhR1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BS
LCB2ZWN0b3JHUFIpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhkYXRhR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVy
R1BSKTsKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZz
ZXRPZkRhdGEoKSksIGRhdGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3Zl
QXJyYXlQdHJUYWcoZGF0YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BS
LCB2ZWN0b3JHUFIpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAo
KTsKKworI2lmIENQVShBUk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5k
aWYKKyAgICBlbXB0eUJ5dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbVB0cihudWxscHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQp
OworI2lmICFDUFUoQVJNNjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxW
ZWN0b3JQdHIoKSk7CisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAg
IHN0cmljdEludDUyUmVzdWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYgLy8gVVNFKExB
UkdFX1RZUEVEX0FSUkFZUykKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogewogICAgIE5vZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjQs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAg
ICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOwor
ICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAg
IGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAg
ICAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBz
Y3JhdGNoLmdwcigpKTsKICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwog
ICAgICAgICAKQEAgLTQzODEsNiArNDQ2MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorI2lm
IFVTRShBRERSRVNTNjQpCisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
Mihub2RlKTsKKyNlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAg
Y29tcGlsZURlbGV0ZUJ5SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTg4
LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2Rl
KTsKICAgICAgICAgYnJlYWs7CkBAIC01NTg5LDcgKzU2ODcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dv
cmQoaW5kZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAg
ICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOwor
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0
T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsK
KyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbHNlCisgICAg
ICAgIC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrIGFnYWluc3QgMCBoZXJlLCBuZWdh
dGl2ZSBpbmRpY2VzIGFyZSBjYXVnaHQgYnkgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggcmln
aHQgYWZ0ZXIKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRh
dGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNl
bmRpZgogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygp
LCBub2RlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgdDIsIHQxKSk7CiAKQEAgLTU3OTAsNyArNTg5NSwxNCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRv
V29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAg
ICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7
CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhP
dXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkp
OworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAg
ICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5l
Z2F0aXZlIGluZGljZXMgYXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCBy
aWdodCBhZnRlcgogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOwor
I2VuZGlmCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdz
KCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNjA0Miw2ICs2MTU0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9j
YWw6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6Cisg
ICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2Fz
ZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCmluZGV4IDVmNTFmMjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAg
LTI3OSwxMCArMjc5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZh
bDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAg
ICAgICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRl
eGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFz
SW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0z
NTksNiArMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgog
ICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdl
OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1v
dkhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1
ZTVjZjM2YTc3MC4uZmIzYmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcApAQCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgY2FzZSBVcHNpbG9uOgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2Ug
Q2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVj
dDoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2Ux
NDU1NjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMTcwLDYgKzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBj
YXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAg
ICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBT
dG9yZUJhcnJpZXI6CkBAIC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNz
ZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENo
ZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6
ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAg
IGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRC
eVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IDNhOGY1Y2ZjNzk1ZS4uNDhkNGUxYmZmNDBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2lu
dGVycHJldGVyLmZvck5vZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcs
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAg
Y29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgor
ICAgICAgICAgICAgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBl
T2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIG1fb3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfdmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVm
dWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90
TnVsbCk7CiAKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwg
bV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6
bnVsbFZlY3RvclB0cigpKSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVj
dG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigp
KSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsK
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2
Niw5ICs0ODc3LDMwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAg
ICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhp
KHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jl
c3VsdCgpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIEFJIHByb21p
c2VzIHRoYXQgdGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIElu
dDMyLCBzbyB3ZSBtdXN0IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3Vs
YXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHJlc3VsdCwgbV9v
dXQuY29uc3RJbnQ2NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNl
bmRpZgorICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAgICB9
CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorICAgIHZvaWQgY29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vz
c29yIGNob2tlcyBvbiBSRUxFQVNFX0FTU0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRo
aXMgaXMgZXF1aXZhbGVudC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldFN0cmlj
dEludDUyKHJlc3VsdCk7CisgICAgfQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCiAg
ICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNl
bWFudGljKTsKQEAgLTUwNTQsOCArNTA4NiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc1Nv
bWVUeXBlZEFycmF5VmlldygpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoCi0gICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9h
ZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywg
bm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQo
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAg
c2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CisjZWxzZQorICAgICAgICAgICAg
ICAgIHNldEludDMyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjZW5kaWYKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUwNjQs
NiArNTEwMSwxNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlz
c2luZy1ub3JldHVybiIKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MigpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX25vZGUtPmFycmF5TW9kZSgpLmlz
U29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tl
cyBvbiBSRUxFQVNFX0FTU0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1
aXZhbGVudC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9m
KHVpbnQ2NF90KSk7CisgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0
aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKSk7CisgICAgfQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCiAgICAgdm9p
ZCBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ub2Rl
LT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTUxMDgsNyArNTE1NiwyMyBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlzIG5vZGUganVzdCBu
ZWVkIHRvIG1haW50YWluIHRoYXQKICAgICAgICAgLy8gd2UgZG9taW5hdGUgdGhlbS4KICAgICB9
Ci0gICAgCisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorICAgIHZvaWQgY29tcGlsZUNo
ZWNrSW5Cb3VuZHNJbnQ1MigpCisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNo
b2tlcyBvbiBSRUxFQVNFX0FTU0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMg
ZXF1aXZhbGVudC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIC8vIFNpZ24tZXh0ZW5kZWQgdG8gYWxzbyBjYXRjaCBu
ZWdhdGl2ZSBpbmRpY2VzCisgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnNpZ25FeHQzMlRv
NjQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0g
bG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHNwZWN1bGF0ZShPdXRP
ZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxl
bmd0aCkpOworICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUg
cmVzdWx0LCBubyB1c2VyIG9mIHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZh
bHVlLiBVc2VycyBvZiB0aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAg
ICAgLy8gd2UgZG9taW5hdGUgdGhlbS4KKyAgICB9CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCisKICAgICBMVmFsdWUgY29tcGlsZUdldEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOwpAQCAtNjAwOCwxMSArNjA3MiwxOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9y
RXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
dW5zdXJlKGlzT3V0T2ZCb3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAg
ICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRp
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJS
ZXBVc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hv
a2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBl
cXVpdmFsZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9m
KHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
c091dE9mQm91bmRzQ29uZGl0aW9uID0gbV9vdXQuYWJvdmVPckVxdWFsKG1fb3V0LnNpZ25FeHQz
MlRvNjQoaW5kZXgpLCBsb3dTdHJpY3RJbnQ1MihjaGlsZDUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZDUudXNlS2lu
ZCgpID09IEludDMyVXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHND
b25kaXRpb24gPSBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChp
c091dE9mQm91bmRzQ29uZGl0aW9uLCB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0lu
Qm91bmRzKSk7CisKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpc0luQm91bmRzLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuc3RvcmUodmFsdWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUodHlwZSkp
OwogICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC04MTY5
LDk1ICs4MjQwLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlw
ZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1f
b3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAg
ICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwot
Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxs
RW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQot
ICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5j
b25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAg
aWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBi
eXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5
dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2Fz
ZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2Nh
dG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0g
ICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8s
Ci0gICAgICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwg
bV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8s
Ci0gICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBD
UFUoQVJNNjRFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRy
ID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFs
dWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAg
ICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0g
ICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVw
KEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhl
bnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRl
OwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhh
dmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNp
emUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAot
ICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FT
RShuYW1lKSBcCi0gICAgICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAg
ICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3Ry
dWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RB
VEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9D
QVNFCi0gICAgICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0
UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0
LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
bV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RS
ZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAg
ICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJl
c3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBtdXRhdG9yRmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5
V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdl
VmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7
CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAg
ICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVz
dWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0
IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2Vu
ZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVy
YXRvcih2bSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlX
aXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCks
IGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3Vs
dFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBzaXplID0gbG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xv
d1Jlc3VsdCkpOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFy
cmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTgyNzcsNyArODI3MSwxMDQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5l
d1R5cGVkQXJyYXlXaXRoU2l6ZShUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExW
YWx1ZSBzaXplNjRCaXRzKQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0
LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisgICAg
ICAgICAgICBtX291dC5hYm92ZShzaXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlC
dWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2Up
LCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3RO
ZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAg
IC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUg
c2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5k
czxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAgICAg
IExWYWx1ZSBieXRlU2l6ZSA9CisgICAgICAgICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywgbV9v
dXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAg
aWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVT
aXplID0gbV9vdXQuYml0QW5kKAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwg
bV9vdXQuY29uc3RJbnRQdHIoNykpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1
ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2Ug
PSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0
V29yZHMoCisgICAgICAgICAgICBzdG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJv
LAorICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9v
dXQuY29uc3RJbnRQdHIoMykpKSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAg
ICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkK
KyAgICAgICAgeworICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBt
X291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUt
PmFwcGVuZChzaXplNjRCaXRzLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJl
Z2lzdGVyKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
eworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdw
cigpKTsKKyAgICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBw
YXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0g
YXV0aGVudGljYXRlOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9j
ayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUg
ZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlw
ZSkgeworI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNl
IFR5cGUgIyMgbmFtZTogXAorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVP
YmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dD
YXNlKTsgXAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZ
X1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYg
VFlQRURfQVJSQVlfVFlQRV9DQVNFCisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAg
ICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0
dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRy
KHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0
b3IpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIG1fb3V0LnN0b3JlNjQo
c2l6ZTY0Qml0cywgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xl
bmd0aCk7CisjZWxzZQorICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKHNp
emU2NEJpdHMpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoKTsKKyNlbmRpZgorICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFz
dFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bW9kZSk7CisKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNl
LCBjb250aW51YXRpb24pOworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhp
KHBvaW50ZXJUeXBlKCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xv
d1BhdGgoCisgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9j
YXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUp
LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0
aW9uc1sxXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRp
cmVjdEdQUigpKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9y
YWdlVmFsdWUpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5j
aG9yKHNsb3dSZXN1bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAg
ICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jl
c3VsdCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0xNDY1Niw2ICsxNDc0Nyw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVn
aW4gYW5kIGVuZCBhcmUgMzItYml0cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1i
aXRzIHdvcmQgYmV0d2VlbiBiYXNlK2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNw
bGF0V29yZHMoTFZhbHVlIGJhc2UsIExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZh
bHVlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50
NjRfdCB1bnJvbGxpbmdMaW1pdCA9IDEwOwpAQCAtMTU1OTEsNyArMTU2ODQsMTMgQEAgcHJpdmF0
ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7
CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZC
b3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNv
bnN0SW50MzIoMCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5l
Z2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxz
ZQorICAgICAgICAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4
IHRvIDAsIHRoZSBjaGVjayBhZ2FpbnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAg
ICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2
ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgog
ICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAg
ICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9
IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAt
IDEpKTsKQEAgLTE1NzM0LDcgKzE1ODMzLDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZp
ZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51
bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAg
ICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVl
ZCBmb3IgYW4gZXhwbGljaXQgY29tcGFyaXNvbiBvZiBpbmRleCB0byAwLCB0aGUgY2hlY2sgYWdh
aW5zdCBsZW5ndGggY2F0Y2hlcyB0aGF0IGNhc2UKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1f
b3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGluZGV4
VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRl
U2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0No
ZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsx
NzM0MSwxMSBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShM
VmFsdWUgdGFnZ2VkUHRyKSB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5k
ID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpIHsKKyNpZiBVU0UoQUREUkVTUzY0KQorICAgICAgICAg
ICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBt
X291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXpl
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVi
bGljOgogICAgIExWYWx1ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsg
cmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShU
eXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZh
bHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZp
ZWxkKSB7IHJldHVybiBsb2FkMzIoYmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5v
bk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVy
biBsb2FkNjQoYmFzZSwgZmllbGQpOyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFs
dWUpOwogICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAppbmRleCAyNTIwZjhjYzQ0NTYu
LjEwOTNhYzk1MzU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRy
aW5zaWNFbWl0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNp
Y0VtaXR0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtODMsMjMgKzgzLDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
CiAKICAgICBzd2l0Y2ggKGludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3Ro
SW50cmluc2ljOiB7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0Lmxv
YWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUy
KHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7
CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRl
LmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIp
OwogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAg
ICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2Fz
ZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlw
ZSB0eXBlID0gc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7
Ci0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkg
PiAxKQorICAgICAgICAgICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6
ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1
ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAg
ICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlm
IChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBi
aXRzaGlmdCBoZXJlIHNpbmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGgg
dGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVH
UFIsIEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAg
Ly8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gQUREUkVTUzMyIHBsYXRmb3Jt
cyBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGlu
dDMyLgorICAgICAgICAgICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6
ZSh0eXBlKSksIHZhbHVlR1BSKTsKICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2
YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzAsOCArMTM5LDEyIEBAIHZvaWQgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlCiAgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVl
R1BSKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNp
ZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIs
IHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAg
ICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAg
ICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhl
MGFjNjY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC05MzcsMTAgKzkzNyw4IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVp
bnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewog
ICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAg
ICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAg
ICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAg
ICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5
UHJvZmlsZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+
c2V0T3V0T2ZCb3VuZHMoKTsKQEAgLTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90
IGkgPSAqaW5kZXg7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vi
c2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmlu
ZGV4OwogICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBp
ZiAoaSA+PSAwICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAg
ICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQog
ICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAg
fSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5HZXRJbmRleFF1aWNrbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAo
SlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2Zp
bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wg
c2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0
LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaSkgPCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgo
KSkgeworICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRo
Q29udGlndW91cworICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8
IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBE
b3VibGU6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Mjk0MAogICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9i
amVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+
PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0
KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAg
ICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAm
JiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNv
bmZpZy5oCmluZGV4IDQxYzcxYjYwMDQ0ZS4uZTc2ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDks
NiArMTQ5LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQ
RURfQVJSQVlTIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZ
UyAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FE
RFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKaW5kZXggNTY4MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsx
MDQ3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJy
YXlQcm9maWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAg
ICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3
MCwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3Bl
cnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5p
c1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJz
Y3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5k
ZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVj
dC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3Ry
aWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IGI0MjFhN2ZhNDEwZS4uNmNkYmQ4ZGUzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBA
IGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25z
dGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9p
bnRlcgogZW5kCiAKK2lmIExBUkdFX1RZUEVEX0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRB
cnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5
TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBj
b25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4
Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4
IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFk
YXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2Nl
bGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwg
aW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgp
CisjIE5vdGUgdGhhdCBpbmRleCBpcyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdp
c3RlciB3aWR0aC4KK21hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNo
SW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNs
b3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBh
cnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9h
ZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBl
LCB0MgpAQCAtMTMyMSwxMSArMTMyNiwyNiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFz
ZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAg
IGlmIEFSTTY0RQogICAgICAgICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3Jh
dGNoID0gdDcKLSAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2Vd
LCBsZW5ndGgKLSAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAg
aWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmll
dzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAorICAgICAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0
aCwgc2xvd1BhdGgKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBs
ZW5ndGgsIHNsb3dQYXRoCisgICAgICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGgg
YW5kIHNjcmF0Y2ggYXJlIGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJl
Y2F1c2UgdGhleSBhcmUgbm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFl
cSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAg
ICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgICAgIGJxYWVxIGluZGV4LCBKU0Fy
cmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGJpYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0s
IHNsb3dQYXRoCisgICAgICAgIGVuZAorICAgIGVuZAorCisgICAgaWYgTEFSR0VfVFlQRURfQVJS
QVlTCisgICAgICAgIGJxYmVxIGluZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFs
bFR5cGVkQXJyYXkKKyAgICAgICAgc2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJy
YXk6CiAgICAgZW5kCiAKICAgICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFz
ZV0sIHQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDUwZDVkYmRmNjAyYS4uNjc4ZWM2NGM2NzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0g
ICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERv
dWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQw
LCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBtYWNybyAoKSBl
bmQsIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ4NGI2ZWFkMzdm
ZC4uNDA2YjYzZmY4NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEzLDE0IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3Jh
dGNoMikKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAg
IGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlWYWw6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQorICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjcmFzaCgpCisgICAgICAgIGVuZAorICAgIGVuZAorCiAg
ICAgbWV0YWRhdGEodDUsIHQyKQogCiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBAIC0xNzIzLDcgKzE3
MzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogCiAgICAgZ2V0KG1fcHJvcGVydHksIHQz
KQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5
VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKKyAgICBzeGkycSB0MSwgdDEgIyBUaGlzIHNpZ24t
ZXh0ZW50aW9uIG1ha2VzIHRoZSBib3VuZHMtY2hlY2tpbmcgaW4gZ2V0QnlWYWxUeXBlZEFycmF5
IHdvcmsgZXZlbiBvbiA0R0IgVHlwZWRBcnJheS4KIAogICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNP
YmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKICAgICBtb3ZlIFRhZ051bWJl
ciwgbnVtYmVyVGFnCkBAIC0xNzYzLDcgKzE3NzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBn
ZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91Ymxl
R2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQx
LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRB
cnJheSwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4YTFm
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyLDcgKzQyLDcgQEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZl
cjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5n
ZXQoKS5jb3B5UmVmKCk7CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50
czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRh
dGEsIHNpemUpCiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAgICAs
IG1fc2l6ZUluQnl0ZXMoc2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250ZW50
czo6QXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAgICAg
b3RoZXIudHJhbnNmZXJUbygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5
QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVudHM6
OkFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0
YSwgc2l6ZUluQnl0ZXMpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAt
MTA5LDIzICsxMDksMjEgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAg
bV9zaXplSW5CeXRlcyA9IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5p
dGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlB
bGxvY2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5p
dGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQg
b3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwot
ICAgICAgICBpZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8
IHRvdGFsU2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJ
bkJ5dGVzID0gbnVtRWxlbWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXpl
OworICAgIGlmIChzaXplSW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFs
dWUoKSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNp
emVfdD4obnVtRWxlbWVudHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUp
OwotICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90
IGFsbG9jYXRpb25TaXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRp
b25TaXplKQogICAgICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2Mg
YWN0dWFsbHkgYWxsb2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51
bGwgdG8gbWVhbiB0aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRh
ID0gR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6
ZSk7Ci0gICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0
YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkg
ewogICAgICAgICByZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAg
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXpl
KQogICAgICAgICBtZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXpl
SW5CeXRlcyA9IHNpemVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52
YWx1ZSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JV
RkZFUl9TSVpFKTsKICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2ln
YWNhZ2VEZXN0cnVjdG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVM
RUFTRV9BU1NFUlQob3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
OwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVu
dEJ5dGVTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJl
dHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgp
KTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAg
IGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFi
dWZmZXIpCkBAIC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBp
cyBvbmx5IHVzZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2
ZSBhbHJlYWR5IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6
aXNFbmFibGVkKCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29u
dGFpbnMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEp
KSk7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBA
IFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCog
ZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQg
aW50cm9kdWNlIGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2Vk
IGFuZCBnZXQgYWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBX
YXNtIHNob3VsZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0
cnVjdG9yKQogewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6
UHJpbWl0aXZlLCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdh
Y2FnZSgpOwpAQCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAg
cmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAg
IHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIp
CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7
CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2
b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0
aCkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRy
eUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFs
aXplKTsKQEAgLTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAg
cmV0dXJuIGNyZWF0ZUludGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5n
dGgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUo
bnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udElu
aXRpYWxpemUpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewog
ICAgIHJldHVybiB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5
KQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSBwb2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVt
RWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAg
LTI2NiwxNSArMjY0LDE3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZv
aWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29u
c3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVM
ZW5ndGggfHwgc291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlC
dWZmZXIoV1RGTW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNv
dXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJU
KHNvdXJjZSk7CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVu
Z3RoKTsKKyAgICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5
IHBvbGljeSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250
ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29u
dGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNp
Z25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5z
aWduZWQgcmlnaHQpCitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNp
emVfdCBsZWZ0LCBzaXplX3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwog
ICAgIGlmICh4IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZl
cjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAg
ICAgcmV0dXJuIHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJs
ZSBpbmRleCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5k
ZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsK
KyAgICBzaXplX3QgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXgg
PCAwKQogICAgICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4g
Y2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAg
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25z
dAogICAgIHJldHVybiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5
dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNl
V2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVf
dCBiZWdpbiwgc2l6ZV90IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4g
PD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5k
ID8gZW5kIC0gYmVnaW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAg
ICBpZiAocmVzdWx0KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2Rl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXgg
NjhmZjkwZTEzZWJhLi5lYWNjYTJjMjMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJf
U0laRSAoMXVsbCA8PCAzMikKKyNlbHNlCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3QpID09
IHNpemVvZih1aW50MzJfdCkpOworLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8g
c3RvcmUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBv
cnQgNEdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAy
R0IuIEl0IHNob3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdC
IC0gMUIpIGlmIGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4
N2ZmZmZmZmZ1CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUx
LDcgKzYwLDcgQEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQ
YWNrZWRSZWZQdHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYm
KTsKKyAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29u
dGVudHMoKTsKICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dE1heUJlTnVsbChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHByaXZhdGU6
CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lk
LCB0YWdDYWdlZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJ
bkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZm
ZXJDb250ZW50cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50
cyk7CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwg
dW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6
ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29u
dGVudHMmJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3Bl
cmF0b3I9KEFycmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4OCw3IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAK
ICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXpl
SW5CeXRlcygpKTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplSW5CeXRlczsgfQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZUluQnl0ZXM7IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFyZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IERvbnRJbml0aWFsaXplCiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kpOworICAgIHZvaWQgdHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1h
a2VTaGFyZWQoKTsKICAgICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpA
QCAtMTA1LDI4ICsxMTQsMjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAg
UGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBh
Y2tlZFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNp
Z25lZCBtX3NpemVJbkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xh
c3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+
IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNp
emVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29u
c3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBz
aXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBk
YXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9p
ZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVf
dCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXIm
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qg
dm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2Ug
YnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6
ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5l
IHZvaWQqIGRhdGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAg
IGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBi
eXRlTGVuZ3RoKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9p
ZCBzZXRTaGFyaW5nTW9kZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYs
NyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+
IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZElu
ZGV4KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBi
ZWdpbiwgc2l6ZV90IGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAg
ICAgaW5saW5lIHZvaWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBw
cmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwot
ICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29u
dGVudHMmJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAg
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Q
b2xpY3kpOworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5
QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7
CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5z
aWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmln
aHQpOworICAgIGlubGluZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0Owor
ICAgIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0
LCBzaXplX3QgcmlnaHQpOwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAt
MTkyLDcgKzIwMSw3IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jb250ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpi
eXRlTGVuZ3RoKCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsy
MTQsNyBAQCBib29sIEFycmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlC
dWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdl
IHByb2JhYmx5IHdhbnQgdG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBz
b21ldGhpbmcuCi0gICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxz
aXplX3Q+KGJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBi
eXRlTGVuZ3RoKCk7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5
MDliYWIuLjQ3MzcyMjc0NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNr
ZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFy
cmF5QnVmZmVyVmlldygKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAg
ICAgOiBtX2J5dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0
cnVlKQogICAgICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3Zl
cmZsb3c+IGxlbmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92
ZXJmbG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9i
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTku
LjA5OTk1NGI4NjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5
cGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVk
ZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAg
dW5zaWduZWQgYnl0ZU9mZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25z
dAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7
CiAKICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4K
LSAgICBzdGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGln
bm1lbnQoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEo
Ynl0ZU9mZnNldCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIg
dG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAg
ICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgo
Y29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBh
IGdpdmVuIHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAg
c3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dFNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVM
ZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgp
OwogICAgICAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5n
dGggLSBieXRlT2Zmc2V0KSAvIHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50
cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1l
bnRTaXplKTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQz
ICsxMTMsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAo
SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0
SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUg
Ym9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAg
IGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5
dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdldFJhbmdl
SW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CisgICAgaW5saW5l
IGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5n
dGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwo
dW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0
aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3Rh
cnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNl
dCwgdW5zaWduZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBv
ZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAg
ICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJs
eWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRp
YyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVm
ZmVyJiBidWZmZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAg
dW5zaWduZWQgKm9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAg
ICBzaXplX3QgYXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9mZnNldCwKKyAgICAg
ICAgc2l6ZV90ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9mZnNl
dCA9IChVSU5UX01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIHNp
emVfdCBtYXhPZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGFy
cmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zm
c2V0KSB7CiAgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAg
ICAgICAgICpudW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgKm9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7
Ci0gICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0
KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5n
dGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVja2VkU2l6ZSBhZGp1c3Rl
ZE9mZnNldCA9ICpvZmZzZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsK
KyAgICAgICAgYWRqdXN0ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAo
YWRqdXN0ZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkg
PiBidWZmZXIuYnl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRl
TGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9m
ZnNldC52YWx1ZSgpOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVy
LmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVu
dHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAK
LSAgICB1bnNpZ25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgIHVpbnQ2NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJf
dCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAx
OwotICAgIHVuc2lnbmVkIG1fYnl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVu
Z3RoOwogCiAgICAgdXNpbmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0
aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0
aGUgQXJyYXlCdWZmZXIncyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4
MSArMTY1LDQ2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsK
IH07CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJy
YXksIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChB
cnJheUJ1ZmZlclZpZXcqIGFycmF5LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0
ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5
dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXkt
PmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9m
ZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9m
ZnNldCwgYXJyYXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwg
YXJyYXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wg
QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRh
dGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBi
eXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0
ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93Cisg
ICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0
aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVp
bnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAg
bWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
Citib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxl
bmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5n
dGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3Zl
cmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFC
eXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQog
CiAgICAgY29uc3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
YXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNl
dCwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVm
ZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VC
eXRlTGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQg
PiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwg
Ynl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93
CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVM
ZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
CisKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNz
KCkpOwogICAgIG1lbXNldChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9m
ZnNldEFuZExlbmd0aCgKLSAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6
ZSwgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQg
PCAwKQotICAgICAgICBzdGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAg
ICAgICAgc3RhcnQgPSAwOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlT
aXplOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXpl
OwotICAgIGlmIChlbmQgPCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNl
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1
c2luZyBKU0M6OkFycmF5QnVmZmVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXRvbWljc09iamVjdC5jcHAKaW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3Bw
CkBAIC0xMjAsOCArMTIwLDcgQEAgc3RhdGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNj
ZXNzSW5kZXggPSBhY2Nlc3NJbmRleFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNz
SW5kZXgiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQot
ICAgIAotICAgIEFTU0VSVCh0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KElOVF9NQVgpKTsKKwogICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5
Vmlldy0+bGVuZ3RoKCkpIHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3Mp
OwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmNwcAppbmRleCBkY2MyZjUwNjRhZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLURhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0
YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3Zl
KGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4g
RGF0YVZpZXc6OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRl
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVy
LT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5
dGVMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApp
bmRleCBkYTA2YjRiYjIxNDQuLjM0MDI2NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgRGF0YVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBz
dGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAK
ICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
ICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1
cyA9IG51bGxwdHIpCisgICAgVCBnZXQoc2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4s
IGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAg
ICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLSAgICBUIHJlYWQodW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wq
IHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRs
ZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0
ID0gdGhpcy0+dGVtcGxhdGUgZ2V0PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwog
ICAgICAgICBpZiAoIXN0YXR1cyB8fCAqc3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5z
aWduZWQgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0g
bnVsbHB0cikKKyAgICB2b2lkIHNldChzaXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRs
ZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0
dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkp
IHsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRh
VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpOworICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRB
cnJheVZpZXcuaAppbmRleCBiZTdlNmMwNTM0ZmEuLjViZTgxNjVmNzJmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzMsMjQgKzMzLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIGNsYXNzIEdlbmVyaWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZl
clZpZXcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBj
cmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUo
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUo
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUo
c2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNy
ZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7
CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJy
YXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgCi0gICAg
c3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKj4oYmFzZUFkZHJlc3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQo
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgc2l6ZV90IG9mZnNldCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zm
c2V0KQorICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0
YSwgc2l6ZV90IGNvdW50LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNl
dFJhbmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEpLApAQCAtNTgsMzkgKzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgemVy
b1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wgemVyb1Jhbmdl
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBjb3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiB6ZXJv
UmFuZ2VJbXBsKG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwgY291bnQg
KiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKICAgICB2b2lk
IHplcm9GaWxsKCkgeyB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0
dXJuIGJ5dGVMZW5ndGgoKSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9
CiAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAg
ICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhp
cy0+bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2
b2lkIHNldChzaXplX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkp
OwogICAgICAgICBkYXRhKClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZh
bHVlKTsKICAgICB9CiAKLSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3Qg
aW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgp
KTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0
UmFuZ2UodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25l
ZCBvZmZzZXQpCisgICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRh
LCBzaXplX3QgY291bnQsIHNpemVfdCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0
UmFuZ2VJbXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBA
IC05OCwxOCArOTgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERh
dGEodW5zaWduZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0lu
Ym91bmREYXRhKHNpemVfdCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9m
ZnNldCA8PSBsZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAot
ICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNv
dW50ID49IG9mZnNldCk7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChv
ZmZzZXQsIGNvdW50LCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdDsKLSAgICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAg
ICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcg
QEAgcHVibGljOgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJh
eVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uZjFhNzZk
ZmQzYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQor
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBs
ZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0
LCBsZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJU
KChsZW5ndGggLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1SZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShz
aXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUodW5zaWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBs
ZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVh
dGUoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CkBAIC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBA
QCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAg
LTg1LDcgKzg2LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xMDAsNyArMTAxLDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxp
emVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsx
MTAsNyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5
QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICBy
ZXR1cm4gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFy
dCwgaW50IGVuZCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBj
YWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZz
ZXQsICZsZW5ndGgpOwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1
ZmZlcigpOwotICAgIEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVu
dHM8QWRhcHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3Ro
KTsKLSAgICByZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJk
M2MyY2MuLjNkOGU0NzQ1MDY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFz
c0luZm8gSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9z
dHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVs
ZW1lbnRTaXplLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5n
dGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQog
ICAgIDogbV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgx
LDE4ICs4MSwxOCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0
IGFsbG93IGEgdHlwZWQgYXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0
aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENo
ZWNrZWRTaXplIHNpemUgPSBsZW5ndGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBp
ZiAoc2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGgpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92
ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgc2l6ZSksIGxlbmd0aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6
OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwog
ICAgIGlmICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJv
RmlsbCkKICAgICAgICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5o
ZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3Ro
KSAqIGVsZW1lbnRTaXplKTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVk
KHNpemUudmFsdWUoKSk7CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAg
bV9tb2RlID0gT3ZlcnNpemVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBK
U0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4
dCgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1
cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3Rl
ZnVsVHlwZWRBcnJheSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZp
ZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3Ry
dWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShE
YXRhVmlld01vZGUpCkBAIC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVs
ZW1lbnRTaXplKEpTVHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAt
IEludDhBcnJheVR5cGVdOwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxl
bmd0aCgpIGNvbnN0CitzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25z
dAogeworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxl
bmd0aCgpOworICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiBy
ZXN1bHQudmFsdWUoKTsKKyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMg
YWxyZWFkeSBjaGVja2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0
cmEgc2FuaXR5IGNoZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVu
Z3RoKCkgKiBlbGVtZW50U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBK
U0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0
LDcgQEAgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVt
b3J5KCkKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
ID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0
ZUxlbmd0aCgpOwogCiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFy
cmF5OiB7CkBAIC0zMTUsOCArMzIyLDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJh
eUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0
KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5
dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMt
Pmxlbmd0aCgpOwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkg
XAogICAgIGNhc2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uMTRm
YTViYmE1YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJp
ZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3Rh
dGljIHZvaWQqIG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBz
aXplX3Qgc2l6ZU9mKHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAg
c3RhdGljIHNpemVfdCBzaXplT2Yoc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUp
CiAgICAgewotICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVs
ZW1lbnRTaXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4o
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVz
dWx0ID0gbGVuZ3RoOworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJl
c3VsdCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC52YWx1ZSgpICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNp
dHkpCkBAIC0xMzYsMjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAg
ICBlbnVtIEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9Owog
ICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChW
TSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIElu
aXRpYWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Q29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHVuc2ln
bmVkIGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAg
IAogICAgICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFy
cmF5cy4gSXQncyB1c2VkIGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVj
dGlvbkNvbnRleHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwor
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZv
aWQqIHZlY3Rvcik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOworICAgICAgICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAg
ICAgICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENv
bnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsCi0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIERhdGFWaWV3VGFnKTsKKyAgICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoLCBEYXRhVmlld1RhZyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX3N0cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2
b2lkKiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5n
dGgpOyB9Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
OyB9CisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQog
ICAgICAgICBUeXBlZEFycmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAg
ICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7
IH0KICAgICAgICAgCkBAIC0xNjIsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1
Y3R1cmUqIG1fc3RydWN0dXJlOwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JU
eXBlIG1fdmVjdG9yOwotICAgICAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90
IG1fbGVuZ3RoOwogICAgICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRl
cmZseSogbV9idXR0ZXJmbHk7CiAgICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkKiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwo
bGVuZ3RoKCkpOyB9CiAgICAgdm9pZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3ZlY3Rvci5nZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNp
Z25lZCBieXRlT2Zmc2V0KCk7Ci0gICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVPZmZzZXQoKTsK
KyAgICBpbmxpbmUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHko
KTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0g
ICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAg
ICAgVmVjdG9yUHRyIG1fdmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVf
dCBtX2xlbmd0aDsKICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5l
cy5oCmluZGV4IDFkMDcyYjcxYWNiNy4uZDg1YjMyODMwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApA
QCAtOTksNyArOTksNyBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0
ZU9mZnNldEltcGwoKQogICAgIHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50OF90Kj4odmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGRlbHRhKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihkZWx0YSk7CiAgICAgaWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNl
IHsKQEAgLTExMCwxNCArMTEwLDE0IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlT2Zmc2V0SW1wbCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVu
c2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKK2lubGluZSBzaXplX3QgSlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1w
bDxNdXRhdG9yLCB1bnNpZ25lZD4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRv
ciwgc2l6ZV90PigpOwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJh
eUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7
Ci0gICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+PigpOworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhy
ZWFkLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBi
MWVhOWRhMGZlNGMuLmY2YzQ1NDNmZTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25tb3Zh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtMjk4LDYgKzI5OSw3
IEBAIHB1YmxpYzoKICAgICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
ICAgICB1aW50MzJfdCB0b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQz
Ml90IHRvSW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0
OworICAgIHNpemVfdCB0b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNo
YXIqIGVycm9yTmFtZSkgY29uc3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xv
YmFsT2JqZWN0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCAzNGVhMjE0NjBhMGQuLjNiM2E4MDk2OTNmNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CkBAIC02OSwxNCArNjksNDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkgeworCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJu
IGFzSW50MzIoKTsKKworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3Ry
aW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisK
K2lubGluZSBzaXplX3QgSlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUi
KSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAg
ICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlND
Ojp0b0ludDMyKGQpKTsKKworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJS
QVlfQlVGRkVSX1NJWkUpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFt
ZSwgIiB0b28gbGFyZ2UiKSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBB
bGwgb2YgdGhpcyBtb25zdHJvc2l0eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0
IG9uIDE8PDMyLgorICAgIHNpemVfdCBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1
dE9mZnNldCA9IDA7CisgICAgc2l6ZV90IGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCk7CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4
KSkgeworICAgICAgICBvdXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZz
ZXQgPSBpbnQzMk1heDsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRw
dXRPZmZzZXQgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0M6
OnRvSW50MzIoZCAtIGlucHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQy
LDcgKzQyLDcgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNv
bnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRh
Vmlldzo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAs
MjUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qp
CiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNl
dChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25l
ZCkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVj
dCosIHNpemVfdCwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChK
U0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5hNWU3OGM0NjliMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYs
MTQgQEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Rh
dGFWaWV3KiBjcmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25l
ZCBieXRlTGVuZ3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7
CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsg
dGhlc2UgYXJlIGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUg
c3BlY2lhbGl6YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBj
cmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAg
c3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBz
ZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVu
Z3RoKTsKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVl
KTsKICAgICAKICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQ
cm90b3R5cGUuY3BwCmluZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4NzU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEzNiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRh
VmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwog
ICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
SW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZz
ZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1l
bnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVt
ZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVu
dFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAg
bGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4o
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBp
ZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4g
ZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0g
ZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxl
bmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+
IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAg
LTE4Miw3ICsxODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNl
aXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGds
b2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBj
b25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsK
QEAgLTE5NSw3ICsxOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5k
aWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsy
MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9z
KTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAg
c2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRT
aXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXpl
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ik91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBk
ODFkLi5lYTFlZjljMTNmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2lu
Y2x1ZGUgIlRvTmF0aXZlRnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JU
X1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwog
Ly8gICAgIFN0cnVjdHVyZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkq
IEIgICAgIC8vIGZyb20gSlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVp
bnQzMl90IEwKKy8vICAgICBzaXplX3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0v
LyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jk
cy4gRklYTUU6IE1ha2UKKy8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBw
b2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQog
Ly8KIC8vIEIgaXMgdXN1YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFs
ICJvdmVyZmxvdyIgZGF0YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNy
ZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsK
LSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBz
dGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCos
IFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1
bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAg
c2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2Yo
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSogdHlwZWRWZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
Pih2ZWN0b3IoKSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25z
dAorICAgIGJvb2wgaW5Cb3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gaSA8IG1fbGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50
IHRvIG1hdGNoIGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1
cHBvcnRzIC0gaGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHko
c2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRh
cHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4
UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0
SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNh
bkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVf
dCBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAg
IHJldHVybiB0eXBlZFZlY3RvcigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldElu
ZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5
KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1
ZShudWxscHRyLCBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2
ZVZhbHVlKHNpemVfdCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2
YWx1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwg
SlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1
ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAg
ICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRh
cHRvcj4odmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9v
bCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1
ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkg
KzE3NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0
YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1
ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRU
eXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFs
dWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91
dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRo
b3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpT
VmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdp
dGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQo
KQogICAgIHsKQEAgLTE5OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0K
IAotICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3Ro
Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAg
IC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zm
c2V0OworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5n
dGgsIG1fbGVuZ3RoKTsKICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBl
eGNlcHQ6IGlmIGl0IHJldHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBw
cm9wcmlhdGUgZXhjZXB0aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRl
UmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlm
IGl0IHJldHVybnMgZmFsc2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhj
ZXB0aW9uLgotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBK
U09iamVjdCosIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlw
ZSB0eXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxP
YmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNp
emVfdCBsZW5ndGgsIENvcHlUeXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAg
ICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVk
SW1wbCgpOwogICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRU
eXBlZEltcGwoKTsKQEAgLTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24g
ZXJyb3IuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0
V2l0aFNwZWNpZmljVHlwZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZz
ZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNp
Z25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBK
U0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90
aGVyQWRhcHRvcj4qLAorICAgICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
LCBDb3B5VHlwZSk7CiAKICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRp
bmcgcG9pbnQgVHlwZWQgQXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6
CiAgICAgLy8KQEAgLTM0OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJy
YXkoKQogICAgIHsKICAgICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5
W2ldID0gcHVyaWZ5TmFOKGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uMzM2ZjFhZWUz
ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgK
QEAgLTE0Myw3ICsxNDMsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9t
QXJyYXlCdWZmZXJJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2ln
bmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpT
T2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNW
YWx1ZSBmaXJzdEFyZ3VtZW50LCBzaXplX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
bGVuZ3RoT3B0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5s
aW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0
aCA9IDA7CiAgICAgICAgIGlmIChsZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5n
dGhPcHQudmFsdWUoKTsKICAgICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5l
IEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpT
R2xvYmFsT2JqZWN0KiBnbG8KICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBu
ZXcgdHlwZWQgYXJyYXkgb2YgdGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAK
ICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
Zmlyc3RWYWx1ZSkpIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICBzaXplX3Qg
bGVuZ3RoOwogICAgICAgICBKU0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwog
CiAgICAgICAgIGlmIChpc1R5cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJy
YXlTdG9yYWdlVHlwZSkpIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3Qq
IGdsbwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGZpcnN0VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBzaXpl
X3QgbGVuZ3RoID0gZmlyc3RWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJs
ZW5ndGgiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBsZW5ndGgpKTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9i
YWxPYmplY3QqCiAgICAgfQogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzaXplX3Qgb2Zm
c2V0ID0gMDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0
OwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkg
JiYgYXJnQ291bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcg
KzI4NSw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBs
ZW5ndGggdmFsdWUgaXMgcHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5n
LgogICAgICAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMik7CiAgICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9i
amVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8g
ImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0
aFZhbHVlLnRvVHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFy
cmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIp
OwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCmluZGV4IDQ1MDIzODc5MmQxMC4uYTNkZGMxZjgzNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgiCiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMu
aCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3
ICs0OCw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldygKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTY1LDcgKzY2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBs
ZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNv
bnRleHQoc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlV2l0aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksMTcg
KzEwMCwxNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVf
dCBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVt
ZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVm
ZmVyKTsKLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1
ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoLCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZmZXJW
aWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIGVs
ZW1lbnRTaXplKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2Yg
YnVmZmVyIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFBcnJh
eUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkp
IHsKKyAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChi
eXRlT2Zmc2V0LCBlbGVtZW50U2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJCeXRlIG9mZnNl
dCBpcyBub3QgYWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAt
MTQ1LDcgKzE0Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVS
YW5nZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTks
OCArMTYwLDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRh
dGVSYW5nZSgKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
dGhlckFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRX
aXRoU3BlY2lmaWNUeXBlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIs
Ci0gICAgdW5zaWduZWQgb3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlw
ZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3Ro
ZXJPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTIxOCw3ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigp
ICE9IG90aGVyLT5leGlzdGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBv
dGhlckVsZW1lbnRTaXplICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAg
fHwgdHlwZSA9PSBDb3B5VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFs
dWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBj
b252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1
aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBA
QCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNU
eXBlKAogCiAgICAgLy8gTm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qg
d2UgdHJ5IHRvIGNvdmVyICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVu
dFNpemUpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4
UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJB
ZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAg
IG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsK
QEAgLTIzOCwxMSArMjM5LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBp
bnRlcm1lZGlhdGUgdHJhbnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxl
bmd0aDsgaS0tOykgewogICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6
dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4
UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAo
dW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBp
LS07KQogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRy
YW5zZmVyQnVmZmVyW2ldKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUx
LDE0IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qg
b2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8o
dm0pOwogICAgIGlmIChjaS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVW
YWx1ZSkgewotICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1j
cHkgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3Qg
Y2FzZTogd2UgY2FuIGp1c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAg
ICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqPihvYmplY3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgs
IG90aGVyLT5sZW5ndGgoKSk7CiAgICAgICAgIApAQCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2Vz
cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3
ZSB3b24ndCBldmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFY
IG9yIG1vcmUKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmpl
Y3RPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKSkpOwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2Uu
IEJ1dCByaWdodCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdl
dChnbG9iYWxPYmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2Jq
ZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9m
ZnNldCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
ICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQg
KyBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSB8fCAhc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAppbmRleCA0YzBlYmQxZjYxNjUuLmE5NzQ3MzczYzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdl
dEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xh
c3MgQXJyYXlQcm9maWxlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwog
Y2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAg
ICAgICAgICAgIHNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAg
ICAgIGlmICh0cnlTZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRh
YmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZFRocm93KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVk
KSBjb25zdDsKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWdu
ZWQpIGNvbnN0OworICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCwgQXJyYXlQcm9maWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2Fu
R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQs
MTUgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQg
aSkgY29uc3QKKworICAgIC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBz
ZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1Zh
bHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJv
ZmlsZSA9IG51bGxwdHIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAg
ICAgaWYgKGNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wg
Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7
CiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVl
KTsKLSAgICAgICAgCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNW
YWx1ZSB2YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4
aW5nVHlwZShWTSYsIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRv
IGluZGljYXRlIHN1Y2Nlc3MKKyAgICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmls
ZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAg
ICBib29sIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUs
IEFycmF5UHJvZmlsZSopOworICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5z
aWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIp
CiAgICAgewogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgp
OwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JM
QU5LX0lOREVYSU5HX1RZUEVTOgotICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkoaSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdiwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBB
TExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAg
Y2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFM
TF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9X
UklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydElu
dDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBGQUxMVEhST1VHSDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05U
SUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHkt
PnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJh
cnJpZXIodik7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgp
KQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAg
ICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lO
REVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICgh
di5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91
c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNO
dW1iZXIoKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAg
ICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwg
aSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVl
OworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAg
ICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5
U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAg
ICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAo
aSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5n
VHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBO
b25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNs
b3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJm
bHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGlmIChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlm
IChpID49IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0
ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgc2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBp
LCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAg
IHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAg
IHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXgg
NmUxYmIxYjU5ZjFlLi41Y2VlNmNmODc4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBp
KSBjb25zdAogICAgIH0KIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lubGlu
ZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVk
IGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAodHlw
ZSgpKSB7Ci0jZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2FzZSBu
YW1lICMjIEFycmF5VHlwZSA6XAotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMjIG5h
bWUgIyMgQXJyYXkgKj4odGhpcyktPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAg
ICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZ
UEVEX0FSUkFZX1RZUEUpCi0jdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgIGlmIChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExl
bmd0aCAmJiBhcnJheVByb2ZpbGUpCisgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7Cisj
ZW5kaWYKIAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkodW5zaWduZWQgaSkgY29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmlu
ZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5
cGUgOiB7XApAQCAtNTEyLDcgKzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogfQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwg
SlNWYWx1ZSB2KQoreworICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZs
eSgpLT5hcnJheVN0b3JhZ2UoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9y
YWdlLT5tX3ZlY3RvcltpXTsKKyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQo
dm0sIHRoaXMsIHYpOworICAgIGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1W
YWx1ZXNJblZlY3RvcjsKKyAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAg
ICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJv
b2wgSlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwg
SlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUoKSkgeworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJB
WV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAgIGlmICgoaSA+IEFycmF5
UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisg
ICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAg
IH0gd2hpbGUgKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwg
YXJyYXlQcm9maWxlKSBkbyB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTtcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBF
KG5hbWUpIFwKKyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBcCisgICAgICAgIGF1dG8q
IHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAg
ICAgIGlmICghdHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShp
LCB2KTtcCisgICAgICAgIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAor
ICAgICAgICByZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZ
UEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FT
RV9UWVBFRF9BUlJBWV9UWVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09i
amVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4w
OTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKQEAgLTg5OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5
VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlm
IChiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dChiYXNlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNr
bHkoaW5kZXgpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJ
bmRleFF1aWNrbHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJh
c2UpLT5jYW5HZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGFnZUNvdW50LmgKaW5kZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKICNp
bmNsdWRlIDxsaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtC
OwogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXpl
KSk7CiAKICAgICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU1YjdjZDQ2NjE4Ny4u
ZTZhYTdhMjBlYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTEzICBSb2JpbiBNb3Jp
c3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2Ug
dXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WXVzdWtlIFN1enVraS4KKworICAgICAgICBNYWRlIHNvbWUgb2YgQ2hlY2tlZEFyaXRobWV0aWMg
Y29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwgc2luY2UgaXQgaXMg
YSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVhc3kgdG8gZ2V0IHdyb25n
IGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAgICogd3RmL0NoZWNrZWRBcml0aG1ldGlj
Lmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAoV1RGOjpjb252ZXJ0U2Fm
ZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwpOgorCiAyMDIxLTEw
LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIG5vbi1IQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxV
QVRFKSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
IGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBmZjE1NjVmMTFkZWQu
LmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0
ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENo
ZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2Us
IGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNlKSwg
Ym9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3NpZ25l
ZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3Np
Z25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9u
IHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAg
cmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAg
fQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25l
ZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHBy
ZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBXaGVu
IGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBh
IGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVl
IHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIg
dGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdl
dCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAg
IHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25z
dGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGhlIHVuc2ln
bmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQgc28g
bWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1ZSA8
PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkp
OwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9v
bCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNv
dXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNp
c2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxU
YXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUs
IHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2ln
biwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
OTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRl
ciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlzIHNh
ZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAtMjAy
LDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBncmVh
dGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5l
IGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgaXNJbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5
cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlu
cHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJj
ZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdldD4o
aW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiArOTk2LDEzIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhB
cmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092
ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJU
aGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVja2VkPFQsIFJlY29yZE92
ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVybiAhc3VtLmhhc092ZXJm
bG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQogCiB1c2luZyBXVEY6OkFz
c2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6OmRpZmZlcmVu
Y2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RP
dmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5nIFdURjo6aXNTdW1TbWFs
bGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCA5YzlmODBlM2ZkMWIuLmI5NGRi
ZTg5MTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0yNyw2ICsyNywxMyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorLy8gVGhpcyBpcyB0byBnZXQgU0laRV9NQVgsIHdoaWNoIGluIHR1cm4gaXMgdXNl
ZCBmb3IgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUworI2lmZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVk
ZSA8Y3N0ZGludD4KKyNlbHNlCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjZW5kaWYKKwogI2lmbmRl
ZiBXVEZfUExBVEZPUk1fR1VBUkRfQUdBSU5TVF9JTkRJUkVDVF9JTkNMVVNJT04KICNlcnJvciAi
UGxlYXNlICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4gaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGly
ZWN0bHkuIgogI2VuZGlmCkBAIC0xNDEsNiArMTQ4LDEyIEBACiAjZGVmaW5lIFVTRV9KU1ZBTFVF
MzJfNjQgMQogI2VuZGlmCiAKKyNpZiBTSVpFX01BWCA9PSBVSU5UNjRfTUFYCisjZGVmaW5lIFVT
RV9MQVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FS
UkFZUyAwCisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAvKiBGSVhNRTogRW5hYmxlIEJJ
R0lOVDMyIG9wdGltaXphdGlvbiBhZ2FpbiBhZnRlciB3ZSBlbnN1cmUgU3BlZWRvbWV0ZXIyIGFu
ZCBKZXRTdHJlYW0yIHJlZ3Jlc3Npb25zIGFyZSBmaXhlZC4gKi8KIC8qIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ3NzcgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYzZkMTVl
ZGQxM2MuLmJkNjg1ZDNhN2UwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTEw
LTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBTb21lIHBhcnRzIG9mIFdl
YkNvcmUgdXNlIFR5cGVkQXJyYXlzLCBhbmQgd291bGQgbm90IGJ1aWxkIGFmdGVyIEkgbWFkZSB0
aGUgbGVuZ3RoKCkgZnVuY3Rpb24gb24gdHlwZWQgYXJyYXlzIHJldHVybiBVQ1BVUmVnaXN0ZXIg
aW5zdGVhZCBvZiB1aW50MzJfdC4KKyAgICAgICAgTW9zdCBmaXhlcyB3ZXJlIHRyaXZpYWwsIHRo
ZSBvbmx5IGV4Y2VwdGlvbiBpcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwLCB3aGVyZSBJIGhh
ZCB0byBpbmNyZW1lbnQgdGhlIHZlcnNpb24gbnVtYmVyLCBhcyBBcnJheUJ1ZmZlciAoYW5kIEFy
cmF5QnVmZmVyVmlld3MpIG5vdyB3cml0ZS9yZWFkIHRoZWlyIGxlbmd0aCBpbiBhIDY0LWJpdCBm
aWVsZCAoYW5kIHNhbWUgZm9yIHRoZSBieXRlT2Zmc2V0IG9mIEFycmF5QnVmZmVyVmlldykuCisK
KyAgICAgICAgSSBhbHNvIGhhZCB0byBhZGQgYSB0ZXN0IGluIFBpeGVsQnVmZmVyLmNwcCB0aGF0
IHRoZSBzaXplIG9mIHRoZSBBcnJheUJ1ZmZlciBpdCB3aWxsIHRyeSB0byBhbGxvY2F0ZSBpcyA8
IElOVDMyX01BWC4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgdGVzdCBMYXlvdXRUZXN0cy9mYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlZGF0YS1vdmVy
Zmxvdy5odG1sIHdoaWNoIGNoZWNrcyB0aGF0IHZlcnkgbGFyZ2UgaW1hZ2VzIGFyZSBwcm9wZXJs
eSByZWplY3RlZCB3aXRob3V0IGNyYXNoaW5nLCB3b3VsZCB0aW1lb3V0LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgYXMgdGhlIGNvZGUgaXMgYWxyZWFkeSBleHRlbnNpdmVseSBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLCBhbmQgSSBpbXBsZW1lbnRlZCBubyBuZXcgZmVhdHVyZXMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdWZmZXI6OmNvcHlUb0NoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpn
ZXRCeXRlRnJlcXVlbmN5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2Vy
OjpnZXRGbG9hdFRpbWVEb21haW5EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5h
bHlzZXI6OmdldEJ5dGVUaW1lRG9tYWluRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXpl
cjo6ZHVtcEFycmF5QnVmZmVyVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpy
ZWFkQXJyYXlCdWZmZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVy
OjpyZWFkQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6
OnJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJp
YWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4
ZWxCdWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T0JveC5oOgorCiAyMDIxLTEwLTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEhhdmUgdGhlIFNjcm9sbGluZ1RyZWUgdHJhY2sgbm9kZXMgd2l0aCBh
bmltYXRlZCBzY3JvbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXIuY3BwCmluZGV4IGNiN2U4NGQ0NTM4My4uYjE4ZDhmZDZhMzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTk4LDcg
KzE5OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwo
UmVmPEZsb2F0MzJBcnJheT4mJiBkZXN0aW5hdGlvbiwKICAgICBpZiAoYnVmZmVyT2Zmc2V0ID49
IGRhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAgdW5zaWduZWQgY291
bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIHNpemVfdCBjb3VudCA9IGRhdGFM
ZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihkZXN0aW5hdGlvbi5n
ZXQoKS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBjaGFu
bmVsRGF0YS0+ZGF0YSgpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgc291cmNlLCB1bnNp
Z25lCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4g
eyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNl
dDsKKyAgICBzaXplX3QgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNv
dW50ID0gc3RkOjptaW4oc291cmNlLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAg
Y29uc3QgZmxvYXQqIHNyYyA9IHNvdXJjZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAy
MmVkLi5kNTNiOWU2NDRlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtMTk2LDggKzE5Niw5IEBAIHZvaWQgUmVh
bHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRp
b25BcnJheSkKICAgICBkb0ZGVEFuYWx5c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBD
b252ZXJ0IGZyb20gbGluZWFyIG1hZ25pdHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgot
ICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAg
ICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5
Lmxlbmd0aCgpKTsKKyAgICBzaXplX3Qgc291cmNlTGVuZ3RoID0gbWFnbml0dWRlQnVmZmVyKCku
c2l6ZSgpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXku
bGVuZ3RoKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVz
dGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGNvbnN0IGRv
dWJsZSByYW5nZVNjYWxlRmFjdG9yID0gbV9tYXhEZWNpYmVscyA9PSBtX21pbkRlY2liZWxzID8g
MSA6IDEgLyAobV9tYXhEZWNpYmVscyAtIG1fbWluRGVjaWJlbHMpOwogICAgICAgICBjb25zdCBk
b3VibGUgbWluRGVjaWJlbHMgPSBtX21pbkRlY2liZWxzOwpAQCAtMjI3LDggKzIyOCw5IEBAIHZv
aWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YShGbG9hdDMyQXJyYXkm
IGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAK
LSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5n
dGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBz
aXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAg
IHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBz
dGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDAp
IHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgp
ID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAg
ICAgICAgIEFTU0VSVChpc0lucHV0QnVmZmVyR29vZCk7CkBAIC0yNTEsOCArMjUzLDkgQEAgdm9p
ZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSYgZGVz
dGluYXRpb25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgdW5z
aWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3Rk
OjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRl
c3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3Qg
ZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4o
ZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAg
ICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1
dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBB
U1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYTFhOGZhMjkyOWNhLi4xODIy
MWUzNWFhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtOTQsNiArOTQsNyBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1dhc21Nb2R1bGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ZYXJyRmxhZ3Mu
aD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMzQyLDggKzM0Myw5IEBAIHN0
YXRpYyB1bnNpZ25lZCBjb3VudFVzYWdlcyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiAg
KiBWZXJzaW9uIDcuIGFkZGVkIHN1cHBvcnQgZm9yIEZpbGUncyBsYXN0TW9kaWZpZWQgYXR0cmli
dXRlLgogICogVmVyc2lvbiA4LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZURhdGEncyBjb2xvclNw
YWNlIGF0dHJpYnV0ZS4KICAqIFZlcnNpb24gOS4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VCaXRt
YXAgY29sb3Igc3BhY2UuCisgKiBWZXJzaW9uIDEwLiBjaGFuZ2VkIHRoZSBsZW5ndGggKGFuZCBv
ZmZzZXRzKSBvZiBBcnJheUJ1ZmZlcnMgKGFuZCBBcnJheUJ1ZmZlclZpZXdzKSBmcm9tIDMyIHRv
IDY0IGJpdHMKICAqLwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0gOTsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDEwOwogc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFRlcm1pbmF0b3JUYWcgPSAweEZGRkZGRkZGOwogc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cmluZ1Bvb2xUYWcgPSAweEZGRkZGRkZFOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5v
bkluZGV4UHJvcGVydGllc1RhZyA9IDB4RkZGRkZGRkQ7CkBAIC0zOTksNyArNDAxLDcgQEAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAq
ICAgIHwgT2JqZWN0UmVmZXJlbmNlCiAgKiAgICB8IE1lc3NhZ2VQb3J0UmVmZXJlbmNlVGFnIDx2
YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgQXJyYXlCdWZmZXIKLSAqICAgIHwgQXJyYXlCdWZmZXJW
aWV3VGFnIEFycmF5QnVmZmVyVmlld1N1YnRhZyA8Ynl0ZU9mZnNldDp1aW50MzJfdD4gPGJ5dGVM
ZW5ndGg6dWludDMyX3Q+IChBcnJheUJ1ZmZlciB8IE9iamVjdFJlZmVyZW5jZSkKKyAqICAgIHwg
QXJyYXlCdWZmZXJWaWV3VGFnIEFycmF5QnVmZmVyVmlld1N1YnRhZyA8Ynl0ZU9mZnNldDp1aW50
NjRfdD4gPGJ5dGVMZW5ndGg6dWludDY0X3Q+IChBcnJheUJ1ZmZlciB8IE9iamVjdFJlZmVyZW5j
ZSkKICAqICAgIHwgQ3J5cHRvS2V5VGFnIDx3cmFwcGVkS2V5TGVuZ3RoOnVpbnQzMl90PiA8ZmFj
dG9yOmJ5dGV7d3JhcHBlZEtleUxlbmd0aH0+CiAgKiAgICB8IERPTVBvaW50CiAgKiAgICB8IERP
TVJlY3QKQEAgLTQ2Myw3ICs0NjUsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0
YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgT2JqZWN0UmVmZXJlbmNlVGFnIDxvcElu
ZGV4OkluZGV4VHlwZT4KICAqCiAgKiBBcnJheUJ1ZmZlciA6LQotICogICAgQXJyYXlCdWZmZXJU
YWcgPGxlbmd0aDp1aW50MzJfdD4gPGNvbnRlbnRzOmJ5dGV7bGVuZ3RofT4KKyAqICAgIEFycmF5
QnVmZmVyVGFnIDxsZW5ndGg6dWludDY0X3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CiAgKiAg
ICBBcnJheUJ1ZmZlclRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIFNoYXJlZEFy
cmF5QnVmZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqCkBAIC05OTgsOCArMTAwMCwxMCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZl
clZpZXcodm0sIG9iaik7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJh
eUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSkpOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1
aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgdWludDY0
X3QgYnl0ZU9mZnNldCA9IGFycmF5QnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpOworICAgICAgICB3
cml0ZShieXRlT2Zmc2V0KTsKKyAgICAgICAgdWludDY0X3QgYnl0ZUxlbmd0aCA9IGFycmF5QnVm
ZmVyVmlldy0+Ynl0ZUxlbmd0aCgpOworICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKICAgICAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGFycmF5QnVmZmVyVmlldy0+cG9z
c2libHlTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAgICAg
ICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CkBA
IC0xMTMxLDggKzExMzUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8
ZG91YmxlPihidWZmZXItPnJlc29sdXRpb25TY2FsZSgpKSk7CiAgICAgICAgIHdyaXRlKGJ1ZmZl
ci0+Y29sb3JTcGFjZSgpKTsKIAotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkpOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOworICAgICAgICBDaGVja2VkVWludDMyIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpOworICAgICAgICBpZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsK
KyAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVy
cm9yOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHdyaXRlKGJ5dGVM
ZW5ndGgpOworICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlC
dWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgpOwogICAgIH0KIAogI2lmIEVOQUJMRShPRkZTQ1JF
RU5fQ0FOVkFTX0lOX1dPUktFUlMpCkBAIC0xMjYzLDggKzEyNzIsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICB3cml0ZShJbWFnZURhdGFUYWcpOwogICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGEtPndpZHRoKCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsK
LSAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOwotICAgICAgICAg
ICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7
CisgICAgICAgICAgICAgICAgQ2hlY2tlZFVpbnQzMiBkYXRhTGVuZ3RoID0gZGF0YS0+ZGF0YSgp
Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoLmhhc092ZXJmbG93ZWQo
KSkgeworICAgICAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OkRhdGFDbG9uZUVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0YUxlbmd0aCk7CisgICAgICAg
ICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgICAg
ICAgICAgICAgd3JpdGUoZGF0YS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTEzMTEsOCArMTMyNSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHdyaXRl
KEFycmF5QnVmZmVyVGFnKTsKLSAgICAgICAgICAgICAgICB3cml0ZShhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpOworICAgICAgICAgICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAg
ICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgp
KSwgYnl0ZUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0p
KSB7CkBAIC0xNTAyLDcgKzE1MTcsNyBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZUxpdHRsZUVu
ZGlhbihtX2J1ZmZlciwgaSk7CiAgICAgfQogCi0gICAgdm9pZCB3cml0ZSh1bnNpZ25lZCBsb25n
IGxvbmcgaSkKKyAgICB2b2lkIHdyaXRlKHVpbnQ2NF90IGkpCiAgICAgewogICAgICAgICB3cml0
ZUxpdHRsZUVuZGlhbihtX2J1ZmZlciwgaSk7CiAgICAgfQpAQCAtMjM5MSw3ICsyNDA2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCByZWFkKHVu
c2lnbmVkIGxvbmcgbG9uZyYgaSkKKyAgICBib29sIHJlYWQodWludDY0X3QmIGkpCiAgICAgewog
ICAgICAgICByZXR1cm4gcmVhZExpdHRsZUVuZGlhbihpKTsKICAgICB9CkBAIC0yNTU1LDkgKzI1
NzAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9v
bCByZWFkQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgTGVuZ3RoVHlwZT4KKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlcklt
cGwoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCiAgICAgewotICAgICAgICB1aW50
MzJfdCBsZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgbGVuZ3RoOwogICAgICAgICBpZiAoIXJl
YWQobGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fcHRy
ICsgbGVuZ3RoID4gbV9lbmQpCkBAIC0yNTY5LDE1ICsyNTg1LDIzIEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlldyhW
TSYgdm0sIEpTVmFsdWUmIGFycmF5QnVmZmVyVmlldykKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZl
cihSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICht
X3ZlcnNpb24gPCAxMCkKKyAgICAgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBsPHVp
bnQzMl90PihhcnJheUJ1ZmZlcik7CisgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBs
PHVpbnQ2NF90PihhcnJheUJ1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IExlbmd0aFR5cGU+CisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbChWTSYgdm0sIEpT
VmFsdWUmIGFycmF5QnVmZmVyVmlldykKICAgICB7CiAgICAgICAgIEFycmF5QnVmZmVyVmlld1N1
YnRhZyBhcnJheUJ1ZmZlclZpZXdTdWJ0YWc7CiAgICAgICAgIGlmICghcmVhZEFycmF5QnVmZmVy
Vmlld1N1YnRhZyhhcnJheUJ1ZmZlclZpZXdTdWJ0YWcpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB1aW50MzJfdCBieXRlT2Zmc2V0OworICAgICAgICBMZW5ndGhUeXBlIGJ5
dGVPZmZzZXQ7CiAgICAgICAgIGlmICghcmVhZChieXRlT2Zmc2V0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgYnl0ZUxlbmd0aDsKKyAgICAgICAgTGVuZ3Ro
VHlwZSBieXRlTGVuZ3RoOwogICAgICAgICBpZiAoIXJlYWQoYnl0ZUxlbmd0aCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlck9iaiA9IGFz
T2JqZWN0KHJlYWRUZXJtaW5hbCgpKTsKQEAgLTI1ODcsNyArMjYxMSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gdHlwZWRBcnJheUVsZW1lbnRTaXplKGFycmF5
QnVmZmVyVmlld1N1YnRhZyk7CiAgICAgICAgIGlmICghZWxlbWVudFNpemUpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBl
bGVtZW50U2l6ZTsKKyAgICAgICAgTGVuZ3RoVHlwZSBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxl
bWVudFNpemU7CiAgICAgICAgIGlmIChsZW5ndGggKiBlbGVtZW50U2l6ZSAhPSBieXRlTGVuZ3Ro
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNjM0LDYgKzI2NTgsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlldyhW
TSYgdm0sIEpTVmFsdWUmIGFycmF5QnVmZmVyVmlldykKKyAgICB7CisgICAgICAgIGlmIChtX3Zl
cnNpb24gPCAxMCkKKyAgICAgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbDx1
aW50MzJfdD4odm0sIGFycmF5QnVmZmVyVmlldyk7CisgICAgICAgIHJldHVybiByZWFkQXJyYXlC
dWZmZXJWaWV3SW1wbDx1aW50NjRfdD4odm0sIGFycmF5QnVmZmVyVmlldyk7CisgICAgfQorCiAg
ICAgYm9vbCByZWFkKFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKHJlc3VsdC5pc0VtcHR5KCkpOwpAQCAtMzM0NSw3ICszMzc2LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAg
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXI7CiAKLSAgICAgICAgaWYgKCFy
ZWFkKHNlcmlhbGl6YXRpb25TdGF0ZSkgfHwgIXJlYWQobG9naWNhbFdpZHRoKSB8fCAhcmVhZChs
b2dpY2FsSGVpZ2h0KSB8fCAhcmVhZChyZXNvbHV0aW9uU2NhbGUpIHx8IChtX3ZlcnNpb24gPiA4
ICYmICFyZWFkKGNvbG9yU3BhY2UpKSB8fCAhcmVhZEFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSkg
eworICAgICAgICBpZiAoIXJlYWQoc2VyaWFsaXphdGlvblN0YXRlKSB8fCAhcmVhZChsb2dpY2Fs
V2lkdGgpIHx8ICFyZWFkKGxvZ2ljYWxIZWlnaHQpIHx8ICFyZWFkKHJlc29sdXRpb25TY2FsZSkg
fHwgKG1fdmVyc2lvbiA+IDggJiYgIXJlYWQoY29sb3JTcGFjZSkpIHx8ICFyZWFkQXJyYXlCdWZm
ZXJJbXBsPHVpbnQzMl90PihhcnJheUJ1ZmZlcikpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggZmI3NTdhNGQ3
NGY2Li5hZmM3Y2MxZWY1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmICho
YXNBcnJheSkgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2Fy
cmF5QnVmZmVyQ29udGVudHNBcnJheS0+c2l6ZSgpKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRv
ICZhcnJheUJ1ZmZlckNvbnRlbnRzIDogKm1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSB7Ci0g
ICAgICAgICAgICBlbmNvZGVyIDw8IGFycmF5QnVmZmVyQ29udGVudHMuc2l6ZUluQnl0ZXMoKTsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5QnVmZmVy
Q29udGVudHMuc2l6ZUluQnl0ZXMoKSk7CiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJDb250ZW50
cy5kYXRhKCkpLCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCksIDEpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTk5LDkgKzE5OSwxMiBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiAg
ICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PigpOwogICAgICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkgewotICAgICAg
ICAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNp
emU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgQ2hlY2tlZDxVQ1BVUmVnaXN0
ZXIsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAg
ICAgICAgICBpZiAoY2hlY2tlZEJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRl
IGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxMiw3ICsyMTUsNyBAQCBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdlOjpQ
cmltaXRpdmUsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFwcGVuZCh7
IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1
Y3RvcigpIH0pOworICAgICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5hcHBlbmQo
eyBidWZmZXIsIGNoZWNrZWRCdWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNh
Z2VEZXN0cnVjdG9yKCkgfSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFkNjg2ZC4uNTU5ZWJjYzQ4
YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAg
LTY4LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKFdlYkNvcmU6OkJs
b2ImIGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNpemUoKTsKICAgICBpZiAo
IWJ5dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUo
MFUsIDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mgd2VpcmQsIGJ1dCBpcyBy
ZXF1aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8gc3VjY2VlZC4KKyAgICAg
ICAgLy8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdoZXJlIEFycmF5QnVmZmVy
OjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkgY291bGQgYmUg
Y2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PHNpemVfdD4oMFUpLCAxKSwgMCwgMCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxCbG9iTG9hZGVyPihbdGhp
c10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyLmNwcAppbmRleCAyNWJmZjE1M2QxMmMuLjc1NDNmNDc1YTI3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAt
NzQsNiArNzQsOCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5
Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVmZmVyU2l6
ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUu
aGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChi
dWZmZXJTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFwaXhl
bEFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IDg3MGJkYzgwZjM1NS4uZDgzZTRh
NDA0MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0Jv
eC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjMsNyArNjQsMTAgQEAgcHJv
dGVjdGVkOgogICAgIHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFImIHJldHVyblZhbHVlLCBWJiB2
aWV3LCB1bnNpZ25lZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5lc3MpCiAgICAgewogICAg
ICAgICBib29sIHJlYWRTdGF0dXMgPSBmYWxzZTsKLSAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVt
cGxhdGUgcmVhZDxUPihvZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0
YXR1cyk7CisgICAgICAgIHNpemVfdCBhY3R1YWxPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIFQg
dmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4oYWN0dWFsT2Zmc2V0LCBlbmRpYW5uZXNzID09
IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0lu
Qm91bmRzPHVpbnQzMl90PihhY3R1YWxPZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0ID0gYWN0dWFs
T2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWRTdGF0dXMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAK
</data>
<flag name="commit-queue"
          id="465520"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441311</attachid>
            <date>2021-10-14 17:27:09 -0700</date>
            <delta_ts>2021-10-14 17:45:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>272330</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi4zNzliYzNjYTY4MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBicmFu
Y2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZh
bCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pTVmFs
dWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1h
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwppbmRl
eCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRt
ZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9v
KG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQgbWF4
U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3
MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAgIHZh
ciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwICsg
MSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
ZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYg
KGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cgZXhw
ZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjog
ZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAog
ZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJh
eSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTogMHg4
MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNpemUg
PSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAgIG1l
bW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAtIDB4
MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4uODBm
ZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBAQAot
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9y
ICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikK
Ky8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1LDIx
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIpKTsK
KyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
Zm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBtYXhT
aXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9
PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikpOwog
ICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0
cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUudG9T
dHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAg
IGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKwor
ZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0
aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlW
YWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJh
eVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2Eg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0
aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFj
dHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsg
bCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0
ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmlu
Zyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdp
Z3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRocmVl
R2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBm
b3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0
aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCww
ICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVl
ICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Cisg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTUzOWI1MGQyZTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxs
eS1vb2IuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3Ig
KCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQor
Ly9AIHJ1bkRlZmF1bHQoKQorZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0
aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSkKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9
Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0
OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJy
YXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAg
ICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
ICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAg
IHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0
QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IGFjdHVhbExlbmd0aCArIDEwOworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAg
IGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAoIkluIG91dC1vZi1ib3Vu
ZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10
aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpp
bmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0
ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYsMTMg
QEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAgICAg
dmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRNZW1v
cnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1vZHVs
ZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAK
LWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAoZXhj
ZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBpbnZh
bGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIoKSkn
KSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUt
dGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNt
LW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwppbmRl
eCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3Jl
Z3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJ
WkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZhciBl
eGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7CiB9
IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAhPSAi
UmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAoZXhj
ZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2FzOiAi
ICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZGU0Yjk1NDQzNC4uNzNmYmU1NThkN2Y5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFJlYmFzZWxpbmVkIHRocmVlIGZvbGxvd2luZyB0ZXN0cyBhcyBkaWZmZXJlbnQgb3Ig
ZmV3ZXIgZXJyb3IgbWVzc2FnZXMgYXBwZWFyIG9uIHRoZSBjb25zb2xlLgorICAgICAgICBBbHNv
IGNoYW5nZWQgY3VycmVudFZlcnNpb24gaW4gc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBm
cm9tIDkgdG8gMTAuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWludmFsaWQtcmVzdWx0LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisgICAgICAgICogd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0xMiAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRob3V0LWlu
dGVyYWN0aW9uLnB5IGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYx
N2FkLi44N2JjYzQ0OTJjMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9z
ZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFn
ZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5
PgogICAgICAgICA8c2NyaXB0PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25z
dCBjdXJyZW50VmVyc2lvbiA9IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVy
IGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1
ZmZlci1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRj
NS4uNWI4ZjM2NjU5Y2IzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1
Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUg
b2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYg
aXQgZG9lcyBub3QgY3Jhc2guCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1s
ZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5k
MDczNjAwMTQzMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0
IGludGVybmFsIEF1ZGlvQnVmZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9m
IDQ0MDAwIGFuZCBhIGxlbmd0aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVu
Z3RoIHJldHVybmVkIGJ5IE9mZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8g
Y29uc3RydWN0IHRoZSByZW5kZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwYWM3NWM5NzQ3OWQuLjc1OTNmYmE5ZTEy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTEz
ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cg
V0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1B
WF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkg
dGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0
R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBs
ZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BVUmVnaXN0
ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkg
aW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNp
emUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
cywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2
ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIg
YW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBH
ZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIg
cmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBo
YWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisg
ICAgICAgIC0gSW4gdHVybnMsIEkgaGFkIHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2Ug
Q2hlY2tJbkJvdW5kcyBjb3VsZCBub3QgYWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIKKyAgICAgICAgLSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9u
cyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hY
WCB0byBhY2NlcHQgbm9uLUludDMyIGluZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXksIGEgbWF4aW11bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAy
Qi4KKyAgICAgICAgLSBJIGFkZGVkIGEgIm1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJy
YXlQcm9maWxlL1VubGlua2VkQXJyYXlQcm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdo
ZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBpbmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3Bl
Y3VsYXRpb24gYW5kIHNwZWNpYWxpemF0aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwu
CisgICAgICAgICAgICBJIHRoZW4gdXBkYXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBi
eSB0aGUgc2xvdyBwYXRocyB0byBjb3JyZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9y
dHVuYXRlbHkgSSByYW4gb3V0IG9mIHRpbWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3Vw
ZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMuCisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBo
YXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBs
YXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50Cisg
ICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJh
dGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcg
bGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwg
Zm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRv
bWljc1hYWAorCisgICAgICAgIFRoZSBjdXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdp
bGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNl
cyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3Ro
ZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVm
aW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5
IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhp
cyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0
aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNl
IENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgor
ICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAt
IEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFk
eSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0g
TWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFz
IHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OkltbTY0OjpJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6Oklt
bTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2Ny
YXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1
YXJkKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZEFycmF5UHJvZmlsZTo6VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6QXJyYXlNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhU
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NB
bmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnNwZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNBcnJheU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6
REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
TG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0
cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlk
YXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRB
cnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmlj
dEVxKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmlu
c2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5C
eXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxp
Z25tZW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxl
bmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNh
bGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAg
KEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6
CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
OgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dE
b3duQW5kV2FzdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9z
c2libHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6
Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFy
cmF5SW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aElu
ZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2lu
IG1pZ3JhdGlvbiBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2FhMGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUsOSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFz
cyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlh
dGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1l
bW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3Rl
ZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRy
dXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1Q
dHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVk
SW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51
bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpu
dWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0
ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRw
dHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Piht
X3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29u
c3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBw
dWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAg
ewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRy
dXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShw
dHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBA
QCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsK
LSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
Mih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
MihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0
ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAg
ICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVi
bGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2Np
ZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBz
dHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgp
IHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAg
ICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBt
X3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02
NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRw
dHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6
CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAg
ICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1
ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAg
ICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5k
aWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFz
VHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAg
IC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1
Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0
YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBE
YXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFiYmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2
ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hN
dWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
OjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJh
c2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7
CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUo
QVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0
KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0K
IAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBu
ZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdp
c3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAv
LyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBp
dCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3
aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAg
IGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAg
IGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQp
LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJl
Z2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFj
ZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50
ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAg
ICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwg
cmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAv
LyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThm
ZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJN
NjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAg
IHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZm
ZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAg
IH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIu
LjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQ
dHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRh
dGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRk
cmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7
CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAg
ICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxp
ZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6
IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0
LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBl
NjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkg
KzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAg
ICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZm
OyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0
aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzOTc5OTJhM2E3NTAuLjEzMjUwZWM0ODQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2
LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAg
ICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6
CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRl
cjoKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2
YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAgLy8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5
cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBwcm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQg
YXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEy
ICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAK
ICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdo
LmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkp
OwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQu
c2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVp
dGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0
YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92
ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAg
c3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFi
b3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAg
ICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Io
c2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxv
Y2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTExOTcsOSArMTIwMywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlBy
ZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVn
aXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BS
KTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BS
KTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7
CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5
cGUpKSB7CkBAIC0xNTk1LDkgKzE2MDUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdp
dGhHdWFyZCgKICAgICAgICAgICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRP
ZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24g
ZnVuY3Rpb24uCi0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNo
MzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7
CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hH
UFIpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGgg
aXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0
aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJh
bmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxl
bmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5i
cmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NP
Zkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtl
RGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTE2MDUsOSArMTYy
MCwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxs
b2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0
LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNl
KTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRk
cmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRk
cmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
VmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFu
ZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3Jh
dGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAg
ICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggNjkxNjc5NDg0M2IwLi4zNmZlYjE0NGJhZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRm
aWVsZCB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRo
YXQgd2UgaGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNl
IHRoZSBsb3dlciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5n
IHRoZSBiaXRzIDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRh
a2luZyB0aGUgYml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9k
ZXM7CiAKIC8vIFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAo
MCAtIDE2LCAyMSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUsMTUgQEAgcHVibGljOgogICAgICAg
ICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAgICAgfQotICAg
IAorCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCk7CisgICAgdm9pZCBzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXk7IH0KKyNlbHNlCisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
ICAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJu
ICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJh
eU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRk
cmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAt
MjQ0LDYgKzI1Miw5IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVj
dHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRo
aXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBj
YXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVw
ZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkg
anVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRo
aXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMu
CiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7IGZhbHNlIH07CisjZW5k
aWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDogMTsKICAgICBib29s
IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29sIG1fZGlkUGVyZm9y
bUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY0LDEzIEBAIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmls
ZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAg
ZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1fdXNlc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAg
ICAgLCBtX21heUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorI2VuZGlmCisgICAgeworICAgIH0K
IAogICAgIHZvaWQgdXBkYXRlKEFycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlKQogICAgIHsKQEAg
LTI4MCw2ICsyOTcsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1fdXNl
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJyYXlQcm9maWxlLm1fdXNlc09y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOworCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAgICAgICAgICBhcnJheVByb2Zp
bGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlw
ZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5MCw3ICszMTQsMTEgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRB
cnJheSA6IDE7CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5
UHJvZmlsZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IDJiMmY1ZTAzMDE5Zi4uYTFjZDY5OTQ0YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0z
NDYzLDcgKzM0NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGg6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRy
eUdldEZvbGRhYmxlVmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAg
aWYgKHZpZXcgJiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcg
PSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcp
IHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldDogewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0
Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBp
ZiAodmlldykgewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNl
dCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRl
T2Zmc2V0KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldCA9
IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zm
c2V0ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2
aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAg
ICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAt
NDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUg
Q2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0
IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
ICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1
MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICsz
MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5j
aGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBu
b3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAg
ICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAg
ICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5
YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkp
OwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAg
aWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgp
KQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3Qg
YmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDgg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRB
cnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVz
ZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3Qg
R2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkg
ewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNi
Li5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24g
YWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0
aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5
TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNw
ZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAg
IHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJy
YXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNw
ZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAg
ICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlC
ZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYz
LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJy
YXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247
CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRl
cy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3Bl
Y3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNp
b24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlv
bik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5h
c0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3Jk
KCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9u
KEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJz
aW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3Mo
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZl
cnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
cywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRp
b247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAg
IH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxl
LCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAg
ICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3Jl
VG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBi
b29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlD
bGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9m
aWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMg
PSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0g
ICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNw
ZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBB
cnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAg
QXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJv
b2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2Vy
KTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJh
eSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51
c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAg
ICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAg
JiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBj
b252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVy
c2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3
OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwog
ICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29u
dmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBl
ZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7
CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLmEwMGM4NTM3MDEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgw
NywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxU
YXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVy
YW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50
JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogeworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljX2Fzc2VydChl
bmFibGVJbnQ1MigpKTsKKyNlbmRpZgorCiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygp
KSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBi
b29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7
CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQo
KS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4MjIs
MjYgKzM4MzEsMzAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVy
KE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VS
VChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBO
b2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5
TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAg
ICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgTm9kZSog
bGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CiAgICAgICAgIC8vIE91ciBBcnJheU1v
ZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8g
ZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAg
YWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAgICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAg
ICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1
c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8g
dGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3Rh
bnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFy
aXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fu
bm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEg
Ynl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUg
PSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNp
YzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAh
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFu
dC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdl
VHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAg
ICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9
KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcElu
Zm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUp
KTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAg
ICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUs
IEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7
CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAh
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODcxLDcgKzM4OTAsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwog
ICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAg
IH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyID8gR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIDogR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3As
IE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlz
Tm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNmZGU5Nzc5Li45YWQ1YzI3MDIwZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYg
KzE1Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0
IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRv
ckhhc093blByb3BlcnR5OgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBj
YXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0yMzksNiArMjQw
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFRvQm9vbGVhbjoKICAgICBj
YXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kc0ludDUyOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAg
ICAgY2FzZSBJbnQ1MlJlcDoKQEAgLTEzMzcsNiArMTMzOSwxMSBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9j
LCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAg
cmV0dXJuOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAg
ICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJh
eUJ5dGVPZmZzZXRJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9k
ZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsK
ICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2Fz
ZSBBcnJheVVzZToKQEAgLTE0NDQsNiArMTQ1MSwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVG
dQogICAgICAgICB9CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MjogeworICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBy
ZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlMZW5n
dGhJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewog
ICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOwogICAgICAgICBzd2l0
Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAppbmRl
eCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBib29sIHZhbGlkYXRpb25FbmFibGVk
KCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBlbmFibGVJbnQ1MigpCitpbmxpbmUgYm9vbCBj
b25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCmluZGV4IGI4ODI1YWNhZTM0ZS4uZmExN2JmMTE0MTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcApAQCAtMzg3LDYgKzM4Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIENoZWNr
SW5Cb3VuZHNJbnQ1MjoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5Ny4uNDAyODRjZmEyMmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAg
ICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CkBAIC0xOTcsMTAgKzE5OCwx
MiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRH
ZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVu
Z3RoOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2lu
dEF0OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBj
YXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGUxYjkzZWVlNmNhLi41NjZmNTM5
ZGUxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEwNDMsNiArMTA0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAg
ICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAg
ICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAg
JiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBP
dmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xMDczLDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBE
b24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZlIG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2Rl
LgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXRSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkg
dG8gZG8gdGhpcy4uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IEVudW1lcmF0b3JHZXRCeVZhbCkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhUeXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMzLDYgKzExMzQsMTggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5nVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkludDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6VWludDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFy
cmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDE2QXJyYXk6CisgICAgICAgICAgICBj
YXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJB
cnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAxKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpKTsKQEAgLTExODQsNiArMTE5Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRp
b24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMo
KQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkK
KyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBl
ZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBO
b2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xNzE3LDEyICsx
NzMxLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFy
cmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMy
KCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2Rl
LT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtMjE0OSw2ICsyMTY3LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUo
bV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1
bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUu
aXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUo
YXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQx
KCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dDogewogICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4Miw2ICsyMjE3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEFzc2VydEluQm91
bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAg
IGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CkBAIC00MDk2
LDE0ICs0MTMyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGls
ZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRB
cnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1v
ZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAg
IHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDgg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBp
cyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcg
Y29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhl
ciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3
aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQg
aWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGlu
IG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBt
YXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2Vz
IG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlz
IGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1h
eSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRleCAyYmI5ZDRiZWE4MDAuLjA2NjFl
NWI4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5
dGVPZmZzZXRMb2MiKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0
SW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3Ro
SW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUxlbmd0aEludDUyTG9jIik7
CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgUHJvdG90eXBlTG9jOgogICAgICAgICBvdXQu
cHJpbnQoIlByb3RvdHlwZUxvYyIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAppbmRleCAyNjkxNzFjYjM0MWQuLjQwZmI3MTY3
MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBA
IC02Nyw2ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0ZXJMb2MsCiAgICAg
U3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAorICAgIFR5cGVkQXJy
YXlCeXRlT2Zmc2V0SW50NTJMb2MsCisgICAgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jLAogICAg
IFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxvYWRMb2MsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MS4uNmRlZGEwMzdlZTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGlt
aXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTMzNSw3ICsxMzM1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vbk5lZ2F0
aXZlICYmIGxlc3NUaGFuTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRl
Tm9kZShibG9jay0+YXQobm9kZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRz
Q2hlY2tFbGltaW5hdGlvbigpKSAmJiBub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5k
ZXgsIFNwZWNOb25lLCBBc3NlcnRJbkJvdW5kcywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEo
KSwgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UganVzdCBu
ZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYSB2YWx1ZS1wcm9kdWNpbmcgbm9kZS4KICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTlj
Li4wYmE3YjlmZjNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk2
NSw2ICsxOTY1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAg
Y2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAg
ICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgog
CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1
cm4gMjsKIAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0
SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZh
bERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5YTkw
YTRjZmRhYzguLjIzZjFjMTUwZDYwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMjYxLDggKzI2MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKE11bHRpRGVsZXRlQnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAg
LyogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBUeXBlZEFycmF5cywgYXMgdGhleSBhcmUgdGhl
IG9ubHkgb25lcyB0aGF0IGNhbiBoYXZlIGEgbGVuZ3RoIHRoYXQgZG9lcyBub3QgZml0IGluIDMy
IGJpdHMuICovIFwKKyAgICAvKiBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIGNoYW5nZSB0byByZXR1cm5pbmcgSW50NTIgaW4gRml4
dXAuIERvaW5nIGl0IGJlZm9yZSBjYXVzZXMgdmFsaWRhdGlvbiBmYWlsdXJlcy4gKi8gXAorICAg
IG1hY3JvKEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFNj
b3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXApAQCAtMjg2LDYgKzI5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhDaGVja0JhZFZhbHVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
QXNzZXJ0SW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91
bmRzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oQ2hlY2tJ
bkJvdW5kc0ludDUyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFj
cm8oQ2hlY2tJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrVHlwZUlu
Zm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFrZXMgYW4gT3BJbmZvIHdpdGggdGhlIGZs
YWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wKICAgICBtYWNybyhDaGVja0pTQ2FzdCwg
Tm9kZU11c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0aGUgc2FtZSBhcyBqc0Nhc3QgYnV0IGFzIGEg
c3BlY3VsYXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0aW9uICovXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTUwN2YxZTgwYWMwLi45NDUzNTM1NmRl
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
OTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFsdWUKICAgICB9CiAgICAgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaW5k
ZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGlu
ZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwg
aW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3NSw3ICsxNzMs
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLCBjaGFy
KiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3Qgc2l6ZSwg
Y2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIApAQCAtMTgzLDExICsxODEsMTQgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHIKICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIl9zKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpu
dW1lcmljX2xpbWl0czxpbnRwdHJfdD46Om1heCgpIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOworICAgIHNpemVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNpemUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3Io
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0
b3IsIHVuc2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0
d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc2l6ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxj
aGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVk
U2l6ZSkpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA5LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0Nl
bGwqLCAoVk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MjQsNyArMTkyNSw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMTk0MCw3ICsxOTQxLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk1Niw3ICsxOTU3LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk3Miw3ICsx
OTczLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcgKzE5ODksNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDA0LDcgKzIwMDUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjEsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMzYsNyAr
MjAzNyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsy
MDY5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCmluZGV4IDM5M2RlODg1MDcwNy4uNGZkNTc5NWQyZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1w
dHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3Qs
IGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFs
dWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRw
dHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
VWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAo
Vk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVj
MC4uOGUwYzU4YjhhMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg2LDYgKzk4Niwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50
NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CkBAIC0xMzIwLDYgKzEzMjYsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgICAg
IGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICAg
ICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgog
ICAgICAgICBjYXNlIERvdWJsZVJlcDoKICAgICAgICAgY2FzZSBWYWx1ZVJlcDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCmluZGV4IGUz
YTIzOWEzM2UzMC4uZDlkYWUzYTgzMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKQEAgLTEwMCwxMSArMTAwLDIxIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkgIT0gTm90VHlwZWRBcnJheSAm
JiBtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgewotICAgICAgICAgICAgICAg
IE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2Rl
LT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgp
LmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEtub3du
SW50MzJVc2UpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgICAgICAgICAg
aWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBo
Lmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFn
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9
IEVkZ2UobGVuZ3RoLCBJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNl
bmRpZgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQz
Mk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFn
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9
IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzcsMTIgKzE0NywyOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBOb2RlKiBsZW5n
dGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyht
X25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgRWRnZShiYXNlLm5vZGUoKSwgS25vd25DZWxs
VXNlKSwgc3RvcmFnZSk7Ci0gICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHks
IENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgaW5kZXgsIEVkZ2Uo
bGVuZ3RoLCBLbm93bkludDMyVXNlKSk7CisgICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHM7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKChvcCA9PSBHZXRBcnJheUxl
bmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBt
X2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpKSB7
CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9u
b2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVz
ZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgbGVuZ3RoLT5zZXRSZXN1bHQoTm9kZVJlc3VsdElu
dDUyKTsKKyAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlwZSBpcyBhIGR1bW15IHNpbmNlIHRo
aXMgbm9kZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55dGhpbmcuCisgICAgICAgICAgICBj
aGVja0luQm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUt
Pm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNl
KSk7CisgICAgICAgIH0gZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcElu
Zm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3du
Q2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQz
Mk9ubHksIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgIGlu
ZGV4LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgICAgIH0KKyNlbmRpZgorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGph
Y2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlw
ZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdmNTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBib29sIGlnbm8KICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNz
ZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENo
ZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQ
cm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAg
Y2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNDc5NjM4NDQ5NDRhLi43YTI3ZTRlMjBkZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
MjM4LDI4ICszMjM4LDQzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShK
SVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29t
cGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVy
OjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUq
IG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KQogewogICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVy
biBKSVRDb21waWxlcjo6SnVtcCgpOwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9q
aXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZSht
X2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7
CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3Ro
KCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9k
ZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAg
ICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50
MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgp
ICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBK
SVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
IG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
cmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vs
c2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOwogICAgICAgICByZXR1cm4gbV9q
aXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBp
bmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQor
CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0
cihpbmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSkpOworI2VuZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9k
ZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3Vu
ZHMobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAg
PSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBz
Y3JhdGNoR1BSKTsKICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1
bXApOwpAQCAtMzM4MCwxMCArMzM5NSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2Uo
dGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcg
PSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsK
IAogICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wOwogICAgIEZQUlJlZyBy
ZXN1bHRGUFIgPSBJbnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDE0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5
cGVkQXJyYXlUeXBlIHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4
KERhdGFGb3JtYXRJbnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZv
cm1hdEpTOwogCi0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBw
cm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVn
LCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0
b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAg
ICAgY29uc3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFy
cmF5TG9hZFJlc3VsdChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3Vs
ZEJveCwgcmVzdWx0RlBSKTsKQEAgLTM1NTUsNiArMzU3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0CiAgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFu
ZCBzdG9yYWdlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3Rv
cmFnZS5ncHIoKTsKICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAyKTsKQEAgLTM1ODcsNyArMzYwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0CiAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVydHkp
OwogICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0g
c3RvcmFnZVJlZyk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9y
VHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9k
ZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgMToKQEAgLTM2NDUsMTAgKzM2NjMsMTIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9k
ZSwgVHlwZWRBcnJheVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBT
dG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcg
PSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwog
ICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAg
IERhdGFGb3JtYXQgZm9ybWF0OwpAQCAtMzY1Niw3ICszNjc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRB
cnJheVR5cGUKIAogICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgRlBSUmVnIHJl
c3VsdFJlZyA9IHJlc3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5v
ZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNr
KG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsKICAgICBzd2l0Y2ggKGVs
ZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBtX2ppdC5sb2FkRmxvYXQo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9B
c3NlbWJsZXI6OlRpbWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjkwLDEwICszNzEwLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShH
UFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZh
bHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgIEdQUlRlbXBvcmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBSUmVnIHZhbHVlRlBSID0g
dmFsdWVPcC5mcHIoKTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9k
ZSwgYmFzZSwgcHJvcGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRz
ID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwgc2Ny
YXRjaEdQUik7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNh
c2UgNDogewpAQCAtNzk2Nyw3ICs3OTg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5
cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsK
ICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAg
ICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywg
dmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNF
RF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBA
IC04MDM5LDkgKzgwNjEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKICAgICBHUFJSZWcgZGF0
YUdQUiA9IGRhdGEuZ3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKLSAg
ICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRh
dGFHUFIpOwogCiAgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKIApAQCAtODA4
Myw2ICs4MTAyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldChOb2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwogI2Vu
ZGlmCiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIC8vIEFJIHByb21pc2VzIHRo
YXQgdGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBz
byB3ZSBtdXN0IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmUsIHZlY3RvckdQUiwgVHJ1c3RlZEltbTMyKHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKSkpOworI2VuZGlmCisKICAgICBzdHJpY3RJbnQzMlJlc3VsdCh2
ZWN0b3JHUFIsIG5vZGUpOwogfQogCkBAIC04MzQ5LDEyICs4MzczLDE4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIG1faml0LmxvYWQ2NChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3cs
IEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSkpKTsKKyNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHJlc3VsdEdQUik7CisjZW5kaWYKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfSB9CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNoZWNrSWRlbnQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBzdHJpbmdPclN5bWJvbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMTExOSwx
MCArMTExNDksMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShOb2RlKiBub2RlKQogICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBl
ZEFycmF5VHlwZSgpOwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQu
Z3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1
cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1
Y3R1cmUuZ2V0KCkpOwotICAgIAorCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAv
LyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgaW50cHRy
X3QsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRmb3JtcworICAgIFNwZWN1bGF0ZUludDMyT3Bl
cmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lz
dGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UK
ICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorICAgIGVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNp
emVHUFIpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJy
YXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7
CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFn
ZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTM2LDggKzEx
MTgwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIHN0b3JhZ2VHUFIpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzbG93
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJv
dmUsIHNpemVHUFIsIFRydXN0ZWRJbW02NChKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1p
dCkpKTsKKyAgICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRo
IHRoYXQgdGhlIHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQoaXNJ
bkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworI2Vs
c2UKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6
ZmFzdFNpemVMaW1pdCkpKTsKKyNlbmRpZgogICAgIAogICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwg
c2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRT
aXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTExOTMsOSArMTEyNDQsMTUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2Rl
KiBub2RlKQogICAgIG1faml0LnN0b3JlUHRyKAogICAgICAgICBzdG9yYWdlR1BSLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBtX2pp
dC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7Cisj
ZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0ZWRJ
bW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE2Nyw2
ICsxNDIyNCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheShO
b2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2Ug
VW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50
LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggMDdiNTYzYjM0ODNhLi4wNDliY2Y3ZTZmZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3Ry
aW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAg
IAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJ
bnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUo
Tm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNv
bXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVH
ZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2
b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKik7CisjZW5kaWYKIAog
ICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQ2hlY2tJZGVudChOb2RlKik7CkBAIC0xNDMxLDEwICsxNDM4LDEzIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbXBpbGVBcml0aE1pbk1heChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ29uc3Rh
bnRTdG9yYWdlUG9pbnRlcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZShOb2RlKik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJy
YXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7Cisg
ICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3Vu
ZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7
Ci0gICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIGluZGV4R1BSKTsKKyAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2so
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7CisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxP
bkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8
c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRG
b3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsK
ICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFy
cmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFG
b3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcg
KzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8v
IEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAx
NiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4g
aXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRl
SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAg
LTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwog
fTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGlu
IHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdp
dmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUy
IGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVT
dHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKaW5kZXggNmEwZjI1MjBlYTM3Li4yMmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAt
MjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGls
ZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21l
VHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5h
cnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAg
ICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJl
Zml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAg
ICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMy
LWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVE
ZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlw
ZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzOTgsNiArNDQwOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6
CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAg
Y2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBN
dWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNiMzkz
ZjUyNzVmNy4uYjVjNDg0OTgzZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjk0LDYgKzI2OTQsODYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNp
emUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBh
dXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlU
eXBlKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1
bGF0ZVN0cmljdEludDUyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBH
UFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhT
aXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsK
K30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyKE5vZGUqIG5vZGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCku
aXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVz
ZSwgYmFzZSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
cmVzdWx0R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgx
dWxsIDw8IDUyKSwgInRoZXJlIGlzIGEgcmlzayB0aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJy
YXkgd29uJ3QgZml0IGluIGFuIEludDUyIik7CisgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3Io
dGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IGRhdGEodGhpcyk7CisKKyAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKKyAg
ICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJH
UFIgPSBkYXRhR1BSOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0g
bV9qaXQuYnJhbmNoMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTW9kZSgpKSwKKyAgICAgICAgVHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkp
OworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBudWxsVmVjdG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVy
OjpFcXVhbCwgdmVjdG9yR1BSLCBUcnVzdGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxs
VmVjdG9yUHRyKCkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAg
bV9qaXQuY2FnZVdpdGhvdXRVbnRhZ2dpbmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOwor
CisgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwgYXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBU
aGlzIG5lZWRzIGNhZ2luZy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1NTE1CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhhcnJheUJ1ZmZlckdQUiwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7
CisjaWYgQ1BVKEFSTTY0RSkKKyAgICBtX2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsK
KyNlbmRpZgorCisgICAgbV9qaXQuc3ViUHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkK
KyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNl
dC5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2
ZWN0b3JHUFIpOworCisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisg
ICAgQVNTRVJUKCFKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxs
VmVjdG9yLmxpbmsoJm1faml0KTsKKyNlbmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVj
dG9yR1BSLCBub2RlKTsKK30KKyNlbmRpZiAvLyBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUg
b3AgPSBub2RlLT5vcCgpOwpAQCAtMzY0NCwxMSArMzcyNCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50
MzJPcGVyYW5kIGluZGV4KHRoaXMsIGluZGV4RWRnZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoOwogCiAgICAgICAgIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBpbmRleEdQ
UiA9IGluZGV4LmdwcigpOwogICAgICAgICAKLSAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQUik7CisgICAgICAgIGVtaXRUeXBlZEFycmF5Qm91
bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAg
ICAKICAgICAgICAgR1BSVGVtcG9yYXJ5IGFyZ3NbMl07CiAgICAgICAgIApAQCAtNDM4MSw2ICs0
NDYyLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNh
c2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisjaWYgVVNFKEFERFJFU1M2NCkKKyAgICAg
ICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsK
KwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2Rl
KTsKICAgICAgICAgYnJlYWs7CkBAIC00NDk5LDYgKzQ1ODgsMTUgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIo
bm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsK
ICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTU1ODksNyArNTY4NywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAg
ICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVz
dGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3Mo
KSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNz
VGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBtX2ppdC5sb2FkNjQo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4g
ZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMgYXJlIGNhdWdo
dCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApA
QCAtNTc5MCw3ICs1ODk1LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAg
ICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRy
dXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVn
cygpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxl
c3NUaGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgIG1faml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisjZWxzZQorICAgICAgICAvLyBObyBuZWVkIGZvciBh
biBleHBsaWNpdCBjaGVjayBhZ2FpbnN0IDAgaGVyZSwgbmVnYXRpdmUgaW5kaWNlcyBhcmUgY2F1
Z2h0IGJ5IHRoZSBjb21wYXJpc29uIHdpdGggbGVuZ3RoIHJpZ2h0IGFmdGVyCiAgICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisjZW5kaWYKICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAg
IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwog
CkBAIC02MDQyLDYgKzYxNTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIEFzc2VydElu
Qm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJ
bnQ1MjoKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAg
ICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggNWY1MWYyMjUxMDRm
Li5lMTBkNjJlNDI3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcApAQCAtMjc5LDEwICsyNzksMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNh
c2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAg
ICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKQEAgLTM1OSw2ICszNjEsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAg
ICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggYzVlNWNmMzZhNzcwLi5mYjNiZGQ0ODYx
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC02NDAs
NiArNjQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFVwc2lsb246CiAgICAg
ICAgICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHM6CisgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAg
ICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dl
bmVyYXRvckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4uNzg3ZTE0NTU2MmY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNl
dEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKQEAgLTE5OSw2
ICsyMDAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNl
IENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBD
b25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1Zh
cmFyZ3M6CkBAIC0zOTEsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50czoK
ICAgICBjYXNlIENQVUludHJpbnNpYzoKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNh
c2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6
CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggM2E4ZjVjZmM3
OTVlLi40OGQ0ZTFiZmY0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTYwNSw2ICs2MDUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2hlY2tJbkJvdW5k
cykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IENoZWNrSW5Cb3VuZHNJbnQ1MikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1faW50ZXJwcmV0ZXIuZm9yTm9kZShub2Rl
KTsKICAgICAgICAgICAgIHsKQEAgLTEwMjUsNiArMTAyNyw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgo
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAg
ICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTEwMzQsNiArMTAzOSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoK
ICAgICAgICAgICAgIGNvbXBpbGVDaGVja0luQm91bmRzKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICBjb21waWxlQ2hl
Y2tJbkJvdW5kc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRC
eVZhbDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMTc1LDYgKzExODMsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTI6CisgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVP
ZjoKICAgICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC00ODI4LDkgKzQ4MzksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNO
dWxsKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3Ip
KSk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQor
ICAgIExWYWx1ZSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0
KCkKICAgICB7Ci0gICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsgICAgCisgICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayB3YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAg
LTQ4NDYsNyArNDg1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8od2FzdGVmdWxDYXNlLCBub3ROdWxsKTsKIAogICAgICAgICBMVmFs
dWUgdmVjdG9yID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X3ZlY3Rvcik7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1f
b3V0LmNvbnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwgCisg
ICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRy
KEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwKICAgICAgICAgICAgIHVuc3Vy
ZShjb250aW51YXRpb24pLCB1bnN1cmUobm90TnVsbCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKG5vdE51bGwsIGNvbnRpbnVhdGlvbik7CkBAIC00ODY2LDkgKzQ4NzcsMzAgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKIAotICAgICAgICBzZXRJbnQzMihtX291dC5j
YXN0VG9JbnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVm
dWxPdXQpKSk7CisgICAgICAgIHJldHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZl
Y3Rvck91dCwgd2FzdGVmdWxPdXQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCk7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgLy8gQUkgcHJvbWlzZXMgdGhhdCB0aGUgcmVzdWx0IG9m
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0IHdpbGwgYmUgSW50MzIsIHNvIHdlIG11c3QgdXBob2xk
IHRoYXQgcHJvbWlzZSBoZXJlLgorICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQuYWJvdmUocmVzdWx0LCBtX291dC5jb25zdEludDY0KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworI2VuZGlmCisgICAgICAgIHNldEludDMy
KG1fb3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKworI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmct
bm9yZXR1cm4iCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
KCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0Vf
QVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsK
KyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2Vw
dFNldHRpbmdSZXN1bHQoKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIocmVzdWx0KTsKKyAgICB9
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICB2b2lkIGNvbXBpbGVHZXRQcm90
b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1
MDg2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsK
LSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAg
ICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1f
b3V0LmFib3ZlKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9J
bnQzMihsZW5ndGgpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2NCw2ICs1MTAxLDE3IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICB9CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorICAgIHZv
aWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7
CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxF
QVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAg
c2V0U3RyaWN0SW50NTIobV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICB9CisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5n
dGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkg
ewpAQCAtNTEwOCw3ICs1MTU2LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBv
dXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAog
ICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgogICAgIH0KLSAgICAKKworI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21p
c3Npbmctbm9yZXR1cm4iCisgICAgdm9pZCBjb21waWxlQ2hlY2tJbkJvdW5kc0ludDUyKCkKKyAg
ICB7CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJU
KFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBS
RUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAg
ICAgLy8gU2lnbi1leHRlbmRlZCB0byBhbHNvIGNhdGNoIG5lZ2F0aXZlIGluZGljZXMKKyAgICAg
ICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuc2lnbkV4dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNo
aWxkMSgpKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51
bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbGVuZ3RoKSk7CisgICAgICAgIC8vIEV2
ZW4gdGhvdWdoIHdlIGNsYWltIHRvIGhhdmUgSlNWYWx1ZSByZXN1bHQsIG5vIHVzZXIgb2YgdXMg
c2hvdWxkCisgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9k
ZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAorICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVt
LgorICAgIH0KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKwogICAgIExWYWx1ZSBjb21w
aWxlR2V0QnlWYWxJbXBsKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CkBAIC02
MDA4LDExICs2MDcyLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGlzSW5Cb3VuZHMgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBpc091dE9mQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIo
Y2hpbGQ1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnN1cmUoaXNPdXRPZkJvdW5kcyks
IHVuc3VyZShpc0luQm91bmRzKSk7Ci0gICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgICAg
ICAgICAgICAgIExWYWx1ZSBpc091dE9mQm91bmRzQ29uZGl0aW9uOworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hpbGQ1LnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhlIHByZXByb2Nlc3NvciBjaG9rZXMgb24gUkVMRUFTRV9BU1NFUlQo
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykpLCB0aGlzIGlzIGVxdWl2YWxlbnQuCisgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWlu
dDY0X3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24g
PSBtX291dC5hYm92ZU9yRXF1YWwobV9vdXQuc2lnbkV4dDMyVG82NChpbmRleCksIGxvd1N0cmlj
dEludDUyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbiA9IG1fb3V0LmFib3Zl
T3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3V0T2ZCb3VuZHNDb25kaXRpb24s
IHVuc3VyZShpc091dE9mQm91bmRzKSwgdW5zdXJlKGlzSW5Cb3VuZHMpKTsKKwogICAgICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3Vu
ZHMsIGlzT3V0T2ZCb3VuZHMpOwogICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZSh2YWx1
ZVRvU3RvcmUsIHBvaW50ZXIsIHN0b3JlVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTgxNjksOTUgKzgyNDAsMTggQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAg
ICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAg
ICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOwot
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0gICAgICAgICAgICBtX291dC5icmFuY2goCi0g
ICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQuY29uc3RJbnQzMihKU0FycmF5
QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAgICAgICAgIHJhcmVseShzbG93
Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7
Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAgICAgICAgICAgICAgbV9vdXQu
c2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNp
emUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRB
cnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5k
KAotICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50
UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19j
YXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAg
IExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIExWYWx1
ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAgICAgICAgICAgICBzdG9yYWdl
LAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAgICAgICAgICAgICAgICBtX291
dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkp
LAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAgICAgICAgICAgICAgICBtX2hl
YXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShBUk02NEUpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNp
emUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9v
dXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50
aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0
ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3Io
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBw
YXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFy
YW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0gICAgICAgICAgICB9Ci0jZW5k
aWYKLQotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNo
b3Ioc3RvcmFnZSk7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRv
NjQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgZmFz
dFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5
cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKLSAgICAgICAgICAg
IGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0g
YWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clpl
cm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgRk9S
X0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZ
UEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAgICAgICAgICAgIGNhc2Ug
VHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRl
T2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2Up
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdl
LCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAg
ICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0
LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG11dGF0b3JG
ZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlw
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2lu
dGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKyAgICAgICAgY2FzZSBJbnQ1MlJl
cFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNv
bmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0
aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9j
YXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFy
cmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5n
ZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
c2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dT
dHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0
LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAg
ICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
ODI3Nyw3ICs4MjcxLDEwNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5
cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2NEJpdHMpCisgICAg
eworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clpl
cm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNp
emU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGlt
aXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hD
YXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhz
bWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNzdW1lIHRocm91Z2gg
dGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJl
ci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZm
ZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KKyAg
ICAgICAgICAgIG1fb3V0LnNobChzaXplNjRCaXRzLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1l
bnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRB
cnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisg
ICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSks
CisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90
Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRv
ckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwg
c2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxs
b2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0
b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCisgICAgICAgICAgICBtX291dC5j
YXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAor
ICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFy
cmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgICAgICB7CisgICAgICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRl
clR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3Rlcihz
dG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIz
OjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
IGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgaml0
Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAg
IGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7CisgICAgICAg
IH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQu
YW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxs
cHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7CisjZGVmaW5lIFRZUEVEX0FS
UkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCisgICAg
ICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9W
SUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UK
KyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUg
PSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8s
IHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZh
bHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyAgICAgICAgbV9vdXQuc3RvcmU2NChzaXplNjRCaXRzLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbHNlCisgICAgICAg
IG1fb3V0LnN0b3JlMzIobV9vdXQuY2FzdFRvSW50MzIoc2l6ZTY0Qml0cyksIGZhc3RSZXN1bHRW
YWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCisgICAgICAg
IG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1
bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRh
dG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAg
ICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9y
YWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAg
ICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9
LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5
U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRB
cnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAor
ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsK
KyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBo
aShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAg
ICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
QEAgLTE0NjU2LDYgKzE0NzQ3LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAg
IC8vIGJhc2UgYW5kIHZhbHVlIGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRz
CisgICAgLy8gc3RvcmVzIHZhbHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2Ur
YmVnaW4qOCBhbmQgYmFzZStlbmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwg
TFZhbHVlIGJlZ2luLCBMVmFsdWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0SGVh
cCYgaGVhcCkKICAgICB7CiAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0ID0g
MTA7CkBAIC0xNTU5MSw3ICsxNTY4NCwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3
RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAorI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxs
cHRyLCBtX291dC5sZXNzVGhhbihpbmRleCwgbV9vdXQuY29uc3RJbnQzMigwKSkpOworICAgICAg
ICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVh
cHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNvbXBhcmlzb24gb2YgaW5kZXggdG8gMCwgdGhlIGNoZWNrIGFnYWlu
c3QgbGVuZ3RoIGNhdGNoZXMgdGhhdCBjYXNlCiAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworI2VuZGlmCiAgICAgICAgIExWYWx1ZSBpbmRleFRv
Q2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNp
emUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVj
aywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyArMTU4
MzMsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+
ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBz
cGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4o
aW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1f
b3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjb21w
YXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVjayBhZ2FpbnN0IGxlbmd0aCBjYXRjaGVzIHRo
YXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5s
b2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4
dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAg
IGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQo
ZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3MzQxLDExIEBAIHByaXZhdGU6CiAg
ICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0gWyZdKExWYWx1ZSB0YWdnZWRQdHIpIHsKICNp
ZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2
ZSkgeworI2lmIFVTRShBRERSRVNTNjQpCisgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBt
X291dC5sb2FkNjQoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2Vs
c2UKICAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmlu
ZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIG5vbk5l
Z2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZEluc3RydWN0aW9u
OyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUo
TFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQzMihi
YXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2Us
IGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNlLCBmaWVsZCk7
IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZhbHVlIG5vdEVx
dWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJp
bnNpY0VtaXR0ZXIuY3BwCmluZGV4IDI1MjBmOGNjNDQ1Ni4uMTA5M2FjOTUzNTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Mywy
MyArODMsMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2lj
R2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRjaCAoaW50cmlu
c2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyNpZiBVU0Uo
TEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBz
dGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQz
Mih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3Ro
SW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rh
dGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQ
Uik7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQu
bHNoaWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwor
ICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BS
LCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4g
MSkgewotICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2Ug
VHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQz
Mi4KLSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNp
emUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hp
ZnQgaGVyZSBzaW5jZSBvbiBBRERSRVNTMzIgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBo
YXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQu
bHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwog
ICAgICAgICB9Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOwor
I2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEzMCw4ICsxMzksMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0
Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0
Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZh
bHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDRhNWMwODBjMDYwYy4uZmFjOGUwYWM2NjhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAg
c3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAg
ICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNh
blNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNl
dEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5
U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2Zp
bGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAt
MjM0MiwyMSArMjM0MCwyMiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQu
dHJ5R2V0QXNJbnQzMigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJ
bmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pT
U3RyaW5nKGJhc2VWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmco
YmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFz
ZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkp
KTsKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQ
cm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdl
dEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVj
dC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRz
ID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFy
cmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8
IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAo
b2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzCisgICAgICAgICAg
ICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+
cHVibGljTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMg
dG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJsZToKICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCiAgICAg
ICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0p
OwpAQCAtMjM3Miw4ICsyMzcxLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpID49IDApCi0gICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBi
YXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0
LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAg
ICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNDFjNzFiNjAw
NDRlLi5lNzZkYWRhMGQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsxNDksMTIgQEAKICNkZWZpbmUg
T0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDAKKyNlbmRpZgorCiAjaWYgQ1BV
KEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1Njgx
Mzc3YmI5ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3LDggKzEwNDcsOCBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwog
ICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChv
YmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQg
PSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRP
ZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0ICsxMTcwLDEzIEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBp
c1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIAogICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMklu
ZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2ts
eShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0s
IGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghb2JqZWN0LT50
cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUp
KQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAg
IExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjQyMWE3ZmE0MTBlLi42Y2RiZDhk
ZTNiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29u
c3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxl
OjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQKIAoraWYgTEFSR0Vf
VFlQRURfQVJSQVlTCisgICAgY29uc3QgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gY29uc3Rl
eHByIEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgKK2VuZAorCiBjb25z
dCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IGNvbnN0ZXhwciBtYXhGcmFtZUV4dGVu
dEZvclNsb3dQYXRoQ2FsbAogCiBpZiBYODZfNjQgb3IgWDg2XzY0X1dJTiBvciBBUk02NCBvciBB
Uk02NEUgb3IgUklTQ1Y2NApAQCAtMTMxMCw3ICsxMzE0LDggQEAgbWFjcm8gYXJyYXlQcm9maWxl
KG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCiAgICAgbG9h
ZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5k
CiAKLW1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlW
YWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzbG93UGF0aCkKKyMgTm90ZSB0aGF0IGluZGV4IGlz
IGFscmVhZHkgc2lnbi1leHRlbmRlZCB0byBiZSBhIHJlZ2lzdGVyIHdpZHRoLgorbWFjcm8gZ2V0
QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91
YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgc2xvd1BhdGgpCiAgICAgIyBGaXJzdCBs
ZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8g
c29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KICAgICBsb2FkYiBKU0NlbGw6Om1fdHlwZVtiYXNl
XSwgdDIKICAgICBzdWJpIEZpcnN0VHlwZWRBcnJheVR5cGUsIHQyCkBAIC0xMzIxLDExICsxMzI2
LDI2IEBAIG1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0
QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzCiAgICAgaWYgQVJNNjRFCiAgICAgICAgIGNv
bnN0IGxlbmd0aCA9IHQ2CiAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSB0NwotICAgICAgICBsb2Fk
aSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAotICAgICAgICBiaWFl
cSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMK
KyAgICAgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVu
Z3RoCisgICAgICAgICAgICBicWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAgICAgICBl
bHNlCisgICAgICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0s
IGxlbmd0aAorICAgICAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAg
ICAgZW5kCiAgICAgZWxzZQogICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50
aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNl
ZCBvbiBvdGhlciBwbGF0Zm9ybXMuCi0gICAgICAgIGJpYWVxIGluZGV4LCBKU0FycmF5QnVmZmVy
Vmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGlmIExBUkdFX1RZUEVEX0FS
UkFZUworICAgICAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0
aFtiYXNlXSwgc2xvd1BhdGgKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmlhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKKyAgICAgICAgZW5k
CisgICAgZW5kCisKKyAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgYnFiZXEgaW5k
ZXgsIFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCwgLnNtYWxsVHlwZWRBcnJheQorICAgICAgICBz
ZXRMYXJnZVR5cGVkQXJyYXkoKQorLnNtYWxsVHlwZWRBcnJheToKICAgICBlbmQKIAogICAgIGxv
YWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3RvcltiYXNlXSwgdDMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
aW5kZXggNTBkNWRiZGY2MDJhLi42NzhlYzY0YzY3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0x
NjY5LDcgKzE2NjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0
QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkK
IAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXko
dDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5
VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZh
bCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIG1hY3JvICgpIGVuZCwgLm9wR2V0QnlWYWxTbG93KQog
CiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0
X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDg0YjZlYWQzN2ZkLi40MDZiNjNmZjg2NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCkBAIC0xNzEzLDYgKzE3MTMsMTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAg
ICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisgICAg
bWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlT
CisgICAgICAgICAgICBzdG9yZWIgMSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGNyYXNoKCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAK
ICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3MjMsNyArMTczMSw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIHN4aTJxIHQx
LCB0MQorICAgIHN4aTJxIHQxLCB0MSAjIFRoaXMgc2lnbi1leHRlbnRpb24gbWFrZXMgdGhlIGJv
dW5kcy1jaGVja2luZyBpbiBnZXRCeVZhbFR5cGVkQXJyYXkgd29yayBldmVuIG9uIDRHQiBUeXBl
ZEFycmF5LgogCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBd
LCB0MywgbnVtYmVyVGFnKQogICAgIG1vdmUgVGFnTnVtYmVyLCBudW1iZXJUYWcKQEAgLTE3NjMs
NyArMTc3MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAu
b3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwg
dDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cp
CiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9n
ZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCmluZGV4IGM5YjhmMmE3MTkxZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8
U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAot
U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRl
c3RydWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNv
bnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVz
dHJ1Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpA
QCAtNjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRz
KEFycmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlz
KTsKIH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24m
JiBkZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAs
IG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lk
IEFycmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0K
IAotdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwg
c2l6ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXpl
ID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUg
LyBudW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsK
KyAgICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVz
Lmhhc092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
c2l6ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRp
b25TaXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXpl
SW5CeXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9j
YXRpb25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29t
ZXRoaW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1
ZmZlciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9j
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRh
VHlwZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6
ZUluQnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVu
dHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZQogICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRh
LCAwLCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7
CisgICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVz
dHJ1Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0K
QEAgLTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChB
cnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3Np
emVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVf
dCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVm
ZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICgh
YnVmZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVh
dGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVh
dGUoc291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYs
NyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250
ZW50cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8g
LSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQg
aW4gdGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBm
cm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRl
ZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNh
Z2U6OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRl
RnJvbUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2Fn
ZURlc3RydWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVu
Z3QKIC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9m
IHR5cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8g
ICBkaWZmZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZy
b20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0
ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0
cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRh
dGEgJiYgIUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAg
ICAgICBHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3
LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0
IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
Y29udGVudHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlh
bGl6ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRl
KG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQg
Ynl0ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVy
Q29udGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwg
MSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYs
MTcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwo
V1RGTW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShu
dW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5p
dGlhbGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5
QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwo
QXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVf
dCBieXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAg
IGF1dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRz
KSkpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAg
ICBpZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVt
Y3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1
cm4gYnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBj
b250ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kp
OwpAQCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZl
ckNvbnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFt
cFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBB
cnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdo
dCkKIHsKICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAt
MzAxLDkgKzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4
LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5z
aWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90
IEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVu
Z3RoID0gYnl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0g
Y3VycmVudExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBj
dXJyZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0
aENsYW1wZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2ln
bmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBj
b25zdAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6
IDA7CisgICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAg
ICAgYXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAg
IHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLmVhY2NhMmMy
MzNhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzMsMTMgKzMzLDIyIEBACiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAj
aW5jbHVkZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorc3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWlu
dDY0X3QpKTsKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFICgxdWxsIDw8IDMyKQorI2Vs
c2UKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQzMl90KSk7Cisv
LyBCZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNpemVfdCB0byBzdG9yZSB0aGUgc2l6ZSBpbiBieXRl
cyBvZiBhcnJheSBidWZmZXJzLCB3ZSBjYW5ub3Qgc3VwcG9ydCA0R0Igb24gMzItYml0IHBsYXRm
b3Jtcy4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9y
eSBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVz
LgogI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBj
bGFzcyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNjAsNyBAQCB1c2luZyBQYWNr
ZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNr
PHZvaWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAgIHZv
aWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0
ZXMpOyB9CkBAIC02MCwxNCArNjksMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9
IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBE
YXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24g
bV9kZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90IG1f
c2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5
QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250
ZW50cyYmKTsKQEAgLTc5LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5z
aWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAg
IAogICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApA
QCAtOTQsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9
OwogCi0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxv
Y2F0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlh
bGl6YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQg
dHJhbnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExNCwyOCBAQCBw
cml2YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7Cisg
ICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1Ymxp
YyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlC
dWZmZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJheUJ1
ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBi
eXRlTGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlu
bGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsKICAg
ICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5
QnVmZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBk
b3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVu
c2lnbmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVm
ZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25z
dDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigp
OwpAQCAtMTYxLDEyICsxNzAsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1
Y3RvcigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwg
dW5zaWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25z
dCB2b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVm
ZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJh
eUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJs
ZSBpbmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRv
dWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIHNpemVf
dCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBzaXpl
X3QgY2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7CiAKICAg
ICB2b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMjAxLDcgQEAgY29uc3Qg
dm9pZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRh
dGEoKTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6
ZV90IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250
ZW50cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxNCw3IEBAIGJvb2wgQXJyYXlCdWZm
ZXI6OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJ
bkJ5dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBzY2Fs
ZSB0aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1cm4g
c2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsK
KyAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAogdm9p
ZCBBcnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDczNzIyNzQ1MzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJh
eUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRl
T2Zmc2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9ieXRl
TGVuZ3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQog
ewotICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZz
ZXQpOworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zm
c2V0KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uMDk5OTU0Yjg2NTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkg
Y29uc3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5
dGVPZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFj
aGFibGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lz
RGV0YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2
ZXJpZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlm
eUJ5dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisg
ICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNl
dCAmIChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRT
aXplIC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVu
IHN1Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAg
ICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNp
emUpCisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFu
IEFycmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJS
YW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAg
IHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBzaXpl
X3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRlT2Zm
c2V0ID4gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5z
aWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6
ZTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRl
T2Zmc2V0KSAvIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwogICAgICAgICBpZiAo
bnVtRWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMgKzExMyw0OCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xv
YmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVm
ZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
Ynl0ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyos
IHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZm
ZXJWaWV3Kiwgc2l6ZV90IGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJ
bXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0
ZU9mZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGlu
ZSBib29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5n
dGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQp
OwogCi0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBz
aXplX3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxh
dGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQg
YXJyYXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsK
KyAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
cmFuZ2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2Yg
ZWxlbWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAvLyBvdXRwdXQgb2Zmc2V0IGlz
IGluIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmRO
dW1FbGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwKLSAgICAgICAg
dW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAg
ICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIHNpemVfdCBhcnJheUJ5dGVPZmZz
ZXQsCisgICAgICAgIHNpemVfdCAqb2Zmc2V0LAorICAgICAgICBzaXplX3QgKm51bUVsZW1lbnRz
KQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlC
eXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgc2l6ZV90IG1heE9mZnNldCA9IChzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVv
ZihUKTsKICAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKICAgICAgICAgICAgICpv
ZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0g
MDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJy
YXlCeXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0
ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCBy
ZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXpl
b2YoVCk7CisgICAgICAgIENoZWNrZWRTaXplIGFkanVzdGVkT2Zmc2V0ID0gKm9mZnNldDsKKyAg
ICAgICAgYWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAgICBhZGp1c3RlZE9mZnNl
dCArPSBhcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3RlZE9mZnNldC5oYXNPdmVy
Zmxvd2VkKCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5ieXRlTGVuZ3RoKCkp
CisgICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCk7CisgICAgICAg
IHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNl
dCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmlu
Z0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG1fYnl0ZU9m
ZnNldCA6IDMxOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdWludDY0X3QgbV9i
eXRlT2Zmc2V0IDogNjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNldCA6IDMxOwor
I2VuZGlmCiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9ieXRl
TGVuZ3RoOworICAgIFVDUFVSZWdpc3RlciBtX2J5dGVMZW5ndGg7CiAKICAgICB1c2luZyBCYXNl
QWRkcmVzcyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRy
PjsKICAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3Jh
Z2UsIHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1ZmZl
clZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNl
dCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXks
IHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9m
ZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAg
aWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0
aCgpLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAor
CiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygp
KTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwg
YXJyYXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlC
dWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJh
bmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBi
eXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8v
IE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRo
YW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zm
c2V0LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBk
YXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3
OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwg
c2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkK
LSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0g
ICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAg
ICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1T
bWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBi
YXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1l
bW1vdmUoZGVzdGluYXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBs
KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5
QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdl
Qnl0ZUxlbmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAg
IC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxl
clRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2Ug
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2Ug
KyBieXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGlu
dCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1
bnNpZ25lZCogbGVuZ3RoKQotewotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9
IGFycmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAg
aWYgKGVuZCA8IDApCi0gICAgICAgIGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDAp
Ci0gICAgICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4g
YXJyYXlTaXplKQotICAgICAgICBlbmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0
KQotICAgICAgICBlbmQgPSBzdGFydDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0
YXJ0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJW
aWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNw
cAppbmRleCA2ODgzYTE3YzQ3MmQuLmQzNjI0NTBhMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBz
dGF0aWMgdW5zaWduZWQgdmFsaWRhdGVBdG9taWNBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBKU0FycgogICAgICAgICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4
VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJhY2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVk
QXJyYXlWaWV3LT5sZW5ndGgoKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOwor
CiAgICAgaWYgKGFjY2Vzc0luZGV4ID49IHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBv
dXQgb2YgYm91bmRzIGZvciBhdG9taWMgYWNjZXNzLiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2
NGFmMi4uZmJjOTg0N2QyZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDIwICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0
YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVu
Z3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwg
Ynl0ZUxlbmd0aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwog
fQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3Ro
KCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICBy
ZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uMzQw
MjY1NDEwMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6
IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNy
ZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdl
dFR5cGUoKSBjb25zdCBmaW5hbApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJh
eUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFs
OwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zm
c2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdl
dChzaXplX3Qgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0
cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQg
KyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25l
ZCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAg
ICBUIHJlYWQoc2l6ZV90JiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMg
PSBudWxscHRyKQogICAgIHsKICAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8
VD4ob2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8
ICpzdGF0dXMpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUs
IGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0
KHNpemVfdCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMg
PSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYg
KG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0
YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5
dGVMZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGJlN2U2
YzA1MzRmYS4uNWJlODE2NWY3MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNCArMzMsMjQgQEAgbmFtZXNw
YWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGlj
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiB0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0
aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsg
fQogICAgIAotICAgIGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJy
YXksIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4qIGFycmF5LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNl
dEltcGwoYXJyYXksIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAg
ICAgfQogICAgIAotICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXRSYW5n
ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHNpemVf
dCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksCkBAIC01OCwzOSArNTgsMzkg
QEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWduZWQgb2Zmc2V0
LCBzaXplX3QgY291bnQpCisgICAgYm9vbCB6ZXJvUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGNvdW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIHplcm9SYW5nZUltcGwob2Zmc2V0ICogc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpLCBjb3VudCAqIHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgemVyb0ZpbGwoKSB7IHplcm9SYW5n
ZSgwLCBsZW5ndGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAg
IHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAotICAgIHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlIGl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAg
IHJldHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNpZ25l
ZCBpbmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0KHNpemVfdCBpbmRleCwg
ZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRl
eF0gPSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0KIAotICAgIHZv
aWQgc2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVl
KSBjb25zdAorICAgIHZvaWQgc2V0TmF0aXZlKHNpemVfdCBpbmRleCwgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5k
ZXhdID0gdmFsdWU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIGdl
dFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgc2l6ZV90
IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRSYW5nZUltcGwoCiAgICAgICAgICAg
ICByZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSwKQEAgLTk4LDE4ICs5OCwxMSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwogICAgIH0KIAotICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNp
emVfdCBjb3VudCkgY29uc3QKKyAgICBib29sIGNoZWNrSW5ib3VuZERhdGEoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGNvdW50KSBjb25zdAogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpcy0+bGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAg
ICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBv
dmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAg
ICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKG9mZnNldCwgY291bnQsIHRoaXMtPmxl
bmd0aCgpKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVk
QXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFk
YXB0b3I6OnR5cGVWYWx1ZTsKQEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJh
eUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFs
OwogCiBwcml2YXRlOgotICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKaW5kZXggYWU1YmRkOGM2YTMxLi5mMWE3NmRmZDNiYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpH
ZW5lcmljVHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IEFycmF5QnVm
ZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
YXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQpOwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgY29uc3QgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQpOwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcg
KzY1LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
CiAgICAgaWYgKCFidWZmZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0
ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVu
Z3RoKQogewogICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNy
ZWF0ZShsZW5ndGgpOwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwpAQCAtMTE4
LDI1ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnlDcmVhdGUoV1RGTW92
ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBz
dWJhcnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewot
ICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0
aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgQXJy
YXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAgQVNTRVJUKGJ1
ZmZlcik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVm
ZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiB0cnlDcmVh
dGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp3
cmFwKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4uM2Q4ZTQ3NDUwNjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyVmll
dzo6c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQz
Ml90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAg
ICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAg
LTU0LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25D
b250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsCisgICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNp
emUsCiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxs
cHRyKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlC
dWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0
byB1c2UgbW9yZSB0aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KElOVF9NQVgpIC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZFNpemUgc2l6ZSA9IGxlbmd0
aDsKKyAgICBzaXplICo9IGVsZW1lbnRTaXplOworICAgIGlmIChzaXplLmhhc092ZXJmbG93ZWQo
KSB8fCBzaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2ln
YWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3RoKTsKKwor
ICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQ
cmltaXRpdmUsIHNpemUudmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3RvcikKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBtZW1zZXQo
dmVjdG9yKCksIDAsIHNpemUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlB
bGxvY2F0ZWQoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUpOworICAg
IHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsKICAgICAK
ICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6ZVR5cGVk
QXJyYXk7CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZz
ZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBt
X2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoV2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0
LDcgKzExNCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25z
dHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4
dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVf
dCBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKQEAgLTIzOCw5
ICsyMzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNUeXBlIHR5cGUp
CiAgICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlwZV07CiB9CiAK
LXVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKK3NpemVfdCBK
U0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CisjaWYgQVNTRVJUX0VOQUJM
RUQKKyAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoKCk7CisgICAgcmVzdWx0ICo9
IGVsZW1lbnRTaXplKHR5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOworI2Vsc2UK
KyAgICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVyZmxvdyBpcyBhbHJlYWR5IGNoZWNrZWQgaW4gdGhl
IGNvbnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRkIHRoZSBleHRyYSBzYW5pdHkgY2hlY2sgd2hlbiBh
c3NlcnRzIGFyZSBlbmFibGVkLgogICAgIHJldHVybiBsZW5ndGgoKSAqIGVsZW1lbnRTaXplKHR5
cGUoKSk7CisjZW5kaWYKIH0KIAogQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93
RG93bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2Nyw3ICsyNzQsNyBAQCBBcnJheUJ1ZmZlciogSlNB
cnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQogICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7
CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CiAKICAgICBzd2l0
Y2ggKG1fbW9kZSkgewogICAgIGNhc2UgRmFzdFR5cGVkQXJyYXk6IHsKQEAgLTMxNSw4ICszMjIs
OCBAQCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlT
aGFyZWRJbXBsKCkKICAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZm
ZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgdW5z
aWduZWQgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzLT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVP
ZmZzZXQoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNo
ICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMjIEFy
cmF5VHlwZTogXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmgKaW5kZXggZGQwMWY3ZjgyYTUzLi4xNGZhNWJiYTVhMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTA4
LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZhc3RTaXplTGltaXQg
PSAxMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZhc3RTaXplTGltaXQgPSAxMDAw
OwogICAgIHVzaW5nIFZlY3RvclB0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0
aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAKICAgICBzdGF0aWMgdm9pZCogbnVsbFZlY3RvclB0
cigpCkBAIC0xMTcsMTAgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxsLnJh
d0JpdHMoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBzaXplT2YodWludDMyX3Qg
bGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkKKyAgICBzdGF0aWMgc2l6ZV90IHNpemVPZihz
aXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpIC0gMSkKLSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUp
IC0gMSk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1bHQgPSBsZW5ndGg7CisgICAgICAg
IHJlc3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRp
b25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSArMTM4LDI1
IEBAIHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSW5pdGlhbGl6YXRpb25N
b2RlIHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07CiAgICAgICAgIAotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWludDMy
X3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVy
b0ZpbGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZN
JiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUsIEluaXRp
YWxpemF0aW9uTW9kZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMg
b25seSBmb3IgY29uc3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVzZWQgYnkgdGhl
IEpJVCdzIHNsb3cgcGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUq
LCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0cnVjdGlvbkNv
bnRleHQoU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKICAgICAgICAg
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAg
ICAgICBWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAgICAgICBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgICAgIAogICAgICAgICBlbnVtIERh
dGFWaWV3VGFnIHsgRGF0YVZpZXcgfTsKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dCgKICAg
ICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpOworICAg
ICAgICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKTsK
ICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3Ry
dWN0dXJlOyB9CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9CiAgICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMy
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgc2l6ZV90IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2Rl
IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0
ZXJmbHkoKSBjb25zdCB7IHJldHVybiBtX2J1dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3
ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAg
ICAgICAgIHVzaW5nIFZlY3RvclR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2
b2lkLCB0YWdDYWdlZFB0cj47CiAgICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAg
IHVpbnQzMl90IG1fbGVuZ3RoOworICAgICAgICBzaXplX3QgbV9sZW5ndGg7CiAgICAgICAgIFR5
cGVkQXJyYXlNb2RlIG1fbW9kZTsKICAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAg
ICB9OwpAQCAtMTkwLDExICsxOTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQqIHZlY3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChsZW5ndGgoKSk7IH0KICAgICB2b2lk
KiB2ZWN0b3JXaXRob3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdl
dFVuc2FmZSgpOyB9CiAgICAgCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKTsKLSAg
ICBpbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgp
OworICAgIGlubGluZSBzaXplX3QgYnl0ZU9mZnNldCgpOworICAgIGlubGluZSBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwogCi0gICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLSAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
KCkgY29uc3Q7CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAgcHJvdGVjdGVkOgogICAgIEFycmF5QnVmZmVy
KiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7CiAKICAgICBWZWN0b3JQdHIgbV92ZWN0b3I7
Ci0gICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgIFR5cGVk
QXJyYXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKaW5kZXggMWQwNzJiNzFhY2I3
Li5kODViMzI4MzA3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCkBAIC05OSw3ICs5OSw3IEBAIGlubGlu
ZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0SW1wbCgpCiAgICAgcHRy
ZGlmZl90IGRlbHRhID0KICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih2ZWN0b3JXaXRo
b3V0UEFDVmFsaWRhdGlvbigpKSAtIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXItPmRhdGEo
KSk7CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVsdGEp
OworICAgIHNpemVfdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGRlbHRhKTsKICAgICBp
ZiAocmVxdWVzdGVyID09IE11dGF0b3IpCiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KHJlc3VsdCkgPT0gZGVsdGEpOwogICAgIGVsc2UgewpAQCAtMTEwLDE0ICsxMTAsMTQg
QEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZp
ZXc6OmJ5dGVPZmZzZXQoKQoraW5saW5lIHNpemVfdCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9m
ZnNldCgpCiB7Ci0gICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2lnbmVkPigp
OworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCBzaXplX3Q+KCk7CiB9CiAKLWlu
bGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNl
dENvbmN1cnJlbnRseSgpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEpTQXJyYXlCdWZm
ZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNl
dEltcGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+KCk7CisgICAg
cmV0dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90Pj4oKTsKIH0KIAogaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZm
ZXJWaWV3Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGIxZWE5ZGEwZmU0Yy4uZjZjNDU0M2Zl
MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
TWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
U3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9UcmlTdGF0ZS5oPgogCkBAIC0yOTgsNiArMjk5LDcgQEAgcHVibGljOgogICAgIGludDMy
X3QgdG9JbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvVUludDMy
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9JbmRleChKU0dsb2JhbE9i
amVjdCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3Q7CisgICAgc2l6ZV90IHRvVHlwZWRB
cnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsK
ICAgICBkb3VibGUgdG9MZW5ndGgoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmlu
ZGV4IDM0ZWEyMTQ2MGEwZC4uM2IzYTgwOTY5M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDE0ICs2OSw0NyBAQCBp
bmxpbmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJv
ck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQotICAgIGlmIChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CisK
KyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworCisgICAgaWYg
KGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBs
YXJnZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsKK30KKworaW5saW5lIHNpemVfdCBKU1ZhbHVl
Ojp0b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBj
aGFyKiBlcnJvck5hbWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3Vi
bGUgZCA9IHRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgMCk7CisgICAgaWYgKGQgPD0gLTEpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJp
bmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworCisgICAg
aWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSkpIHsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIEFsbCBvZiB0aGlzIG1vbnN0cm9zaXR5
IGlzIGp1c3QgdG8gZ2l2ZSB0aGUgY29ycmVjdCByZXN1bHQgb24gMTw8MzIuCisgICAgc2l6ZV90
IG91dHB1dE9mZnNldCA9IDA7CisgICAgZG91YmxlIGlucHV0T2Zmc2V0ID0gMDsKKyAgICBzaXpl
X3QgaW50MzJNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICBp
ZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oaW50MzJNYXgpKSB7CisgICAgICAgIG91dHB1dE9m
ZnNldCA9IGludDMyTWF4OworICAgICAgICBpbnB1dE9mZnNldCA9IGludDMyTWF4OworICAgIH0K
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG91dHB1dE9mZnNldCArIHN0YXRpY19jYXN0
PHNpemVfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQzo6dG9JbnQzMihkIC0gaW5wdXRPZmZz
ZXQpKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9y
aW5maW5pdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAK
aW5kZXggNmZhYjQ2NWRkM2I5Li5kZmQ2YTUxMWQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBKU0RhdGFWaWV3
OjpKU0RhdGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlC
dWZmZXIqIGJ1ZmZlcgogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
Ynl0ZUxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcwLDI1ICs3MCwyNSBAQCBKU0RhdGFWaWV3KiBKU0Rh
dGFWaWV3OjpjcmVhdGUoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNEYXRhVmlldyogSlNE
YXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9G
T1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRhVmlldyogSlNE
YXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitK
U0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0RhdGFWaWV3Ojpz
ZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QpCiB7
CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpT
VmFsdWUpCitib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90
LCBKU1ZhbHVlKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRl
eCAyYzc4NWU0NzYxMWEuLmE1ZTc4YzQ2OWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDE1ICs0NiwxNCBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgICAg
ICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6
ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKTsKICAgICAKICAgICAvLyBEdW1teSBt
ZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3b3JrOyB0aGVzZSBhcmUganVzdCBpbiBwbGFj
ZSB0bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3ZSBkbyBl
bHNld2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBK
U0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0
KiwgdW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXRJbmRleChKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3Jl
YXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5n
dGgpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHNp
emVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0SW5k
ZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUpOwogICAgIAogICAgIEFycmF5QnVm
ZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAg
ICAgQXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKaW5kZXggOTQ5
MDYyNDdlYTY1Li5lMGZiYzUyZjg3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDExICsxMzYsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZp
ZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0
ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJi
eXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxl
RW5kaWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hl
ZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3
Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7Cisg
ICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1l
bnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRT
aXplKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhv
ZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNl
dCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0lu
ZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXpl
ID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNp
Z25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBz
aXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAg
aWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7
CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMiku
dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVy
IGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRh
dGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5
dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3Mi
X3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4MWQuLmVhMWVmOWMxM2ZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZp
ZXcuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVGcm9tVmFs
dWUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBDbGFzc0lu
Zm8qIGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZvKCk7CiAvLyAgICAgU3RydWN0dXJlKiBTICAg
ICAvLyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRlcmZseSogQiAgICAgLy8gZnJvbSBKU09iamVj
dAogLy8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAgICAgdWludDMyX3QgTAorLy8gICAgIHNpemVf
dCBMCiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8vIFRoZXNlIGZpZWxkcyB0YWtlIHVw
IGEgdG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQorLy8gVGhl
c2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBvaW50ZXItd2lkdGggd29yZHMuIEZJ
WE1FOiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAvLwogLy8gQiBpcyB1c3VhbGx5IHVu
dXNlZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwgIm92ZXJmbG93IiBkYXRhIGZvcgpA
QCAtMTAzLDE0ICsxMDQsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKIAotICAg
IHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90
IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0
b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsg
fQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KICAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25z
dCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KSk7IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiB0eXBlZFZlY3Rv
cigpIGNvbnN0CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsKICAgICB9CiAK
LSAgICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBpbkJvdW5kcyhz
aXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAg
fQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nl
c3MgbWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xp
Z2h0IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkg
Y29uc3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShzaXplX3QgaSkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1
aWNrbHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpT
VmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkoc2l6ZV90IGks
IEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
ICYmIHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5Owog
ICAgIH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
IGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAg
ICAgICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClb
aV07CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkp
IGNvbnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVp
Y2tseUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1
ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoc2l6ZV90IGksIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVu
Z3RoKTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZv
aWQgc2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9O
YXRpdmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPih2YWx1ZSkpOwogICAgIH0K
ICAgICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVu
c2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAg
ICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRh
cHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVj
dCwganNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJv
bVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmpl
Y3QsIGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRU
eXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1Zh
bHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihq
c1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0
b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+
KGpzVmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsy
MDUsMTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NS
YW5nZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBj
YW5BY2Nlc3NSYW5nZVF1aWNrbHkoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNl
dCArIGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAg
ICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBp
c1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0K
ICAgICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBm
YWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0g
ICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCos
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAg
IC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQo
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2Jq
ZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5v
YnNlcnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQs
IEpTT2JqZWN0Kiwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUg
PSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRh
cHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5
cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDgg
KzMyMiw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFu
ZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdGhlckFkYXB0b3I+CiAgICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAg
ICAgICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8T3RoZXJBZGFwdG9yPiosCi0gICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90
IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAg
IHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8v
IFRoZSBFQ01BIDYgc3BlYyBzdGF0ZXMgdGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMg
c2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBF
bGVtZW50VHlwZSogYXJyYXkgPSB0eXBlZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2xlbmd0aDsgaSsrKQogICAgICAgICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlb
aV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmgKaW5kZXggZDI1ODQwNjdlODNmLi4zMzZmMWFlZTNmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIGlu
bGluZSBKU0FycmF5QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4K
LWlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
RW5jb2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHNp
emVfdCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGhPcHQpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSAwOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGxl
bmd0aE9wdCkKICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAg
ICBlbHNlIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAg
IC8vIC0gQSBwcmltaXRpdmUuIFRoaXMgY3JlYXRlcyBhIG5ldyB0eXBlZCBhcnJheSBvZiB0aGF0
IGxlbmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBpdC4KIAogICAgIGlmIChKU09iamVjdCogb2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBmaXJzdFZhbHVlKSkgewotICAgICAg
ICB1bnNpZ25lZCBsZW5ndGg7CisgICAgICAgIHNpemVfdCBsZW5ndGg7CiAgICAgICAgIEpTQXJy
YXlCdWZmZXIqIGN1c3RvbUJ1ZmZlciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKGlzVHlwZWRW
aWV3KG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkgewpAQCAt
MjUwLDcgKzI1MCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZmlyc3RWYWx1ZS50b0luZGV4
KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOworICAgIHNpemVfdCBsZW5ndGggPSBmaXJzdFZhbHVl
LnRvVHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCkpOwog
fQpAQCAtMjc1LDggKzI3NSw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICB9CiAKICAg
ICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwot
ICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVu
Z3RoID0gc3RkOjpudWxsb3B0OworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsKICAg
ICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGds
b2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODUsNyArMjg1LDcgQEAgQUxXQVlTX0lOTElO
RSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xv
YmFsT2JqZWN0KgogICAgICAgICAgICAgLy8gSWYgdGhlIGxlbmd0aCB2YWx1ZSBpcyBwcmVzZW50
IGJ1dCB1bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3NpbmcuCiAgICAgICAgICAgICBKU1ZhbHVl
IGxlbmd0aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICAgICAg
ICAgIGlmICghbGVuZ3RoVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgICAgIGxl
bmd0aCA9IGxlbmd0aFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVk
QXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3Ro
Iik7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9UeXBlZEFycmF5SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBl
RGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CiAgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUwMjM4NzkyZDEw
Li5hM2RkYzFmODM2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIKICNpbmNsdWRlICJU
eXBlRXJyb3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
aXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0
aCwgdmVjdG9yKTsKQEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFs
aXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
dW5zaWduZWQgbGVuZ3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3Ro
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05OSwxNyArMTAwLDE3IEBAIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlVW5pbml0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgc2l6ZV90IHNpemUgPSBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIEFTU0VSVChidWZmZXIpOwotICAgIGlmICghQXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgsIHNpemUpKSB7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVu
Z3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgZWxlbWVudFNpemUpKSB7CiAgICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0
ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZm
ZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIGVsZW1lbnRTaXpl
KSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkJ5dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNDUsNyArMTQ2LDcgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1OSw4ICsxNjAsOCBAQCBib29sIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKLSAgICB1bnNpZ25lZCBvdGhlck9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90
aGVyQWRhcHRvcj4qIG90aGVyLAorICAgIHNpemVfdCBvdGhlck9mZnNldCwgc2l6ZV90IGxlbmd0
aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjE4LDcgKzIxOSw3
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZp
Y1R5cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVmZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5nQnVm
ZmVyKCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUgJiYgdmVj
dG9yKCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAgICAgICB8fCB0eXBlID09IENvcHlUeXBlOjpM
ZWZ0VG9SaWdodCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBv
ZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAg
ICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSAr
IG90aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKICAgICAvLyBOb3cgd2Ug
ZWl0aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBmaXJzdCB3ZSB0cnkgdG8gY292ZXIgKDJCKS4K
ICAgICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSkgewotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IGxl
bmd0aDsgaS0tOykgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgK
ICAgICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZl
cnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2ts
eUFzTmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjM4LDExICsyMzksMTEgQEAg
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlw
ZSgKICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGludGVybWVkaWF0ZSB0cmFuc2ZlciBi
dWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZlY3Rvcjx0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
LCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5n
dGg7IGktLTspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAg
IHRyYW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRh
cHRvcj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShp
ICsgb3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBp
LS07KQorICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspCiAgICAgICAgIHNldEluZGV4
UXVpY2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsgaSwgdHJhbnNmZXJCdWZmZXJbaV0pOwogICAg
IAogICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0ICsyNTEsMTQgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnNldCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQs
IEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
LCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVf
dCBvZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBs
ZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGNvbnN0
IENsYXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNzSW5mbyh2bSk7CiAgICAgaWYgKGNpLT50eXBl
ZEFycmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6dHlwZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRo
ZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbWNweSBzaW5jZSB3ZSdyZSB0aGUgc2Ft
ZSB0eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1t
b3ZlIHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7
CiAgICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxlbmd0aCwgb3RoZXItPmxlbmd0aCgpKTsKICAg
ICAgICAgCkBAIC0zMTIsOSArMzEzLDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnNldCgKICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIHdvbid0IGV2ZXIgY2FsbCBvYmpl
Y3QtPmdldCgpIHdpdGggYW4gaW5kZXggb2YgVUlOVF9NQVggb3IgbW9yZQorICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bGVuZ3RoKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9iamVjdE9mZnNldCksIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7CiAgICAg
ICAgIC8vIFdlIGNvdWxkIG9wdGltaXplIHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9u
J3QuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9i
amVjdE9mZnNldCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBib29sIHN1Y2Nl
c3MgPSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVlKTsKICAgICAgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRjMGViZDFmNjE2NS4u
YTk3NDczNzNjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
QEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZh
bHVlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVByb2ZpbGU7CiBjbGFz
cyBFeGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9u
OwpAQCAtMjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIHB1
dEJ5SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogICAgIHsKICAgICAg
ICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKGNhblNldEluZGV4
UXVpY2tseShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAgc2V0SW5kZXhRdWlj
a2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRyeVNldEluZGV4UXVp
Y2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRo
aXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAg
IH0KIApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGNhbkdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OwotICAgIEpTVmFsdWUg
Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7CisgICAgSlNWYWx1
ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJheVByb2ZpbGUqID0g
bnVsbHB0cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWdu
ZWQgaSkgY29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKLSAgICBK
U1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorCisgICAgLy8gVXNl
cyB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlw
ZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikgY29uc3QK
ICAgICB7CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVy
Zmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBB
TExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2FuR2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDExLDM1ICs0MTEsNzMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0KGds
b2JhbE9iamVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JU
eXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lkIHNldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAgICAKLSAgICBib29s
IGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQg
c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiwgdW5zaWduZWQs
IEpTVmFsdWUpOworCisgICAgLy8gUmV0dXJuIHRydWUgdG8gaW5kaWNhdGUgc3VjY2VzcworICAg
IC8vIFVzZSB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxh
cmdlVHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CisgICAg
Ym9vbCB0cnlTZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5k
ZXhpbmdNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0g
ICAgICAgICAgICByZXR1cm4gY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2YWx1
ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShp
LCB2LCBhcnJheVByb2ZpbGUpOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRB
QkxFX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VC
TEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNf
SU5ERVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5H
X1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc0lu
dDMyKCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZU9yQ29udGlndW91
c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgICAg
IGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0
dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgdm0uaGVhcC53cml0
ZUJhcnJpZXIodGhpcywgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAg
ICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzTnVtYmVyKCkpIHsKKyAgICAg
ICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5k
ZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOworICAgICAgICAgICAg
aWYgKHZhbHVlICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29u
dGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gdmFsdWU7CisgICAgICAgICAgICBpZiAoaSA+
PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+
c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNl
IEFycmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9y
TGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2V0
SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAg
ICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVu
Z3RoKCkKLSAgICAgICAgICAgICAgICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1f
dmVjdG9yW2ldOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGlzQ29weU9uV3Jp
dGUoaW5kZXhpbmdNb2RlKCkpKQorICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5hcnJh
eVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCkt
Pm1fdmVjdG9yW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChp
c0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHko
Vk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2ZTFiYjFiNTlmMWUuLjVjZWU2Y2Y4
NzhhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpjYW5HZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgfQogfQogCi1p
bmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6Omdl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNkZWZpbmUgQ0FTRV9U
WVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDpcCi0g
ICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKS0+
Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJS
QVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKLSN1bmRl
ZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgaWYgKGkgPiBB
cnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFycmF5UHJvZmlsZSkK
KyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTsKKyNlbmRpZgogCi1pbmxpbmUgSlNWYWx1
ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25z
dAotewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQ
RShuYW1lKSBcCiAgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtcCkBAIC01MTIsNyArNTA2
LDUwIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5
KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiB9Ci0g
ICAgCisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3Jh
Z2VJbmRleGluZ1R5cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCit7CisgICAgQXJy
YXlTdG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOwor
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAg
IEpTVmFsdWUgb2xkID0geC5nZXQoKTsKKyAgICB4LnNldCh2bSwgdGhpcywgdik7CisgICAgaWYg
KCFvbGQpIHsKKyAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOworICAgICAg
ICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHN0b3JhZ2UtPnNldExl
bmd0aChpICsgMSk7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBKU09iamVjdDo6dHJ5U2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9m
aWxlKSBkbyB7IFwKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRB
cnJheU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZWxz
ZQorI2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHsgXAor
ICAgIFVOVVNFRF9QQVJBTShhcnJheVByb2ZpbGUpO1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNl
bmRpZgorI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAorICAgIGNhc2UgbmFt
ZSAjIyBBcnJheVR5cGUgOiB7IFwKKyAgICAgICAgYXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxK
UyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpO1wKKyAgICAgICAgaWYgKCF0eXBlZEFycmF5LT5j
YW5TZXRJbmRleFF1aWNrbHkoaSwgdikpXAorICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1wKKyAg
ICAgICAgdHlwZWRBcnJheS0+c2V0SW5kZXhRdWlja2x5KGksIHYpO1wKKyAgICAgICAgVVBEQVRF
X0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKTtcCisgICAgICAgIHJldHVybiB0cnVlO1wK
KyAgICB9CisgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVX
KENBU0VfVFlQRURfQVJSQVlfVFlQRSkKKyN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKKyN1
bmRlZiBVUERBVEVfQVJSQVlfUFJPRklMRQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRh
dGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuaAppbmRleCBjZTczMGYzYmY5NjUuLjA5MTllNzIxODZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtODk4LDggKzg5OCw4IEBA
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAgaWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsK
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2UpOwotICAgICAgICBpZiAo
b2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4UXVpY2tseShpbmRleCkpOworICAgICAgICBp
ZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpbmRleCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCiAgICAg
aWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmcoYmFzZSktPmNhbkdldEluZGV4KGluZGV4
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAppbmRleCBlOGRj
MWEzMGFlZGQuLmI3ZDhjOWZjZjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QYWdlQ291bnQuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKwogI2luY2x1ZGUgPGxpbWl0cy5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKQEAgLTk2LDcgKzk4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KCgxdWxsIDw8IDMyKSAvIHBhZ2VTaXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgLyBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFnZVNpemUpKTsKIAogICAgIHVpbnQzMl90IG1f
cGFnZUNvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggZTViN2NkNDY2MTg3Li5lNmFhN2EyMGViYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFy
Oi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAg
ICAgIE1hZGUgc29tZSBvZiBDaGVja2VkQXJpdGhtZXRpYyBjb25zdGV4cHIsIGFuZCBhZGRlZCBp
c1N1bVNtYWxsZXJUaGFuT3JFcXVhbCBzaW5jZSBpdCBpcyBhIGNvbW1vbmx5IHVzZWQgdGVzdCBp
biBBcnJheUJ1ZmZlciBhbmQgZWFzeSB0byBnZXQgd3JvbmcgaW4gdGVybXMgb2Ygb3ZlcmZsb3cu
CisKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaDoKKyAgICAgICAgKFdURjo6aXNJ
bkJvdW5kcyk6CisgICAgICAgIChXVEY6OmNvbnZlcnRTYWZlbHkpOgorICAgICAgICAoV1RGOjpp
c1N1bVNtYWxsZXJUaGFuT3JFcXVhbCk6CisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbm9uLUhBVkUoQ0ZO
RVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RSVVNURVZBTFVBVEUpIGNvZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oCmluZGV4IGZmMTU2NWYxMWRlZC4uZWZhYjRhZDNiYzlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9
IHNpemVvZihUYXJnZXQpID49IHNpemVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsKLSAg
ICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29u
c3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2ln
bmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2Ug
cHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RkOjpu
dW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKICAgICB9CiB9OwogdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQs
IFNvdXJjZSwgZmFsc2UsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhT
b3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBl
IGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBl
LgogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8PSB2
YWx1ZSAmJiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwpAQCAt
MTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNv
dXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFdoZW4gY29udmVydGluZyB2YWx1ZSB0byB1
bnNpZ25lZCBTb3VyY2UsIHZhbHVlIHdpbGwgYmVjb21lIGEgYmlnIHZhbHVlIGlmIHZhbHVlIGlz
IG5lZ2F0aXZlLgogICAgICAgICAvLyBDYXN0ZWQgdmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2VyIHRo
YW4gVGFyZ2V0OjptYXggYXMgU291cmNlIGlzIGJpZ2dlciB0aGFuIFRhcmdldC4KQEAgLTE2OCw3
ICsxNjgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQs
IFNvdXJjZSwgZmFsc2UsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMo
U291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCiAgICAgewogICAgICAgICAvLyBUaGUgdW5zaWduZWQgU291cmNlIHR5cGUgaGFzIGdy
ZWF0ZXIgcHJlY2lzaW9uIHRoYW4gdGhlIHRhcmdldCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3VyY2Ug
d2lsbCB3aWRlbi4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4o
c3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRy
dWUsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAg
Ly8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBi
b29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMo
U291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJl
Y2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2Vy
PFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1
ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAg
c3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIC8vIFRhcmdldCBpcyBzaWduZWQgd2l0aCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLiBJ
ZiBzdHJpY3RseSBncmVhdGVyLCBpdCBpcyBhbHdheXMgc2FmZS4KICAgICAgICAgaWYgKHNpemVv
ZihUYXJnZXQpID4gc2l6ZW9mKFNvdXJjZSkpCkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2Vy
PFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFs
c2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAg
c3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIC8vIFRhcmdldCBpcyB1bnNpZ25lZCB3aXRoIGdyZWF0ZXIgcHJlY2lzaW9uLgogICAgICAg
ICByZXR1cm4gdmFsdWUgPj0gMDsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFy
Z2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVlKTsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMg
aW5saW5lIGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQor
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5l
IGNvbnN0ZXhwciBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1
dCkKIHsKICAgICBpZiAoIWlzSW5Cb3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTk5Niw2ICs5OTYsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gQXJncz4gYm9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKICAgICByZXR1
cm4gY2hlY2tlZFByb2R1Y3Q8VD4oYXJncy4uLikuaGFzT3ZlcmZsb3dlZCgpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKFQgYSwgVCBiLCBU
IGJvdW5kKQoreworICAgIENoZWNrZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+IHN1bSA9IGE7CisgICAg
c3VtICs9IGI7CisgICAgcmV0dXJuICFzdW0uaGFzT3ZlcmZsb3dlZCgpICYmIHN1bS52YWx1ZSgp
IDw9IGJvdW5kOworfQorCiB9CiAKIHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsKQEAgLTEw
MTcsMyArMTAyNCw0IEBAIHVzaW5nIFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVzaW5nIFdU
Rjo6aXNJbkJvdW5kczsKIHVzaW5nIFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5nIFdURjo6
c3VtT3ZlcmZsb3dzOwordXNpbmcgV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVVzZS5oCmluZGV4IDljOWY4MGUzZmQxYi4uYjk0ZGJlODkxMDdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
VXNlLmgKQEAgLTI3LDYgKzI3LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisvLyBUaGlzIGlzIHRv
IGdldCBTSVpFX01BWCwgd2hpY2ggaW4gdHVybiBpcyB1c2VkIGZvciBVU0VfTEFSR0VfVFlQRURf
QVJSQVlTCisjaWZkZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDxjc3RkaW50PgorI2Vsc2UKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KKyNlbmRpZgorCiAjaWZuZGVmIFdURl9QTEFURk9STV9HVUFSRF9B
R0FJTlNUX0lORElSRUNUX0lOQ0xVU0lPTgogI2Vycm9yICJQbGVhc2UgI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCiAjZW5kaWYKQEAgLTE0
MSw2ICsxNDgsMTIgQEAKICNkZWZpbmUgVVNFX0pTVkFMVUUzMl82NCAxCiAjZW5kaWYKIAorI2lm
IFNJWkVfTUFYID09IFVJTlQ2NF9NQVgKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUyAx
CisjZWxzZQorI2RlZmluZSBVU0VfTEFSR0VfVFlQRURfQVJSQVlTIDAKKyNlbmRpZgorCiAjaWYg
VVNFKEpTVkFMVUU2NCkKIC8qIEZJWE1FOiBFbmFibGUgQklHSU5UMzIgb3B0aW1pemF0aW9uIGFn
YWluIGFmdGVyIHdlIGVuc3VyZSBTcGVlZG9tZXRlcjIgYW5kIEpldFN0cmVhbTIgcmVncmVzc2lv
bnMgYXJlIGZpeGVkLiAqLwogLyogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDc3NyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJjNmQxNWVkZDEzYy4uYmQ2ODVkM2E3ZTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8
cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0
R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1
MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2Ug
U3V6dWtpLgorCisgICAgICAgIFNvbWUgcGFydHMgb2YgV2ViQ29yZSB1c2UgVHlwZWRBcnJheXMs
IGFuZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBtYWRlIHRoZSBsZW5ndGgoKSBmdW5jdGlvbiBv
biB0eXBlZCBhcnJheXMgcmV0dXJuIFVDUFVSZWdpc3RlciBpbnN0ZWFkIG9mIHVpbnQzMl90Lgor
ICAgICAgICBNb3N0IGZpeGVzIHdlcmUgdHJpdmlhbCwgdGhlIG9ubHkgZXhjZXB0aW9uIGlzIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAsIHdoZXJlIEkgaGFkIHRvIGluY3JlbWVudCB0aGUgdmVy
c2lvbiBudW1iZXIsIGFzIEFycmF5QnVmZmVyIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgbm93IHdy
aXRlL3JlYWQgdGhlaXIgbGVuZ3RoIGluIGEgNjQtYml0IGZpZWxkIChhbmQgc2FtZSBmb3IgdGhl
IGJ5dGVPZmZzZXQgb2YgQXJyYXlCdWZmZXJWaWV3KS4KKworICAgICAgICBJIGFsc28gaGFkIHRv
IGFkZCBhIHRlc3QgaW4gUGl4ZWxCdWZmZXIuY3BwIHRoYXQgdGhlIHNpemUgb2YgdGhlIEFycmF5
QnVmZmVyIGl0IHdpbGwgdHJ5IHRvIGFsbG9jYXRlIGlzIDwgSU5UMzJfTUFYLgorICAgICAgICBP
dGhlcndpc2UsIHRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2VkYXRhLW92ZXJmbG93Lmh0bWwgd2hpY2ggY2hlY2tz
IHRoYXQgdmVyeSBsYXJnZSBpbWFnZXMgYXJlIHByb3Blcmx5IHJlamVjdGVkIHdpdGhvdXQgY3Jh
c2hpbmcsIHdvdWxkIHRpbWVvdXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUgY29k
ZSBpcyBhbHJlYWR5IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBJ
IGltcGxlbWVudGVkIG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlG
cm9tQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5l
bCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21h
aW5EYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJWaWV3
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEltYWdlQml0bWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlckltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlld0lt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZl
clZpZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorICAgICAg
ICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisKIDIwMjEtMTAtMTIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSB0
aGUgU2Nyb2xsaW5nVHJlZSB0cmFjayBub2RlcyB3aXRoIGFuaW1hdGVkIHNjcm9sbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5kZXggY2I3
ZTg0ZDQ1MzgzLi5iMThkOGZkNmEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIGRl
c3RpbmF0aW9uLAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZm
ZXJPZmZzZXQ7CisgICAgc2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsK
ICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3RpbmF0aW9uLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7
CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IGNoYW5uZWxEYXRhLT5kYXRhKCk7CkBAIC0y
MjYsNyArMjI2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5u
ZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBzb3VyY2UsIHVuc2lnbmUKICAgICBpZiAoYnVmZmVyT2Zm
c2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAgdW5zaWdu
ZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIHNpemVfdCBjb3VudCA9
IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihzb3VyY2Uu
Z2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gc291
cmNlLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCA2YzFjOTQ0MDIyZWQuLmQ1M2I5ZTY0NGViNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlz
ZXIuY3BwCkBAIC0xOTYsOCArMTk2LDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRl
RnJlcXVlbmN5RGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogICAgIGRvRkZUQW5h
bHlzaXNJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBsaW5lYXIgbWFn
bml0dWRlIHRvIHVuc2lnbmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5zaWduZWQgc291cmNlTGVu
Z3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6
Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVf
dCBzb3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7CisgICAgc2l6ZV90IGRl
c3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3Qg
bGVuZ3RoID0gc3RkOjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAg
aWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgY29uc3QgZG91YmxlIHJhbmdlU2NhbGVGYWN0b3Ig
PSBtX21heERlY2liZWxzID09IG1fbWluRGVjaWJlbHMgPyAxIDogMSAvIChtX21heERlY2liZWxz
IC0gbV9taW5EZWNpYmVscyk7CiAgICAgICAgIGNvbnN0IGRvdWJsZSBtaW5EZWNpYmVscyA9IG1f
bWluRGVjaWJlbHM7CkBAIC0yMjcsOCArMjI4LDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpn
ZXRGbG9hdFRpbWVEb21haW5EYXRhKEZsb2F0MzJBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIHVuc2lnbmVkIGZmdFNpemUg
PSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUs
IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0
aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlz
LT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3Rp
bmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5w
dXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYm
IG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRC
dWZmZXJHb29kKTsKQEAgLTI1MSw4ICsyNTMsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6Omdl
dEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+
ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5h
dGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0
aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6
ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkxl
bmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVy
R29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0
QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lucHV0QnVmZmVyR29v
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjE4MjIxZTM1YWE2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2FzbU1vZHVsZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1lhcnJGbGFncy5oPgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CkBAIC0zNDIsOCArMzQzLDkgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50VXNh
Z2VzKENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKICAqIFZlcnNpb24gNy4gYWRkZWQgc3Vw
cG9ydCBmb3IgRmlsZSdzIGxhc3RNb2RpZmllZCBhdHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDguIGFk
ZGVkIHN1cHBvcnQgZm9yIEltYWdlRGF0YSdzIGNvbG9yU3BhY2UgYXR0cmlidXRlLgogICogVmVy
c2lvbiA5LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZUJpdG1hcCBjb2xvciBzcGFjZS4KKyAqIFZl
cnNpb24gMTAuIGNoYW5nZWQgdGhlIGxlbmd0aCAoYW5kIG9mZnNldHMpIG9mIEFycmF5QnVmZmVy
cyAoYW5kIEFycmF5QnVmZmVyVmlld3MpIGZyb20gMzIgdG8gNjQgYml0cwogICovCi1zdGF0aWMg
Y29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSA5Oworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEN1cnJlbnRWZXJzaW9uID0gMTA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgVGVybWluYXRvclRh
ZyA9IDB4RkZGRkZGRkY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nUG9vbFRhZyA9IDB4
RkZGRkZGRkU7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9uSW5kZXhQcm9wZXJ0aWVzVGFnID0g
MHhGRkZGRkZGRDsKQEAgLTM5OSw3ICs0MDEsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBPYmplY3RSZWZlcmVuY2UK
ICAqICAgIHwgTWVzc2FnZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAg
fCBBcnJheUJ1ZmZlcgotICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3
U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4gKEFycmF5
QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQorICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJy
YXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQ2NF90PiA8Ynl0ZUxlbmd0aDp1aW50
NjRfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQogICogICAgfCBDcnlwdG9LZXlU
YWcgPHdyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXt3cmFwcGVkS2V5TGVu
Z3RofT4KICAqICAgIHwgRE9NUG9pbnQKICAqICAgIHwgRE9NUmVjdApAQCAtNDYzLDcgKzQ2NSw3
IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAw
MDA7CiAgKiAgICBPYmplY3RSZWZlcmVuY2VUYWcgPG9wSW5kZXg6SW5kZXhUeXBlPgogICoKICAq
IEFycmF5QnVmZmVyIDotCi0gKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQzMl90PiA8
Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgorICogICAgQXJyYXlCdWZmZXJUYWcgPGxlbmd0aDp1aW50
NjRfdD4gPGNvbnRlbnRzOmJ5dGV7bGVuZ3RofT4KICAqICAgIEFycmF5QnVmZmVyVHJhbnNmZXJU
YWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgU2hhcmVkQXJyYXlCdWZmZXJUYWcgPHZhbHVlOnVp
bnQzMl90PgogICoKQEAgLTk5OCw4ICsxMDAwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYXJyYXlCdWZm
ZXJWaWV3ID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyVmlldyh2bSwgb2JqKTsKLSAgICAg
ICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZU9mZnNl
dCgpKSk7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlclZp
ZXctPmJ5dGVMZW5ndGgoKSkpOworICAgICAgICB1aW50NjRfdCBieXRlT2Zmc2V0ID0gYXJyYXlC
dWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCk7CisgICAgICAgIHdyaXRlKGJ5dGVPZmZzZXQpOworICAg
ICAgICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCk7
CisgICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gYXJyYXlCdWZmZXJWaWV3LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwog
ICAgICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXph
dGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKQEAgLTExMzEsOCArMTEzNSwxMyBAQCBw
cml2YXRlOgogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGJ1ZmZlci0+cmVzb2x1
dGlvblNjYWxlKCkpKTsKICAgICAgICAgd3JpdGUoYnVmZmVyLT5jb2xvclNwYWNlKCkpOwogCi0g
ICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKSk7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIENoZWNr
ZWRVaW50MzIgYnl0ZUxlbmd0aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAg
IGlmIChieXRlTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgY29kZSA9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CisgICAgICAgIHdyaXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxl
bmd0aCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykK
QEAgLTEyNjMsOCArMTI3MiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdyaXRlKElt
YWdlRGF0YVRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7CiAgICAg
ICAgICAgICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0
YSgpLmRhdGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVj
a2VkVWludDMyIGRhdGFMZW5ndGggPSBkYXRhLT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGRhdGFMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB3cml0ZShkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5k
YXRhKCkuZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5j
b2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQpAQCAtMTMxMSw4ICsxMzI1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgd3JpdGUoQXJyYXlCdWZmZXJUYWcpOwotICAg
ICAgICAgICAgICAgIHdyaXRlKGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAg
ICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0
YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgdWludDY0
X3QgYnl0ZUxlbmd0aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgICAgICAg
ICAgd3JpdGUoYnl0ZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChv
YmotPmluaGVyaXRzPEpTQXJyYXlCdWZmZXJWaWV3Pih2bSkpIHsKQEAgLTE1MDIsNyArMTUxNyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsKICAg
ICB9CiAKLSAgICB2b2lkIHdyaXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQorICAgIHZvaWQgd3Jp
dGUodWludDY0X3QgaSkKICAgICB7CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVy
LCBpKTsKICAgICB9CkBAIC0yMzkxLDcgKzI0MDYsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWQodW5zaWduZWQgbG9uZyBsb25nJiBpKQor
ICAgIGJvb2wgcmVhZCh1aW50NjRfdCYgaSkKICAgICB7CiAgICAgICAgIHJldHVybiByZWFkTGl0
dGxlRW5kaWFuKGkpOwogICAgIH0KQEAgLTI1NTUsOSArMjU3MCwxMCBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlcihSZWZQ
dHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMZW5n
dGhUeXBlPgorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVySW1wbChSZWZQdHI8QXJyYXlCdWZmZXI+
JiBhcnJheUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aDsKKyAgICAgICAg
TGVuZ3RoVHlwZSBsZW5ndGg7CiAgICAgICAgIGlmICghcmVhZChsZW5ndGgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAobV9wdHIgKyBsZW5ndGggPiBtX2VuZCkKQEAg
LTI1NjksMTUgKzI1ODUsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlC
dWZmZXJWaWV3KQorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
IGFycmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAg
ICAgICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5QnVmZmVyKTsK
KyAgICAgICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlckltcGw8dWludDY0X3Q+KGFycmF5QnVmZmVy
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGVuZ3RoVHlwZT4KKyAgICBib29s
IHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsKFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3
KQogICAgIHsKICAgICAgICAgQXJyYXlCdWZmZXJWaWV3U3VidGFnIGFycmF5QnVmZmVyVmlld1N1
YnRhZzsKICAgICAgICAgaWYgKCFyZWFkQXJyYXlCdWZmZXJWaWV3U3VidGFnKGFycmF5QnVmZmVy
Vmlld1N1YnRhZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90
IGJ5dGVPZmZzZXQ7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZU9mZnNldDsKICAgICAgICAgaWYg
KCFyZWFkKGJ5dGVPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1
aW50MzJfdCBieXRlTGVuZ3RoOworICAgICAgICBMZW5ndGhUeXBlIGJ5dGVMZW5ndGg7CiAgICAg
ICAgIGlmICghcmVhZChieXRlTGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyT2JqID0gYXNPYmplY3QocmVhZFRlcm1pbmFsKCkp
OwpAQCAtMjU4Nyw3ICsyNjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgZWxlbWVu
dFNpemUgPSB0eXBlZEFycmF5RWxlbWVudFNpemUoYXJyYXlCdWZmZXJWaWV3U3VidGFnKTsKICAg
ICAgICAgaWYgKCFlbGVtZW50U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOworICAgICAgICBM
ZW5ndGhUeXBlIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYg
KGxlbmd0aCAqIGVsZW1lbnRTaXplICE9IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTI2MzQsNiArMjY1OCwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
fQogCisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlC
dWZmZXJWaWV3KQorICAgIHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAgICAg
ICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQzMl90Pih2bSwgYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICAgICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQ2NF90
Pih2bSwgYXJyYXlCdWZmZXJWaWV3KTsKKyAgICB9CisKICAgICBib29sIHJlYWQoVmVjdG9yPHVp
bnQ4X3Q+JiByZXN1bHQpCiAgICAgewogICAgICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7
CkBAIC0zMzQ1LDcgKzMzNzYsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGNvbG9yU3BhY2Ug
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBhcnJheUJ1ZmZlcjsKIAotICAgICAgICBpZiAoIXJlYWQoc2VyaWFsaXphdGlvblN0YXRl
KSB8fCAhcmVhZChsb2dpY2FsV2lkdGgpIHx8ICFyZWFkKGxvZ2ljYWxIZWlnaHQpIHx8ICFyZWFk
KHJlc29sdXRpb25TY2FsZSkgfHwgKG1fdmVyc2lvbiA+IDggJiYgIXJlYWQoY29sb3JTcGFjZSkp
IHx8ICFyZWFkQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpKSB7CisgICAgICAgIGlmICghcmVhZChz
ZXJpYWxpemF0aW9uU3RhdGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNh
bEhlaWdodCkgfHwgIXJlYWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAh
cmVhZChjb2xvclNwYWNlKSkgfHwgIXJlYWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5
QnVmZmVyKSkgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBmYjc1N2E0ZDc0ZjYuLmFmYzdjYzFlZjU3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgaWYgKGhhc0FycmF5KSB7CiAgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
LT5zaXplKCkpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmFycmF5QnVmZmVyQ29udGVudHMg
OiAqbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwg
YXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpOworICAgICAgICAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygp
KTsKICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlckNvbnRlbnRzLmRhdGEoKSksIGFycmF5QnVmZmVy
Q29udGVudHMuc2l6ZUluQnl0ZXMoKSwgMSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTksOSAr
MTk5LDEyIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICAgICAgYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAg
ICAgIHdoaWxlIChhcnJheUxlbmd0aC0tKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBidWZmZXJT
aXplOworICAgICAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6ZTsKICAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICBDaGVja2VkPFVDUFVSZWdpc3RlciwgUmVjb3JkT3ZlcmZsb3c+IGNo
ZWNrZWRCdWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGlmIChjaGVja2VkQnVm
ZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRv
Q29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMjEyLDcgKzIxNSw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
ICAgICAgICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVmZmVyKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+YXBwZW5kKHsgYnVmZmVyLCBidWZmZXJTaXplLCBB
cnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CisgICAgICAgICAg
ICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgY2hlY2tlZEJ1ZmZl
clNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSB9KTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi41NTllYmNjNDhjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNjgsNyArNjgsOSBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29yZTo6QmxvYiYgYmxvYikKIAogICAgIGF1dG8g
Ynl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwogICAgIGlmICghYnl0ZUxlbmd0aCkgewotICAgICAg
ICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSgwVSwgMSksIDAsIDApOworICAgICAg
ICAvLyBUaGUgY2FzdCBsb29rcyB3ZWlyZCwgYnV0IGlzIHJlcXVpcmVkIGZvciB0aGUgb3Zlcmxv
YWRpbmcgcmVzb2x1dGlvbiB0byBzdWNjZWVkLgorICAgICAgICAvLyBXaXRob3V0IGl0LCB0aGVy
ZSBpcyBhbiBhbWJpZ3VpdHkgd2hlcmUgQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKSBjb3VsZCBiZSBjYWxsZWQgaW5zdGVhZC4KKyAgICAg
ICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8c2l6ZV90Pigw
VSksIDEpLCAwLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIGJsb2JMb2Fk
ZXIgPSBtYWtlVW5pcXVlUmVmPEJsb2JMb2FkZXI+KFt0aGlzXShCbG9iTG9hZGVyJikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4
IDI1YmZmMTUzZDEyYy4uNzU0M2Y0NzVhMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03NCw2ICs3NCw4IEBAIHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZm
ZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUo
Zm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZChidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li5kODNlNGE0MDQwY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC02Myw3ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJv
b2wgY2hlY2tlZFJlYWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQs
IEVuZGlhbm5lc3MgZW5kaWFubmVzcykKICAgICB7CiAgICAgICAgIGJvb2wgcmVhZFN0YXR1cyA9
IGZhbHNlOwotICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KG9mZnNldCwg
ZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgc2l6ZV90
IGFjdHVhbE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVtcGxhdGUg
cmVhZDxUPihhY3R1YWxPZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0
YXR1cyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dWludDMyX3Q+KGFjdHVh
bE9mZnNldCkpOworICAgICAgICBvZmZzZXQgPSBhY3R1YWxPZmZzZXQ7CiAgICAgICAgIGlmICgh
cmVhZFN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>
<flag name="commit-queue"
          id="465516"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441315</attachid>
            <date>2021-10-14 17:45:58 -0700</date>
            <delta_ts>2021-10-15 01:06:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>272579</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzM4MGU3MjZjMjRkLi4zNzliYzNjYTY4MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBicmFu
Y2ggYXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZh
bCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQgTFZhbHVlIHR5cGUgdG8gc3RyaWN0SW50NTJUb0pTVmFs
dWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1h
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwppbmRl
eCBlYjQ4MDI3MWFhMmUuLmY4NjU4OTMzNmRjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRt
ZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVy
ZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVs
dCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNSBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9v
KG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKKyAgICBsZXQgbWF4
U2l6ZSA9IDB4MTAwMDA7CisgICAgewogICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3
MDAwKTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAwMCk7CiAgICAgICAgIHZh
ciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcikpOwogICAgICAgICBp
ZiAocmVzdWx0ICE9PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogMHgxMDAwIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwICsg
MSk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAo
ZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYg
KGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5Lmdyb3cgZXhw
ZWN0cyB0aGUgZ3Jvd24gc2l6ZSB0byBiZSBhIHZhbGlkIHBhZ2UgY291bnQiKQogICAgICAgICAg
ICAgdGhyb3cgZTsKICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjog
ZGlkIG5vdCB0aHJvdyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3cu
anMKaW5kZXggMTFhYTVlNWQyNTcxLi5kYmVmMDRkOTY1ZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13
YXNtLW1lbW9yeS1ncm93LmpzCkBAIC0xLDQgKzEsNSBAQAotLy9AIHNraXAgaWYgJG1lbW9yeUxp
bWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKIAog
ZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTkgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQogICAgICAgICBmb28ob2tBcnJh
eSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkgewotICAgICAgICB2YXIgbWVtb3J5
ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4aW11bTogMHg4
MDAwIH0pOwotICAgICAgICBtZW1vcnkuZ3JvdygweDcwMDApOworCisgICAgbGV0IG1heFNpemUg
PSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06IG1heFNpemUgfSk7CisgICAgICAgIG1l
bW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMCwgbWF4
aW11bTogbWF4U2l6ZSsxIH0pOworICAgICAgICBtZW1vcnkuZ3JvdyhtYXhTaXplICsgMSAtIDB4
MTAwMCk7CisgICAgICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1
ZmZlcikpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZS50b1N0cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhp
bXVtJyBwYWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAg
IH0KLQogICAgIGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVy
cm9yIjsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCmluZGV4IGQ4ZTdmYjY5YjRiYS4uODBm
ZjA2YjI2N2FkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5LmpzCkBAIC0xLDQgKzEsNSBAQAot
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9y
ICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikK
Ky8vQCBydW5EZWZhdWx0KCkKIAogZnVuY3Rpb24gdGVzdCgpIHsKIApAQCAtMjQsMTcgKzI1LDIx
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQogICAgICAgICBmb28ob2tBcnJheSk7CiAKLSAgICB2YXIgb2sgPSBmYWxzZTsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoeyBpbml0aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXIpKTsK
KyAgICBsZXQgbWF4U2l6ZSA9IDB4MTAwMDA7CisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
Zm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBtYXhT
aXplLCBtYXhpbXVtOiBtYXhTaXplIH0pLmJ1ZmZlcikpOwogICAgICAgICBpZiAocmVzdWx0ICE9
PSB2b2lkIDApCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OworICAgIH0KKworICAgIHZhciBvayA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBmb28obmV3IFVpbnQ4QXJyYXkobmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7IGluaXRpYWw6IG1heFNpemUrMSwgbWF4aW11bTogbWF4U2l6ZSsxIH0pLmJ1ZmZlcikpOwog
ICAgICAgICBvayA9IHRydWU7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoZS50b1N0
cmluZygpICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICAgICAgaWYgKGUudG9T
dHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICB0aHJvdyBlOwogICAgIH0KLQogICAg
IGlmIChvaykKICAgICAgICAgdGhyb3cgIkVycm9yOiBkaWQgbm90IHRocm93IGVycm9yIjsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1ZWExNmQ4NWZjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktYWx3YXlzLWxhcmdlLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICgkYXJjaGl0ZWN0dXJlICE9ICJh
cm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0IikKKy8vQCBydW5EZWZhdWx0KCkKKwor
ZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0
aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0aW9uIGdldEJ5VmFsKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUoZ2V0QnlW
YWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJh
eVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHB1dEJ5VmFsKTsKKworbGV0IG9uZUdpZ2Eg
PSAxMDI0ICogMTAyNCAqIDEwMjQ7CisKK2Z1bmN0aW9uIHRlc3QoYXJyYXksIGFjdHVhbExlbmd0
aCwgc3RyaW5nKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgdmFyIGwgPSBnZXRBcnJheUxlbmd0aChhcnJheSk7CisgICAgICAgIGlmIChsICE9IGFj
dHVhbExlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICgiV3JvbmcgYXJyYXkgbGVuZ3RoOiAiICsg
bCArICIgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgIiArIGFjdHVhbExlbmd0aCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKKyAgICAgICAgdmFyIGluZGV4ID0gKDIgKiBvbmVHaWdhKSArIGk7Cisg
ICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0
ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmlu
Zyk7CisgICAgfQorfQorCitsZXQgdGhyZWVHaWdzID0gMyAqIG9uZUdpZ2E7CitsZXQgZm91ckdp
Z3MgPSA0ICogb25lR2lnYTsKKwordGVzdChuZXcgSW50OEFycmF5KHRocmVlR2lncyksIHRocmVl
R2lncywgIkludDhBcnJheS8zR0IiKTsKK3Rlc3QobmV3IFVpbnQ4QXJyYXkoZm91ckdpZ3MpLCBm
b3VyR2lncywgIlVpbnQ4QXJyYXkvNEdCIik7Cit0ZXN0KG5ldyBVaW50OENsYW1wZWRBcnJheSh0
aHJlZUdpZ3MpLCB0aHJlZUdpZ3MsICJVaW50OENsYW1wZWRBcnJheS8zR0IiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGVlZWRkMDE0ZDA0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpAQCAtMCww
ICsxLDQ4IEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGkgJSAxMDA7CisgICAgICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOwor
ICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVl
ICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHZhciBpbmRleCA9IDIgKiBvbmVHaWdhICsgMTA7Cisg
ICAgcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2YWx1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGdldEJ5
VmFsKGFycmF5LCBpbmRleCk7CisgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhy
b3cgKCJFeHBlY3RlZCAiICsgdmFsdWUgKyAiIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50dWFsbHktb29iLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTUzOWI1MGQyZTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxs
eS1vb2IuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3Ig
KCRhcmNoaXRlY3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQor
Ly9AIHJ1bkRlZmF1bHQoKQorZnVuY3Rpb24gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5Lmxlbmd0aDsKK30KK25vSW5saW5lKGdldEFycmF5TGVuZ3RoKTsKK2Z1bmN0
aW9uIGdldEJ5VmFsKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUoZ2V0QnlWYWwpOworZnVuY3Rpb24gcHV0QnlWYWwoYXJyYXksIGluZGV4LCB2
YWx1ZSkKK3sKKyAgICAndXNlIHN0cmljdCc7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9
Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVHaWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0
OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxMZW5ndGgsIHN0cmluZykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBsID0gZ2V0QXJy
YXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAhPSBhY3R1YWxMZW5ndGgpCisgICAgICAg
ICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDogIiArIGwgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAg
ICAgIHZhciBpbmRleCA9IGk7CisgICAgICAgIHZhciB2YWx1ZSA9IGkgJSAxMDA7CisgICAgICAg
IHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0
QnlWYWwoYXJyYXksIGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQg
KyAiIGluIGNhc2UgIiArIHN0cmluZyk7CisgICAgfQorICAgIHZhciB2YWx1ZSA9IDQyOworICAg
IHZhciBpbmRleCA9IGFjdHVhbExlbmd0aCArIDEwOworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBnZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAg
IGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAoIkluIG91dC1vZi1ib3Vu
ZHMgY2FzZSwgZXhwZWN0ZWQgdW5kZWZpbmVkIGJ1dCBnb3QgIiArIHJlc3VsdCArICIgaW4gY2Fz
ZSAiICsgc3RyaW5nKTsKK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10
aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpp
bmRleCA3N2Q1MGMzNTBiNDYuLmVkMGU3YWYwOTEzYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVS
X1NJWkUtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0
ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS0yLmpzCkBAIC03NiwxMyArNzYsMTMg
QEAgY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewogdmFyIGV4Y2VwdGlvbjsKIHRyeSB7CiAgICAg
dmFyIG1vZHVsZSA9IG5ldyBXYXNtTW9kdWxlQnVpbGRlcigpOwotICAgIG1vZHVsZS5hZGRNZW1v
cnkoMzI3NjgpOworICAgIG1vZHVsZS5hZGRNZW1vcnkoKDIqKjE2KSArIDEpOwogICAgIG1vZHVs
ZS5pbnN0YW50aWF0ZSgpOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAK
LWlmIChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKSB7CitpZiAoZXhj
ZXB0aW9uICE9ICJDb21waWxlRXJyb3I6IFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTU6IE1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiA2NTUzNyBpcyBpbnZh
bGlkIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMudG9CdWZmZXIoKSkn
KSIpIHsKICAgICBwcmludChleGNlcHRpb24pOwogICAgIHRocm93ICJGQUlMRUQiOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUt
dGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMgYi9KU1Rlc3RzL3dhc20vcmVncmVzcy93YXNt
LW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qcwppbmRl
eCBiYTYyZDkxNDc2YWEuLjAxZjA2ZDJmNDk3NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3Jl
Z3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJ
WkUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMKQEAgLTEsMTAgKzEsMTAgQEAKIHZhciBl
eGNlcHRpb247CiAKIHRyeSB7Ci0gICAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IDB4ODAwMCwgbWF4aW11bTogMHg4MDAwIH0pLmJ1ZmZlcjsKKyAgICBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwMSwgbWF4aW11bTogMHgxMDAwMSB9KS5idWZmZXI7CiB9
IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KIAotaWYgKGV4Y2VwdGlvbiAhPSAi
UmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCi0gICAgdGhyb3cgIkZBSUxFRCI7CitpZiAoZXhj
ZXB0aW9uICE9ICJSYW5nZUVycm9yOiBXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2Ug
Y291bnQgaXMgdG9vIGxhcmdlIikKKyAgICB0aHJvdyAiRkFJTEVELCBleGNlcHRpb24gd2FzOiAi
ICsgZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZGU0Yjk1NDQzNC4uNzNmYmU1NThkN2Y5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFJlYmFzZWxpbmVkIHRocmVlIGZvbGxvd2luZyB0ZXN0cyBhcyBkaWZmZXJlbnQgb3Ig
ZmV3ZXIgZXJyb3IgbWVzc2FnZXMgYXBwZWFyIG9uIHRoZSBjb25zb2xlLgorICAgICAgICBBbHNv
IGNoYW5nZWQgY3VycmVudFZlcnNpb24gaW4gc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBm
cm9tIDkgdG8gMTAuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWludmFsaWQtcmVzdWx0LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisgICAgICAgICogd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0xMiAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRob3V0LWlu
dGVyYWN0aW9uLnB5IGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYx
N2FkLi44N2JjYzQ0OTJjMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9z
ZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFn
ZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5
PgogICAgICAgICA8c2NyaXB0PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25z
dCBjdXJyZW50VmVyc2lvbiA9IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVy
IGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1
ZmZlci1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRj
NS4uNWI4ZjM2NjU5Y2IzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1
Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUg
b2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYg
aXQgZG9lcyBub3QgY3Jhc2guCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1s
ZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5k
MDczNjAwMTQzMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0
IGludGVybmFsIEF1ZGlvQnVmZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9m
IDQ0MDAwIGFuZCBhIGxlbmd0aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVu
Z3RoIHJldHVybmVkIGJ5IE9mZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8g
Y29uc3RydWN0IHRoZSByZW5kZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwYWM3NWM5NzQ3OWQuLjc1OTNmYmE5ZTEy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTEz
ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cg
V0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1B
WF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkg
dGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0
R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBs
ZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BVUmVnaXN0
ZXIuCisgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkg
aW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNp
emUuCisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
cywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2
ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIg
YW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBH
ZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIg
cmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBo
YWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUgREZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisg
ICAgICAgIC0gSW4gdHVybnMsIEkgaGFkIHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2Ug
Q2hlY2tJbkJvdW5kcyBjb3VsZCBub3QgYWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIKKyAgICAgICAgLSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9u
cyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hY
WCB0byBhY2NlcHQgbm9uLUludDMyIGluZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50
OENsYW1wZWR9QXJyYXksIGEgbWF4aW11bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAy
Qi4KKyAgICAgICAgLSBJIGFkZGVkIGEgIm1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJy
YXlQcm9maWxlL1VubGlua2VkQXJyYXlQcm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdo
ZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBpbmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3Bl
Y3VsYXRpb24gYW5kIHNwZWNpYWxpemF0aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwu
CisgICAgICAgICAgICBJIHRoZW4gdXBkYXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBi
eSB0aGUgc2xvdyBwYXRocyB0byBjb3JyZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9y
dHVuYXRlbHkgSSByYW4gb3V0IG9mIHRpbWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3Vw
ZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMuCisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBo
YXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBs
YXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50Cisg
ICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJh
dGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1vcnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcg
bGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwg
Zm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRv
bWljc1hYWAorCisgICAgICAgIFRoZSBjdXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdp
bGwganVzdCBoYXZlIGRyZWFkZnVsIHBlcmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNl
cyA+MkIgaW4gYSB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3Ro
ZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlzIHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVm
aW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5
IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxscHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhp
cyBldmVuIHdoZW4gbGVuZ3RoIGlzIDApCisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0
aXZlIGFuZCBlcnJvci1wcm9uZSBib3VuZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hpY2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNl
IENoZWNrZWRBcml0aG1ldGljIGZhY2lsaXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgor
ICAgICAgICAtIEZpeGVkIGEgdmFyaWV0eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAt
IEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFk
eSBzdXBwb3J0IGZvciB0aGUgc2FtZSBidXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0g
TWFkZSB2YXJpb3VzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFz
IHBhcnQgb2YgdGhlIHByZXZpb3VzIHBvaW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFzSW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1QdHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQ6OlRydXN0ZWRJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OkltbTY0OjpJbW02NCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6Oklt
bTY0Ojphc1RydXN0ZWRJbW02NCBjb25zdCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmNhbkJsaW5kKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NEU6OnVudGFnQXJyYXlQdHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5CbGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2Ny
YXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1
YXJkKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZEFycmF5UHJvZmlsZTo6VW5saW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJy
YXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6QXJyYXlNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhU
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NB
bmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnNwZWN1bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5TW9kZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGlsZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNBcnJheU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bmV3VHlwZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6
REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
TG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0
cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlk
YXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRB
cnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmlj
dEVxKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmlu
c2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpjbGFtcEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5C
eXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlND
OjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxp
Z25tZW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxl
bmd0aCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6Onplcm9SYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNh
bGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAg
KEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6
CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
OgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dE
b3duQW5kV2FzdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9z
c2libHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6
Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjp0b0luZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFy
cmF5SW5kZXggY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlHZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNhblNldEluZGV4UXVpY2tseSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aElu
ZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2lu
IG1pZ3JhdGlvbiBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2FhMGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUsOSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFz
cyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlh
dGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1l
bW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3Rl
ZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRy
dXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1Q
dHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVk
SW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51
bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpu
dWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0
ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3Rl
ZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRw
dHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Piht
X3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29u
c3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBw
dWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAg
ewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6
IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRy
dXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
Y29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7
IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShw
dHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBA
QCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsK
LSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQg
Y29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
Mih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAg
IGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25z
dGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
MihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0
ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAg
ICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVi
bGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2Np
ZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBz
dHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgp
IHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAg
ICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBt
X3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02
NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJ
bW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRw
dHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6
CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAg
ICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1
ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIp
CisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAg
ICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5k
aWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFz
VHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAg
IC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1
Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0
YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBE
YXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFiYmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2
ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hN
dWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
OjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJh
c2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7
CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUo
QVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0
KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0K
IAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBu
ZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdp
c3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAv
LyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBp
dCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3
aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAg
IGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAg
IGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQp
LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJl
Z2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFj
ZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50
ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAg
ICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwg
cmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAv
LyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThm
ZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJN
NjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAg
IHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZm
ZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAg
IH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIu
LjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQ
dHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRh
dGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRk
cmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7
CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAg
ICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxp
ZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6
IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0
LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBl
NjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkg
KzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAg
ICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0
aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9y
U3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZm
OyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0
aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzOTc5OTJhM2E3NTAuLjEzMjUwZWM0ODQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2
LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAg
ICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6
CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRl
cjoKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2
YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAgLy8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5
cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBwcm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQg
YXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEy
ICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAK
ICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdo
LmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkp
OwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQu
c2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVp
dGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0
YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92
ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAg
c3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFi
b3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAg
ICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Io
c2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxv
Y2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTExOTcsOSArMTIwMywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlBy
ZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVn
aXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BS
KTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BS
KTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7
CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5
cGUpKSB7CkBAIC0xNTk1LDkgKzE2MDUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdp
dGhHdWFyZCgKICAgICAgICAgICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRP
ZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24g
ZnVuY3Rpb24uCi0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNo
MzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7
CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hH
UFIpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGgg
aXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0
aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJh
bmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxl
bmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5i
cmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NP
Zkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtl
RGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTE2MDUsOSArMTYy
MCwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxs
b2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0
LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNl
KTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRk
cmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRk
cmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
VmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFu
ZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3Jh
dGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAg
ICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggNjkxNjc5NDg0M2IwLi4zNmZlYjE0NGJhZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRm
aWVsZCB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRo
YXQgd2UgaGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNl
IHRoZSBsb3dlciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5n
IHRoZSBiaXRzIDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRh
a2luZyB0aGUgYml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9k
ZXM7CiAKIC8vIFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAo
MCAtIDE2LCAyMSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUsMTUgQEAgcHVibGljOgogICAgICAg
ICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAgICAgfQotICAg
IAorCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCk7CisgICAgdm9pZCBzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXk7IH0KKyNlbHNlCisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
ICAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJu
ICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJh
eU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRk
cmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAt
MjQ0LDYgKzI1Miw5IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVj
dHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRo
aXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBj
YXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVw
ZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkg
anVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRo
aXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMu
CiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7IGZhbHNlIH07CisjZW5k
aWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDogMTsKICAgICBib29s
IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29sIG1fZGlkUGVyZm9y
bUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY0LDEzIEBAIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmls
ZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAg
ZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1fdXNlc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAg
ICAgLCBtX21heUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorI2VuZGlmCisgICAgeworICAgIH0K
IAogICAgIHZvaWQgdXBkYXRlKEFycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlKQogICAgIHsKQEAg
LTI4MCw2ICsyOTcsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1fdXNl
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJyYXlQcm9maWxlLm1fdXNlc09y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOworCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAgICAgICAgICBhcnJheVByb2Zp
bGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlw
ZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5MCw3ICszMTQsMTEgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRB
cnJheSA6IDE7CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5
UHJvZmlsZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IDJiMmY1ZTAzMDE5Zi4uYTFjZDY5OTQ0YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0z
NDYzLDcgKzM0NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJy
YXlMZW5ndGg6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRy
eUdldEZvbGRhYmxlVmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAg
aWYgKHZpZXcgJiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcg
PSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcp
IHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldDogewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0
Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBp
ZiAodmlldykgewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNl
dCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRl
T2Zmc2V0KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldCA9
IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zm
c2V0ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2
aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAg
ICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAt
NDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUg
Q2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0
IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
ICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1
MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICsz
MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5j
aGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBu
b3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAg
ICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAg
ICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5
YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkp
OwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAg
aWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgp
KQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAg
ICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3Qg
YmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDgg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRB
cnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVz
ZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3Qg
R2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkg
ewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNi
Li5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24g
YWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNw
ZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lv
biA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAg
ICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNz
LCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1
LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0
aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5
OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5
OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5
TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNw
ZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAg
IHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJy
YXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNw
ZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAg
ICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlC
ZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYz
LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJy
YXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247
CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRl
cy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3Bl
Y3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lv
biBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNp
b24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlv
bik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5h
c0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3Jk
KCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5
cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxh
cmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9u
KEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJz
aW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5
Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VU
eXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3Mo
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZl
cnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFy
cmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFy
Z2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29u
dmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJn
ZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5k
U3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
cywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRp
b247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxh
dGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAg
IH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmls
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxl
LCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAg
ICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3Jl
VG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBi
b29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlD
bGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9m
aWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMg
PSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0g
ICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNw
ZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBB
cnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCks
IHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAg
QXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlv
bigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJv
b2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2Vy
KTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJl
TGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJh
eSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51
c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAg
ICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAg
JiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBj
b252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVy
c2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5
cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3
OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwog
ICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29u
dmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAg
ICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBl
ZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7
CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLmEwMGM4NTM3MDEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgw
NywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxU
YXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVy
YW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50
JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogeworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljX2Fzc2VydChl
bmFibGVJbnQ1MigpKTsKKyNlbmRpZgorCiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygp
KSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBi
b29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7
CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQo
KS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4MjIs
MjYgKzM4MzEsMzAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVy
KE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VS
VChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBO
b2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5
TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAg
ICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgTm9kZSog
bGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CiAgICAgICAgIC8vIE91ciBBcnJheU1v
ZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8g
ZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAg
YWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAgICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAg
ICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1
c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8g
dGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3Rh
bnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFy
aXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fu
bm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEg
Ynl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUg
PSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNp
YzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAh
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFu
dC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdl
VHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAg
ICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9
KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcElu
Zm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUp
KTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAg
ICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUs
IEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7
CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAh
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGU7CkBAIC0zODcxLDcgKzM4OTAsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwog
ICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAg
IH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyID8gR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIDogR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3As
IE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlz
Tm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNmZGU5Nzc5Li45YWQ1YzI3MDIwZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYg
KzE1Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0
IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRv
ckhhc093blByb3BlcnR5OgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBj
YXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0yMzksNiArMjQw
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFRvQm9vbGVhbjoKICAgICBj
YXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJ
bkJvdW5kc0ludDUyOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAg
ICAgY2FzZSBJbnQ1MlJlcDoKQEAgLTEzMzcsNiArMTMzOSwxMSBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9j
LCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAg
cmV0dXJuOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAg
ICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJh
eUJ5dGVPZmZzZXRJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9k
ZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsK
ICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2Fz
ZSBBcnJheVVzZToKQEAgLTE0NDQsNiArMTQ1MSwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVG
dQogICAgICAgICB9CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MjogeworICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICBy
ZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlMZW5n
dGhJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewog
ICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOwogICAgICAgICBzd2l0
Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAppbmRl
eCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBib29sIHZhbGlkYXRpb25FbmFibGVk
KCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBlbmFibGVJbnQ1MigpCitpbmxpbmUgYm9vbCBj
b25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCmluZGV4IGI4ODI1YWNhZTM0ZS4uZmExN2JmMTE0MTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcApAQCAtMzg3LDYgKzM4Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIENoZWNr
SW5Cb3VuZHNJbnQ1MjoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5Ny4uNDAyODRjZmEyMmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAg
ICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CkBAIC0xOTcsMTAgKzE5OCwx
MiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRH
ZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVu
Z3RoOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2lu
dEF0OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBj
YXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGUxYjkzZWVlNmNhLi41NjZmNTM5
ZGUxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEwNDMsNiArMTA0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAg
ICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAg
ICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAg
JiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBP
dmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xMDczLDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBE
b24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZlIG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2Rl
LgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXRSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkg
dG8gZG8gdGhpcy4uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBh
IGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IEVudW1lcmF0b3JHZXRCeVZhbCkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhUeXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMzLDYgKzExMzQsMTggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5nVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkludDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6
CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6VWludDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFy
cmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDE2QXJyYXk6CisgICAgICAgICAgICBj
YXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJB
cnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAxKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpKTsKQEAgLTExODQsNiArMTE5Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRp
b24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMo
KQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkK
KyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBl
ZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBO
b2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xNzE3LDEyICsx
NzMxLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFy
cmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMy
KCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2Rl
LT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtMjE0OSw2ICsyMTY3LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUo
bV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1
bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUu
aXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUo
YXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQx
KCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6
IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dDogewogICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4Miw2ICsyMjE3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEFzc2VydEluQm91
bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAg
IGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CkBAIC00MDk2
LDE0ICs0MTMyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGls
ZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRB
cnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1v
ZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAg
IHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDgg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBp
cyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcg
Y29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhl
ciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3
aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQg
aWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGlu
IG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBt
YXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cg
bWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0
aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2Vz
IG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlz
IGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1h
eSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRleCAyYmI5ZDRiZWE4MDAuLjA2NjFl
NWI4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5
dGVPZmZzZXRMb2MiKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0
SW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3Ro
SW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUxlbmd0aEludDUyTG9jIik7
CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgUHJvdG90eXBlTG9jOgogICAgICAgICBvdXQu
cHJpbnQoIlByb3RvdHlwZUxvYyIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAppbmRleCAyNjkxNzFjYjM0MWQuLjQwZmI3MTY3
MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBA
IC02Nyw2ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0ZXJMb2MsCiAgICAg
U3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAorICAgIFR5cGVkQXJy
YXlCeXRlT2Zmc2V0SW50NTJMb2MsCisgICAgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jLAogICAg
IFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxvYWRMb2MsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MS4uNmRlZGEwMzdlZTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGlt
aXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTMzNSw3ICsxMzM1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vbk5lZ2F0
aXZlICYmIGxlc3NUaGFuTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRl
Tm9kZShibG9jay0+YXQobm9kZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRz
Q2hlY2tFbGltaW5hdGlvbigpKSAmJiBub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5k
ZXgsIFNwZWNOb25lLCBBc3NlcnRJbkJvdW5kcywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEo
KSwgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UganVzdCBu
ZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYSB2YWx1ZS1wcm9kdWNpbmcgbm9kZS4KICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTlj
Li4wYmE3YjlmZjNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk2
NSw2ICsxOTY1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAg
Y2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAg
ICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgog
CiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1
cm4gMjsKIAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0
SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZh
bERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5YTkw
YTRjZmRhYzguLjIzZjFjMTUwZDYwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMjYxLDggKzI2MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKE11bHRpRGVsZXRlQnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAg
LyogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBUeXBlZEFycmF5cywgYXMgdGhleSBhcmUgdGhl
IG9ubHkgb25lcyB0aGF0IGNhbiBoYXZlIGEgbGVuZ3RoIHRoYXQgZG9lcyBub3QgZml0IGluIDMy
IGJpdHMuICovIFwKKyAgICAvKiBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIGNoYW5nZSB0byByZXR1cm5pbmcgSW50NTIgaW4gRml4
dXAuIERvaW5nIGl0IGJlZm9yZSBjYXVzZXMgdmFsaWRhdGlvbiBmYWlsdXJlcy4gKi8gXAorICAg
IG1hY3JvKEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFNj
b3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXApAQCAtMjg2LDYgKzI5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhDaGVja0JhZFZhbHVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
QXNzZXJ0SW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91
bmRzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oQ2hlY2tJ
bkJvdW5kc0ludDUyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFj
cm8oQ2hlY2tJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrVHlwZUlu
Zm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFrZXMgYW4gT3BJbmZvIHdpdGggdGhlIGZs
YWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wKICAgICBtYWNybyhDaGVja0pTQ2FzdCwg
Tm9kZU11c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0aGUgc2FtZSBhcyBqc0Nhc3QgYnV0IGFzIGEg
c3BlY3VsYXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0aW9uICovXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTUwN2YxZTgwYWMwLi45NDUzNTM1NmRl
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
OTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFsdWUKICAgICB9CiAgICAgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaW5k
ZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGlu
ZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwg
aW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3NSw3ICsxNzMs
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLCBjaGFy
KiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3Qgc2l6ZSwg
Y2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIApAQCAtMTgzLDExICsxODEsMTQgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHIKICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIl9zKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpu
dW1lcmljX2xpbWl0czxpbnRwdHJfdD46Om1heCgpIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOworICAgIHNpemVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNpemUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3Io
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0
b3IsIHVuc2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0
d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc2l6ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxj
aGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVk
U2l6ZSkpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA5LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0Nl
bGwqLCAoVk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MjQsNyArMTkyNSw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMTk0MCw3ICsxOTQxLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk1Niw3ICsxOTU3LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk3Miw3ICsx
OTczLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcgKzE5ODksNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDA0LDcgKzIwMDUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjEsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMzYsNyAr
MjAzNyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsy
MDY5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxK
U0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCmluZGV4IDM5M2RlODg1MDcwNy4uNGZkNTc5NWQyZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1w
dHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Vp
bnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBj
aGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3Qs
IGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFs
dWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRw
dHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
VWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAo
Vk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVj
MC4uOGUwYzU4YjhhMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg2LDYgKzk4Niwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50
NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CkBAIC0xMzIwLDYgKzEzMjYsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgICAg
IGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICAg
ICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgog
ICAgICAgICBjYXNlIERvdWJsZVJlcDoKICAgICAgICAgY2FzZSBWYWx1ZVJlcDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCmluZGV4IGUz
YTIzOWEzM2UzMC4uZDlkYWUzYTgzMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKQEAgLTEwMCwxMSArMTAwLDIxIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkgIT0gTm90VHlwZWRBcnJheSAm
JiBtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgewotICAgICAgICAgICAgICAg
IE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2Rl
LT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgp
LmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEtub3du
SW50MzJVc2UpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgICAgICAgICAg
aWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBo
Lmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFn
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9
IEVkZ2UobGVuZ3RoLCBJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNl
bmRpZgorICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQz
Mk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFn
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9
IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzcsMTIgKzE0NywyOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBOb2RlKiBsZW5n
dGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyht
X25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgRWRnZShiYXNlLm5vZGUoKSwgS25vd25DZWxs
VXNlKSwgc3RvcmFnZSk7Ci0gICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHks
IENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgaW5kZXgsIEVkZ2Uo
bGVuZ3RoLCBLbm93bkludDMyVXNlKSk7CisgICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHM7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKChvcCA9PSBHZXRBcnJheUxl
bmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBt
X2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpKSB7
CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlM
ZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9u
b2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVz
ZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgbGVuZ3RoLT5zZXRSZXN1bHQoTm9kZVJlc3VsdElu
dDUyKTsKKyAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlwZSBpcyBhIGR1bW15IHNpbmNlIHRo
aXMgbm9kZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55dGhpbmcuCisgICAgICAgICAgICBj
aGVja0luQm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUt
Pm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNl
KSk7CisgICAgICAgIH0gZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcElu
Zm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3du
Q2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQz
Mk9ubHksIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgIGlu
ZGV4LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgICAgIH0KKyNlbmRpZgorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGph
Y2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlw
ZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdmNTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBib29sIGlnbm8KICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNz
ZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJv
dW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENo
ZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQ
cm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAg
Y2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNDc5NjM4NDQ5NDRhLi43YTI3ZTRlMjBkZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
MjM4LDI4ICszMjM4LDQzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShK
SVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29t
cGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVy
OjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUq
IG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KQogewogICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVy
biBKSVRDb21waWxlcjo6SnVtcCgpOwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9q
aXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZSht
X2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7
CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3Ro
KCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9k
ZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAg
ICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50
MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgp
ICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBK
SVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAg
IG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
cmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vs
c2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOwogICAgICAgICByZXR1cm4gbV9q
aXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBp
bmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQor
CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0
cihpbmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSkpOworI2VuZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9k
ZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3Vu
ZHMobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAg
PSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBz
Y3JhdGNoR1BSKTsKICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1
bXApOwpAQCAtMzM4MCwxMCArMzM5NSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2Uo
dGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcg
PSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsK
IAogICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wOwogICAgIEZQUlJlZyBy
ZXN1bHRGUFIgPSBJbnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDE0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5
cGVkQXJyYXlUeXBlIHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4
KERhdGFGb3JtYXRJbnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZv
cm1hdEpTOwogCi0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBw
cm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVn
LCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0
b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAg
ICAgY29uc3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFy
cmF5TG9hZFJlc3VsdChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3Vs
ZEJveCwgcmVzdWx0RlBSKTsKQEAgLTM1NTUsNiArMzU3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0CiAgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFu
ZCBzdG9yYWdlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3Rv
cmFnZS5ncHIoKTsKICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAyKTsKQEAgLTM1ODcsNyArMzYwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0CiAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVydHkp
OwogICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0g
c3RvcmFnZVJlZyk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9y
VHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9k
ZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgMToKQEAgLTM2NDUsMTAgKzM2NjMsMTIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9k
ZSwgVHlwZWRBcnJheVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBT
dG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcg
PSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwog
ICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAg
IERhdGFGb3JtYXQgZm9ybWF0OwpAQCAtMzY1Niw3ICszNjc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRB
cnJheVR5cGUKIAogICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgRlBSUmVnIHJl
c3VsdFJlZyA9IHJlc3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5v
ZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNr
KG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsKICAgICBzd2l0Y2ggKGVs
ZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBtX2ppdC5sb2FkRmxvYXQo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9B
c3NlbWJsZXI6OlRpbWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjkwLDEwICszNzEwLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShH
UFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZh
bHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgIEdQUlRlbXBvcmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBSUmVnIHZhbHVlRlBSID0g
dmFsdWVPcC5mcHIoKTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9k
ZSwgYmFzZSwgcHJvcGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRz
ID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwgc2Ny
YXRjaEdQUik7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNh
c2UgNDogewpAQCAtNzk2Nyw3ICs3OTg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5
cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsK
ICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAg
ICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywg
dmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNF
RF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBA
IC04MDM5LDkgKzgwNjEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKICAgICBHUFJSZWcgZGF0
YUdQUiA9IGRhdGEuZ3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKLSAg
ICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRh
dGFHUFIpOwogCiAgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKIApAQCAtODA4
Myw2ICs4MTAyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldChOb2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwogI2Vu
ZGlmCiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIC8vIEFJIHByb21pc2VzIHRo
YXQgdGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBz
byB3ZSBtdXN0IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmUsIHZlY3RvckdQUiwgVHJ1c3RlZEltbTMyKHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKSkpOworI2VuZGlmCisKICAgICBzdHJpY3RJbnQzMlJlc3VsdCh2
ZWN0b3JHUFIsIG5vZGUpOwogfQogCkBAIC04MzQ5LDEyICs4MzczLDE4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIG1faml0LmxvYWQ2NChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3cs
IEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSkpKTsKKyNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHJlc3VsdEdQUik7CisjZW5kaWYKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfSB9CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNoZWNrSWRlbnQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBzdHJpbmdPclN5bWJvbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMTExOSwx
MCArMTExNDksMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZShOb2RlKiBub2RlKQogICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBl
ZEFycmF5VHlwZSgpOwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQu
Z3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1
cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1
Y3R1cmUuZ2V0KCkpOwotICAgIAorCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAv
LyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgaW50cHRy
X3QsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRmb3JtcworICAgIFNwZWN1bGF0ZUludDMyT3Bl
cmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lz
dGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UK
ICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorICAgIGVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNp
emVHUFIpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFy
cmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJy
YXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7
CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFn
ZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTM2LDggKzEx
MTgwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIHN0b3JhZ2VHUFIpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzbG93
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJv
dmUsIHNpemVHUFIsIFRydXN0ZWRJbW02NChKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1p
dCkpKTsKKyAgICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRo
IHRoYXQgdGhlIHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQoaXNJ
bkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworI2Vs
c2UKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6
ZmFzdFNpemVMaW1pdCkpKTsKKyNlbmRpZgogICAgIAogICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwg
c2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRT
aXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTExOTMsOSArMTEyNDQsMTUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2Rl
KiBub2RlKQogICAgIG1faml0LnN0b3JlUHRyKAogICAgICAgICBzdG9yYWdlR1BSLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBtX2pp
dC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7Cisj
ZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0ZWRJ
bW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE2Nyw2
ICsxNDIyNCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheShO
b2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFy
cmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2Ug
VW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50
LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggMDdiNTYzYjM0ODNhLi4wNDliY2Y3ZTZmZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3Ry
aW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAg
IAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAg
ICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJ
bnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUo
Tm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNv
bXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVH
ZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2
b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKik7CisjZW5kaWYKIAog
ICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQ2hlY2tJZGVudChOb2RlKik7CkBAIC0xNDMxLDEwICsxNDM4LDEzIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbXBpbGVBcml0aE1pbk1heChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ29uc3Rh
bnRTdG9yYWdlUG9pbnRlcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZShOb2RlKik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJy
YXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7Cisg
ICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3Vu
ZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7
Ci0gICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIGluZGV4R1BSKTsKKyAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2so
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7CisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxP
bkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8
c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRG
b3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsK
ICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFy
cmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFG
b3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcg
KzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8v
IEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAx
NiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4g
aXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRl
SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAg
LTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwog
fTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGlu
IHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdp
dmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUy
IGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVT
dHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKaW5kZXggNmEwZjI1MjBlYTM3Li4yMmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAt
MjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGls
ZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21l
VHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5h
cnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAg
ICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJl
Zml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAg
ICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMy
LWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVE
ZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlw
ZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzOTgsNiArNDQwOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6
CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAg
Y2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBN
dWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNiMzkz
ZjUyNzVmNy4uYjVjNDg0OTgzZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjk0LDYgKzI2OTQsODYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNp
emUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBh
dXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlU
eXBlKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1
bGF0ZVN0cmljdEludDUyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBH
UFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhT
aXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsK
K30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyKE5vZGUqIG5vZGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCku
aXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVz
ZSwgYmFzZSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
cmVzdWx0R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgx
dWxsIDw8IDUyKSwgInRoZXJlIGlzIGEgcmlzayB0aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJy
YXkgd29uJ3QgZml0IGluIGFuIEludDUyIik7CisgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3Io
dGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IGRhdGEodGhpcyk7CisKKyAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKKyAg
ICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJH
UFIgPSBkYXRhR1BSOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0g
bV9qaXQuYnJhbmNoMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTW9kZSgpKSwKKyAgICAgICAgVHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkp
OworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBudWxsVmVjdG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVy
OjpFcXVhbCwgdmVjdG9yR1BSLCBUcnVzdGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxs
VmVjdG9yUHRyKCkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAg
bV9qaXQuY2FnZVdpdGhvdXRVbnRhZ2dpbmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOwor
CisgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwgYXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBU
aGlzIG5lZWRzIGNhZ2luZy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1NTE1CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhhcnJheUJ1ZmZlckdQUiwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7
CisjaWYgQ1BVKEFSTTY0RSkKKyAgICBtX2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsK
KyNlbmRpZgorCisgICAgbV9qaXQuc3ViUHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkK
KyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNl
dC5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2
ZWN0b3JHUFIpOworCisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisg
ICAgQVNTRVJUKCFKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxs
VmVjdG9yLmxpbmsoJm1faml0KTsKKyNlbmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVj
dG9yR1BSLCBub2RlKTsKK30KKyNlbmRpZiAvLyBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUg
b3AgPSBub2RlLT5vcCgpOwpAQCAtMzY0NCwxMSArMzcyNCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50
MzJPcGVyYW5kIGluZGV4KHRoaXMsIGluZGV4RWRnZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoOwogCiAgICAgICAgIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBpbmRleEdQ
UiA9IGluZGV4LmdwcigpOwogICAgICAgICAKLSAgICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQUik7CisgICAgICAgIGVtaXRUeXBlZEFycmF5Qm91
bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAg
ICAKICAgICAgICAgR1BSVGVtcG9yYXJ5IGFyZ3NbMl07CiAgICAgICAgIApAQCAtNDM4MSw2ICs0
NDYyLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNh
c2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisjaWYgVVNFKEFERFJFU1M2NCkKKyAgICAg
ICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsK
KwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBjb21waWxlRGVsZXRlQnlJZChub2Rl
KTsKICAgICAgICAgYnJlYWs7CkBAIC00NDk5LDYgKzQ1ODgsMTUgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIo
bm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsK
ICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTU1ODksNyArNTY4NywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwogICAg
ICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVz
dGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3Mo
KSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNz
VGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBtX2ppdC5sb2FkNjQo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4g
ZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMgYXJlIGNhdWdo
dCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApA
QCAtNTc5MCw3ICs1ODk1LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAg
ICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1faml0LmFkZDY0KFRy
dXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKQorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVn
cygpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxl
c3NUaGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgIG1faml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisjZWxzZQorICAgICAgICAvLyBObyBuZWVkIGZvciBh
biBleHBsaWNpdCBjaGVjayBhZ2FpbnN0IDAgaGVyZSwgbmVnYXRpdmUgaW5kaWNlcyBhcmUgY2F1
Z2h0IGJ5IHRoZSBjb21wYXJpc29uIHdpdGggbGVuZ3RoIHJpZ2h0IGFmdGVyCiAgICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisjZW5kaWYKICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAg
IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwog
CkBAIC02MDQyLDYgKzYxNTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIEFzc2VydElu
Qm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJ
bnQ1MjoKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAg
ICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggNWY1MWYyMjUxMDRm
Li5lMTBkNjJlNDI3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcApAQCAtMjc5LDEwICsyNzksMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNh
c2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAg
ICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKQEAgLTM1OSw2ICszNjEsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAg
ICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggYzVlNWNmMzZhNzcwLi5mYjNiZGQ0ODYx
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC02NDAs
NiArNjQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFVwc2lsb246CiAgICAg
ICAgICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHM6CisgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAg
ICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dl
bmVyYXRvckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4uNzg3ZTE0NTU2MmY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNl
dEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFN0b3JlQmFycmllcjoKQEAgLTE5OSw2
ICsyMDAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNl
IENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBD
b25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1Zh
cmFyZ3M6CkBAIC0zOTEsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50czoK
ICAgICBjYXNlIENQVUludHJpbnNpYzoKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNh
c2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6
CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggM2E4ZjVjZmM3
OTVlLi40OGQ0ZTFiZmY0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTYwNSw2ICs2MDUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2hlY2tJbkJvdW5k
cykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IENoZWNrSW5Cb3VuZHNJbnQ1MikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1faW50ZXJwcmV0ZXIuZm9yTm9kZShub2Rl
KTsKICAgICAgICAgICAgIHsKQEAgLTEwMjUsNiArMTAyNyw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgo
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAg
ICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTEwMzQsNiArMTAzOSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoK
ICAgICAgICAgICAgIGNvbXBpbGVDaGVja0luQm91bmRzKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICBjb21waWxlQ2hl
Y2tJbkJvdW5kc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRC
eVZhbDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMTc1LDYgKzExODMsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldEFzSW50NTI6CisgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVP
ZjoKICAgICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC00ODI4LDkgKzQ4MzksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNO
dWxsKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3Ip
KSk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQor
ICAgIExWYWx1ZSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0
KCkKICAgICB7Ci0gICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsgICAgCisgICAgICAgIExWYWx1ZSBiYXNlUHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayB3YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAg
LTQ4NDYsNyArNDg1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8od2FzdGVmdWxDYXNlLCBub3ROdWxsKTsKIAogICAgICAgICBMVmFs
dWUgdmVjdG9yID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X3ZlY3Rvcik7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1f
b3V0LmNvbnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwgCisg
ICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRy
KEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKSwKICAgICAgICAgICAgIHVuc3Vy
ZShjb250aW51YXRpb24pLCB1bnN1cmUobm90TnVsbCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKG5vdE51bGwsIGNvbnRpbnVhdGlvbik7CkBAIC00ODY2LDkgKzQ4NzcsMzAgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKIAotICAgICAgICBzZXRJbnQzMihtX291dC5j
YXN0VG9JbnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVm
dWxPdXQpKSk7CisgICAgICAgIHJldHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZl
Y3Rvck91dCwgd2FzdGVmdWxPdXQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCk7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgLy8gQUkgcHJvbWlzZXMgdGhhdCB0aGUgcmVzdWx0IG9m
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0IHdpbGwgYmUgSW50MzIsIHNvIHdlIG11c3QgdXBob2xk
IHRoYXQgcHJvbWlzZSBoZXJlLgorICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQuYWJvdmUocmVzdWx0LCBtX291dC5jb25zdEludDY0KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworI2VuZGlmCisgICAgICAgIHNldEludDMy
KG1fb3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOworICAgIH0KKworI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmct
bm9yZXR1cm4iCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
KCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0Vf
QVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsK
KyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2Vw
dFNldHRpbmdSZXN1bHQoKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIocmVzdWx0KTsKKyAgICB9
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICB2b2lkIGNvbXBpbGVHZXRQcm90
b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1
MDg2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsK
LSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAg
ICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1f
b3V0LmFib3ZlKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9J
bnQzMihsZW5ndGgpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2NCw2ICs1MTAxLDE3IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICB9CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorICAgIHZv
aWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7
CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxF
QVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAg
c2V0U3RyaWN0SW50NTIobV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICB9CisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5n
dGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkg
ewpAQCAtNTEwOCw3ICs1MTU2LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBv
dXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAog
ICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgogICAgIH0KLSAgICAKKworI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21p
c3Npbmctbm9yZXR1cm4iCisgICAgdm9pZCBjb21waWxlQ2hlY2tJbkJvdW5kc0ludDUyKCkKKyAg
ICB7CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJU
KFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBS
RUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAg
ICAgLy8gU2lnbi1leHRlbmRlZCB0byBhbHNvIGNhdGNoIG5lZ2F0aXZlIGluZGljZXMKKyAgICAg
ICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuc2lnbkV4dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNo
aWxkMSgpKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51
bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbGVuZ3RoKSk7CisgICAgICAgIC8vIEV2
ZW4gdGhvdWdoIHdlIGNsYWltIHRvIGhhdmUgSlNWYWx1ZSByZXN1bHQsIG5vIHVzZXIgb2YgdXMg
c2hvdWxkCisgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9k
ZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAorICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVt
LgorICAgIH0KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKwogICAgIExWYWx1ZSBjb21w
aWxlR2V0QnlWYWxJbXBsKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CkBAIC02
MDA4LDExICs2MDcyLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGlzSW5Cb3VuZHMgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBpc091dE9mQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIo
Y2hpbGQ1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnN1cmUoaXNPdXRPZkJvdW5kcyks
IHVuc3VyZShpc0luQm91bmRzKSk7Ci0gICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgICAg
ICAgICAgICAgIExWYWx1ZSBpc091dE9mQm91bmRzQ29uZGl0aW9uOworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hpbGQ1LnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhlIHByZXByb2Nlc3NvciBjaG9rZXMgb24gUkVMRUFTRV9BU1NFUlQo
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykpLCB0aGlzIGlzIGVxdWl2YWxlbnQuCisgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWlu
dDY0X3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24g
PSBtX291dC5hYm92ZU9yRXF1YWwobV9vdXQuc2lnbkV4dDMyVG82NChpbmRleCksIGxvd1N0cmlj
dEludDUyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbiA9IG1fb3V0LmFib3Zl
T3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3V0T2ZCb3VuZHNDb25kaXRpb24s
IHVuc3VyZShpc091dE9mQm91bmRzKSwgdW5zdXJlKGlzSW5Cb3VuZHMpKTsKKwogICAgICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3Vu
ZHMsIGlzT3V0T2ZCb3VuZHMpOwogICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZSh2YWx1
ZVRvU3RvcmUsIHBvaW50ZXIsIHN0b3JlVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTgxNjksOTUgKzgyNDAsMTggQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAg
ICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAg
ICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOwot
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0gICAgICAgICAgICBtX291dC5icmFuY2goCi0g
ICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6ZSwgbV9vdXQuY29uc3RJbnQzMihKU0FycmF5
QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAotICAgICAgICAgICAgICAgIHJhcmVseShzbG93
Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7
Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Ci0gICAgICAgICAgICAgICAgbV9vdXQu
c2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1fb3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNp
emUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRB
cnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5k
KAotICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50
UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19j
YXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAg
IExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIExWYWx1
ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3JkcygKLSAgICAgICAgICAgICAgICBzdG9yYWdl
LAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKLSAgICAgICAgICAgICAgICBtX291
dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkp
LAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKLSAgICAgICAgICAgICAgICBtX2hl
YXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQotI2lmIENQVShBUk02NEUpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNpemVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNp
emUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9v
dXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNh
dGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50
aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0
ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3Io
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBw
YXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFy
YW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7Ci0gICAgICAgICAgICB9Ci0jZW5k
aWYKLQotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNo
b3Ioc3RvcmFnZSk7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRv
NjQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgZmFz
dFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5
cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKLSAgICAgICAgICAg
IGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0g
YWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clpl
cm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgRk9S
X0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZ
UEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKLSAgICAgICAgICAgIGNhc2Ug
VHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRl
T2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2Up
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdl
LCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAg
ICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0
LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG11dGF0b3JG
ZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworICAgICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlw
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOwotICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2lu
dGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKyAgICAgICAgY2FzZSBJbnQ1MlJl
cFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNv
bmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0
aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9j
YXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFy
cmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5n
ZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
c2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dT
dHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0
LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAg
ICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
ODI3Nyw3ICs4MjcxLDEwNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5
cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIHNpemU2NEJpdHMpCisgICAg
eworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clpl
cm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNp
emU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGlt
aXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hD
YXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhz
bWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgLy8gV2UgYXNzdW1lIHRocm91Z2gg
dGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJl
ci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0luQm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZm
ZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisKKyAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KKyAg
ICAgICAgICAgIG1fb3V0LnNobChzaXplNjRCaXRzLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1l
bnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRB
cnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisg
ICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3KSks
CisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90
Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRv
ckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwg
c2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxs
b2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAgc3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0
b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCisgICAgICAgICAgICBtX291dC5j
YXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAor
ICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAorICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFy
cmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJNNjRFKQorICAgICAgICB7CisgICAgICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRl
clR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3Rlcihz
dG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIz
OjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
IGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgaml0
Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAg
IGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50aWNhdGU7CisgICAgICAg
IH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQu
YW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxs
cHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7CisjZGVmaW5lIFRZUEVEX0FS
UkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCisgICAg
ICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+
KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9W
SUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UK
KyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6CisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUg
PSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8s
IHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZh
bHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyAgICAgICAgbV9vdXQuc3RvcmU2NChzaXplNjRCaXRzLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbHNlCisgICAgICAg
IG1fb3V0LnN0b3JlMzIobV9vdXQuY2FzdFRvSW50MzIoc2l6ZTY0Qml0cyksIGZhc3RSZXN1bHRW
YWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCisgICAgICAg
IG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1
bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKKworICAgICAgICBtdXRh
dG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAg
ICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9y
YWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAg
ICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9
LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5
U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRB
cnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAor
ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOworICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJpdHMsIHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsK
KyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBo
aShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAg
ICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
QEAgLTE0NjU2LDYgKzE0NzQ3LDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAg
IC8vIGJhc2UgYW5kIHZhbHVlIGFyZSA2NC1iaXRzLCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRz
CisgICAgLy8gc3RvcmVzIHZhbHVlIGF0IGV2ZXJ5IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2Ur
YmVnaW4qOCBhbmQgYmFzZStlbmQqOAogICAgIHZvaWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwg
TFZhbHVlIGJlZ2luLCBMVmFsdWUgZW5kLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0SGVh
cCYgaGVhcCkKICAgICB7CiAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0ID0g
MTA7CkBAIC0xNTU5MSw3ICsxNTY4NCwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3
RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAorI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxs
cHRyLCBtX291dC5sZXNzVGhhbihpbmRleCwgbV9vdXQuY29uc3RJbnQzMigwKSkpOworICAgICAg
ICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVh
cHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNvbXBhcmlzb24gb2YgaW5kZXggdG8gMCwgdGhlIGNoZWNrIGFnYWlu
c3QgbGVuZ3RoIGNhdGNoZXMgdGhhdCBjYXNlCiAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworI2VuZGlmCiAgICAgICAgIExWYWx1ZSBpbmRleFRv
Q2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNp
emUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVj
aywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTU3MzQsNyArMTU4
MzMsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+
ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBz
cGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4o
aW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1f
b3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjb21w
YXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVjayBhZ2FpbnN0IGxlbmd0aCBjYXRjaGVzIHRo
YXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5s
b2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4
dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAg
IGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQo
ZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2LDcgKzE3MzQxLDExIEBAIHByaXZhdGU6CiAg
ICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0gWyZdKExWYWx1ZSB0YWdnZWRQdHIpIHsKICNp
ZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2
ZSkgeworI2lmIFVTRShBRERSRVNTNjQpCisgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBt
X291dC5sb2FkNjQoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2Vs
c2UKICAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIsIHNpemUpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmlu
ZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIG5vbk5l
Z2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlvbikgeyByZXR1cm4gbG9hZEluc3RydWN0aW9u
OyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUo
TFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQzMihi
YXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2Us
IGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChiYXNlLCBmaWVsZCk7
IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUsIExWYWx1ZSk7CiAgICAgTFZhbHVlIG5vdEVx
dWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJp
bnNpY0VtaXR0ZXIuY3BwCmluZGV4IDI1MjBmOGNjNDQ1Ni4uMTA5M2FjOTUzNTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Mywy
MyArODMsMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2lj
R2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKIAogICAgIHN3aXRjaCAoaW50cmlu
c2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6IHsKKyNpZiBVU0Uo
TEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBz
dGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQz
Mih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3Ro
SW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLQorI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rh
dGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQ
Uik7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQu
bHNoaWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwor
ICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BS
LCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4g
MSkgewotICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2Ug
VHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQz
Mi4KLSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNp
emUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hp
ZnQgaGVyZSBzaW5jZSBvbiBBRERSRVNTMzIgcGxhdGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBo
YXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCisgICAgICAgICAgICBqaXQu
bHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwog
ICAgICAgICB9Ci0KICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOwor
I2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEzMCw4ICsxMzksMTIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0
Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0
Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmJveEludDMyKHZh
bHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDRhNWMwODBjMDYwYy4uZmFjOGUwYWM2NjhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAg
c3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3UKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAg
ICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNh
blNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNl
dEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5
U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgYXJyYXlQcm9maWxlKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhcnJheVByb2Zp
bGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAt
MjM0MiwyMSArMjM0MCwyMiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQu
dHJ5R2V0QXNJbnQzMigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJ
bmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pT
U3RyaW5nKGJhc2VWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmco
YmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFz
ZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkp
KTsKICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQ
cm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdl
dEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVj
dC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRz
ID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFy
cmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8
IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAo
b2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzCisgICAgICAgICAg
ICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+
cHVibGljTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMg
dG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJsZToKICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCiAgICAg
ICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0p
OwpAQCAtMjM3Miw4ICsyMzcxLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpID49IDApCi0gICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBi
YXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkpOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0
LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAg
ICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNDFjNzFiNjAw
NDRlLi5lNzZkYWRhMGQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTE0OSw2ICsxNDksMTIgQEAKICNkZWZpbmUg
T0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlmCiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDAKKyNlbmRpZgorCiAjaWYgQ1BV
KEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1Njgx
Mzc3YmI5ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3LDggKzEwNDcsOCBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwog
ICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChv
YmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQg
PSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRP
ZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0ICsxMTcwLDEzIEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBp
c1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIAogICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMklu
ZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2ts
eShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0s
IGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghb2JqZWN0LT50
cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUp
KQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAg
IExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjQyMWE3ZmE0MTBlLi42Y2RiZDhk
ZTNiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcsMTAgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29u
c3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxl
OjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyCiBlbmQKIAoraWYgTEFSR0Vf
VFlQRURfQVJSQVlTCisgICAgY29uc3QgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gY29uc3Rl
eHByIEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgKK2VuZAorCiBjb25z
dCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IGNvbnN0ZXhwciBtYXhGcmFtZUV4dGVu
dEZvclNsb3dQYXRoQ2FsbAogCiBpZiBYODZfNjQgb3IgWDg2XzY0X1dJTiBvciBBUk02NCBvciBB
Uk02NEUgb3IgUklTQ1Y2NApAQCAtMTMxMCw3ICsxMzE0LDggQEAgbWFjcm8gYXJyYXlQcm9maWxl
KG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCiAgICAgbG9h
ZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5k
CiAKLW1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlW
YWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzbG93UGF0aCkKKyMgTm90ZSB0aGF0IGluZGV4IGlz
IGFscmVhZHkgc2lnbi1leHRlbmRlZCB0byBiZSBhIHJlZ2lzdGVyIHdpZHRoLgorbWFjcm8gZ2V0
QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91
YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgc2xvd1BhdGgpCiAgICAgIyBGaXJzdCBs
ZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8g
c29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KICAgICBsb2FkYiBKU0NlbGw6Om1fdHlwZVtiYXNl
XSwgdDIKICAgICBzdWJpIEZpcnN0VHlwZWRBcnJheVR5cGUsIHQyCkBAIC0xMzIxLDExICsxMzI2
LDI2IEBAIG1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0
QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzCiAgICAgaWYgQVJNNjRFCiAgICAgICAgIGNv
bnN0IGxlbmd0aCA9IHQ2CiAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSB0NwotICAgICAgICBsb2Fk
aSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAotICAgICAgICBiaWFl
cSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMK
KyAgICAgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVu
Z3RoCisgICAgICAgICAgICBicWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAgICAgICBl
bHNlCisgICAgICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0s
IGxlbmd0aAorICAgICAgICAgICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAg
ICAgZW5kCiAgICAgZWxzZQogICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50
aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNl
ZCBvbiBvdGhlciBwbGF0Zm9ybXMuCi0gICAgICAgIGJpYWVxIGluZGV4LCBKU0FycmF5QnVmZmVy
Vmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGlmIExBUkdFX1RZUEVEX0FS
UkFZUworICAgICAgICAgICAgYnFhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0
aFtiYXNlXSwgc2xvd1BhdGgKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmlhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKKyAgICAgICAgZW5k
CisgICAgZW5kCisKKyAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgYnFiZXEgaW5k
ZXgsIFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCwgLnNtYWxsVHlwZWRBcnJheQorICAgICAgICBz
ZXRMYXJnZVR5cGVkQXJyYXkoKQorLnNtYWxsVHlwZWRBcnJheToKICAgICBlbmQKIAogICAgIGxv
YWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3RvcltiYXNlXSwgdDMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
aW5kZXggNTBkNWRiZGY2MDJhLi40ZTcwZjhiMTVmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0x
NjI0LDYgKzE2MjQsMTAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZGlzcGF0
Y2goKQogICAgIGVuZAogCisgICAgbWFjcm8gc2V0TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAg
Y3Jhc2goKQorICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQyKQogICAgIGdldChtX2Jhc2Us
IHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFn
LCB0MCwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTY2OSw3ICsxNjczLDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3Jh
Z2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZp
bmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFy
cmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRM
YXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IGQ4NGI2ZWFkMzdmZC4uMzU5Y2VjNWM5MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEz
LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNj
cmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJh
eSgpCisgICAgICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICAgICAgc3RvcmViIDEs
IE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFy
cmF5W3Q1XQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjcmFzaCgpCisgICAgICAgIGVuZAor
ICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQyKQogCiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBA
IC0xNzIzLDYgKzE3MzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogCiAgICAgZ2V0KG1f
cHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0Mywg
dDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAjIFRoaXMgc2lnbi1leHRlbnNpb24gbWFrZXMgdGhl
IGJvdW5kcy1jaGVja2luZyBpbiBnZXRCeVZhbFR5cGVkQXJyYXkgd29yayBldmVuIG9uIDRHQiBU
eXBlZEFycmF5LgogICAgIHN4aTJxIHQxLCB0MQogCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09i
amVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgbnVtYmVyVGFnKQpAQCAtMTc2Myw3ICsxNzcyLDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFs
Tm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNo
SW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAg
Z2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJs
ZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0
QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXgg
YzliOGYyYTcxOTFlLi40OTdmNDllOGExZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNr
PHZvaWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3Rvcigp
CiAgICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCkuY29weVJlZigpOwogfQogCi1TaGFyZWRBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVu
c2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikK
K1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9p
ZCogZGF0YSwgc2l6ZV90IHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVz
dHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdU
Rk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2
OCw3IEBAIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZm
ZXJDb250ZW50cyYmIG90aGVyKQogICAgIG90aGVyLnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1B
cnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0
b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEs
IHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0
cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5C
eXRlcyhzaXplSW5CeXRlcykKIHsKQEAgLTEwOSwyMyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZm
ZXJDb250ZW50czo6cmVzZXQoKQogICAgIG1fc2l6ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFy
cmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQg
QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAg
ICAvLyBEbyBub3QgYWxsb3cgMzEtYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAg
IGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVt
ZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1l
bnRzICE9IGVsZW1lbnRCeXRlU2l6ZSB8fCB0b3RhbFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUpIHsKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICBDaGVja2VkU2l6ZSBzaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzOworICAgIHNpemVJ
bkJ5dGVzICo9IGVsZW1lbnRCeXRlU2l6ZTsKKyAgICBpZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZs
b3dlZCgpIHx8IHNpemVJbkJ5dGVzLnZhbHVlKCkgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsK
KyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzaXplX3Qgc2l6
ZUluQnl0ZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG51bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0
PHNpemVfdD4oZWxlbWVudEJ5dGVTaXplKTsKLSAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBz
aXplSW5CeXRlczsKKworICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzLnZh
bHVlKCk7CiAgICAgaWYgKCFhbGxvY2F0aW9uU2l6ZSkKICAgICAgICAgYWxsb2NhdGlvblNpemUg
PSAxOyAvLyBNYWtlIHN1cmUgbWFsbG9jIGFjdHVhbGx5IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1
dCBub3QgdG9vIG11Y2guIFdlIHVzZSBudWxsIHRvIG1lYW4gdGhhdCB0aGUgYnVmZmVyIGlzIGRl
dGFjaGVkLgogCiAgICAgdm9pZCogZGF0YSA9IEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgYWxsb2NhdGlvblNpemUpOwotICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEs
IHNpemVJbkJ5dGVzKTsKKyAgICBtX2RhdGEgPSBEYXRhVHlwZShkYXRhLCBzaXplSW5CeXRlcy52
YWx1ZSgpKTsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAgICAgaWYg
KHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKICAgICAgICAgbWVtc2V0KGRhdGEsIDAsIGFsbG9j
YXRpb25TaXplKTsKIAotICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlczsKKyAgICBtX3Np
emVJbkJ5dGVzID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX3Np
emVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiAgICAgbV9kZXN0cnVjdG9yID0g
QXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpOwogfQpAQCAtMTc4LDcg
KzE3Niw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6c2hhcmVXaXRoKEFycmF5QnVmZmVy
Q29udGVudHMmIG90aGVyKQogICAgIFJFTEVBU0VfQVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMg
PD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBA
IC0xOTEsNyArMTg5LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFy
cmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci5k
YXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBz
aXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2Us
IGJ5dGVMZW5ndGgpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjA4LDcgKzIwNiw3IEBAIFJlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29u
dGVudHMpCiAvLyBDdXJyZW50IHRoaXMgaXMgb25seSB1c2VkIGZyb206CiAvLyAtIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PD46OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNh
c2UsIHRoZSBtZW1vcnkgc2hvdWxkIGhhdmUgYWxyZWFkeSBjb21lCiAvLyAgIGZyb20gdGhlIGNh
Z2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRW5hYmxlZCgpIHx8IChHaWdhY2FnZTo6Y29udGFp
bnMoZGF0YSkgJiYgR2lnYWNhZ2U6OmNvbnRhaW5zKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSArIGJ5dGVMZW5ndGggLSAxKSkpOwogICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMo
ZGF0YSwgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3Rv
cigpKTsKQEAgLTIyMCw3ICsyMTgsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpj
cmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndAogLy8gICBs
b25nZXIgY2FnZWQsIG9yIHdlIGNvdWxkIGludHJvZHVjZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJy
YXkgdHlwZXMgdGhhdCBhcmUgdW5jYWdlZCBhbmQgZ2V0IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVu
dGx5LgogLy8gLSBXZWJBc3NlbWJseS4gV2FzbSBzaG91bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2Fn
ZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2
b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmIGRlc3RydWN0b3IpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVG
cm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVy
RGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKIHsKICAgICBpZiAoZGF0YSAmJiAhR2ln
YWNhZ2U6OmlzQ2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2Fj
YWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKTsKQEAgLTIyOSw3ICsyMjcsNyBAQCBSZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0
YSwgdW5zaWduZWQgYnl0ZUxlbgogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShjb250ZW50cykp
OwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBl
bGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKIH0K
QEAgLTIzOSw3ICsyMzcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiB0cnlDcmVhdGUob3RoZXIuZGF0
YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBj
b250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CkBAIC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCB1bnNpZ25lZCBieXRlTGVuZwogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNv
bnRlbnRzKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
VW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFy
cmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRz
LCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsK
IH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIGF1
dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGlj
eSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yNjYsMTUgKzI2NCwxNyBAQCBSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlUwogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVm
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZl
ckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5n
dGgpCiB7Ci0gICAgQVNTRVJUKCFieXRlTGVuZ3RoIHx8IHNvdXJjZSk7CiAgICAgYXV0byBidWZm
ZXIgPSBhZG9wdFJlZigqbmV3IEFycmF5QnVmZmVyKFdURk1vdmUoY29udGVudHMpKSk7Ci0gICAg
bWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIGlmIChieXRl
TGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChzb3VyY2UpOworICAgICAgICBtZW1jcHkoYnVmZmVy
LT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CisgICAgfQogICAgIHJldHVybiBidWZmZXI7
CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGlj
eSkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRy
eUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEs
NyArMjkxLDcgQEAgQXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMm
JiBjb250ZW50cykKIHsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91
YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQorc2l6ZV90IEFycmF5QnVmZmVy
OjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KQogewogICAg
IEFTU0VSVChsZWZ0IDw9IHJpZ2h0KTsKICAgICBpZiAoeCA8IGxlZnQpCkBAIC0zMDEsOSArMzAx
LDkgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVk
IGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQogICAgIHJldHVybiB4OwogfQogCi11bnNpZ25lZCBBcnJh
eUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZm
ZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogewotICAgIHVuc2lnbmVkIGN1cnJl
bnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CisgICAgc2l6ZV90IGN1cnJlbnRMZW5ndGggPSBieXRl
TGVuZ3RoKCk7CiAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAgaW5kZXggPSBjdXJyZW50TGVu
Z3RoICsgaW5kZXg7CiAgICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5n
dGgpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3QKICAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZElu
ZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpIGNvbnN0CiB7Ci0g
ICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKKyAgICBz
aXplX3Qgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKICAgICBhdXRvIHJl
c3VsdCA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSkgKyBiZWdpbiwgc2l6ZSk7CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmVzdWx0LT5z
ZXRTaGFyaW5nTW9kZShzaGFyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IDY4ZmY5MGUxM2ViYS4uZWFjY2EyYzIzM2E4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywxMyAr
MzMsMjIgQEAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3
dGYvUGFja2VkUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KKyNpbmNsdWRl
IDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3QpID09IHNpemVvZih1aW50NjRfdCkpOwor
I2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1bGwgPDwgMzIpCisjZWxzZQorc3RhdGlj
X2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDMyX3QpKTsKKy8vIEJlY2F1c2Ug
d2UgYXJlIHVzaW5nIGEgc2l6ZV90IHRvIHN0b3JlIHRoZSBzaXplIGluIGJ5dGVzIG9mIGFycmF5
IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorLy8g
U28gd2UgYXJlIHN0aWNraW5nIHdpdGggMkdCLiBJdCBzaG91bGQgaW4gdGhlb3J5IGJlIHBvc3Np
YmxlIHRvIHN1cHBvcnQgdXAgdG8gKDRHQiAtIDFCKSBpZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5l
IE1BWF9BUlJBWV9CVUZGRVJfU0laRSAweDdmZmZmZmZmdQorI2VuZGlmCiAKIGNsYXNzIFZNOwog
Y2xhc3MgQXJyYXlCdWZmZXI7CkBAIC01MSw3ICs2MCw3IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uID0gUGFja2VkUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lk
Kik+CiAKIGNsYXNzIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gewogcHVibGljOgotICAgIFNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlC
dWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50
cyh2b2lkKiBkYXRhLCBzaXplX3QsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwog
ICAgIH5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKCk7CiAgICAgCiAgICAgdm9pZCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwobV9zaXplSW5CeXRlcyk7IH0KQEAg
LTYwLDE0ICs2OSwxNCBAQCBwcml2YXRlOgogICAgIHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1f
ZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0
b3I7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRl
czsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMpOwogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEFycmF5QnVmZmVyQ29udGVudHMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZl
ckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0
cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZm
ZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyQ29udGVudHMmIG9wZXJhdG9yPShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpA
QCAtNzksNyArODgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsg
cmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUluQnl0ZXMoKSk7IH0KLSAgICB1bnNpZ25lZCBzaXpl
SW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KKyAgICBzaXplX3Qgc2l6
ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CiAgICAgCiAgICAgYm9v
bCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9CiAgICAgCkBAIC05NCw3ICsx
MDMsNyBAQCBwcml2YXRlOgogICAgICAgICBEb250SW5pdGlhbGl6ZQogICAgIH07CiAKLSAgICB2
b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICB2b2lkIHRyeUFsbG9jYXRlKHNpemVf
dCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBv
bGljeSk7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRv
KEFycmF5QnVmZmVyQ29udGVudHMmKTsKQEAgLTEwNSwyOCArMTE0LDI4IEBAIHByaXZhdGU6CiAg
ICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0
aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICBQYWNrZWRSZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cz4gbV9zaGFyZWQ7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKyAgICBzaXplX3Qg
bV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21p
bmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRl
bnRzJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVz
KGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0
ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgp
OwogCiAgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKTsKIAogICAgIGlubGluZSB2b2lkKiBkYXRhKCk7CiAgICAgaW5saW5lIGNvbnN0
IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNv
bnN0OworICAgIGlubGluZSBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogICAgIAogICAgIHZv
aWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgc2V0U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFy
aW5nTW9kZSk7CkBAIC0xMzcsNyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQp
IGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2Uo
ZG91YmxlIGJlZ2luKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlC
dWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5k
KSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNl
V2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpIGNvbnN0OwogICAgIAog
ICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7CkBAIC0xNjEs
MTIgKzE3MCwxMiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxT
aGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAK
IHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
OkluaXRpYWxpemF0aW9uUG9saWN5KTsKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7
Ci0gICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUo
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVy
Q29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCBz
aXplX3QpOworICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3Qg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29u
dGVudHMmJik7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBj
b25zdDsKLSAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVu
c2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsKKyAgICBpbmxpbmUgc2l6ZV90IGNsYW1wSW5k
ZXgoZG91YmxlIGluZGV4KSBjb25zdDsKKyAgICBzdGF0aWMgaW5saW5lIHNpemVfdCBjbGFtcFZh
bHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KTsKIAogICAgIHZvaWQgbm90
aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTE5Miw3ICsyMDEsNyBAQCBjb25zdCB2b2lkKiBBcnJh
eUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQog
Ci11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitzaXplX3QgQXJyYXlC
dWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRlbnRzLnNpemVJ
bkJ5dGVzKCk7CiB9CkBAIC0yMDUsNyArMjE0LDcgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFy
ZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVmZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBj
b25zdAogewogICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIHNjYWxlIHRoaXMgYnkg
dGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29tZXRoaW5nLgotICAgIHJldHVybiBzaXplb2YoQXJy
YXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlTGVuZ3RoKCkpOworICAgIHJldHVy
biBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0ZUxlbmd0aCgpOwogfQogCiB2b2lkIEFycmF5QnVm
ZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHAKaW5kZXggNzY4ZmVhOTA5YmFiLi40NzM3MjI3NDUzNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxOCAr
MjUsMTcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmll
dy5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIAogQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoCi0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0
aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAg
ICAgICAgICwgbV9pc0RldGFjaGFibGUodHJ1ZSkKICAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0
ZUxlbmd0aCkKICAgICAgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hl
Y2tlZDx1bnNpZ25lZCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgoYnl0ZU9mZnNldCk7CisgICAg
Q2hlY2tlZDxzaXplX3QsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAg
IGxlbmd0aCArPSBieXRlTGVuZ3RoOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04obGVuZ3RoIDw9IG1fYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlmICht
X2J1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmgKaW5kZXggN2UzOTYwNzc3OGE5Li4wOTk5NTRiODY1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03
NywxNCArNzgsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IGJhc2VBZGRyZXNzKCk7IH0KIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAg
IHNpemVfdCBieXRlT2Zmc2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRl
TGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVM
ZW5ndGg7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGV0YWNoYWJsZShib29s
KTsKICAgICBib29sIGlzRGV0YWNoYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxl
OyB9CkBAIC05MiwxOSArOTMsMTggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgfkFycmF5QnVmZmVyVmlldygpOwogCiAgICAgLy8gSGVscGVyIHRvIHZlcmlmeSBieXRl
IG9mZnNldCBpcyBzaXplIGFsaWduZWQuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNl
dEFsaWdubWVudCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0aWMg
Ym9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
ZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKHNpemUg
LSAxKSk7CisgICAgICAgIHJldHVybiAhKGJ5dGVPZmZzZXQgJiAoZWxlbWVudFNpemUgLSAxKSk7
CiAgICAgfQogCi0gICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdl
IG9mIGFuIEFycmF5QnVmZmVyIGlzCi0gICAgLy8gd2l0aGluIHJhbmdlLgotICAgIHN0YXRpYyBi
b29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCBzaXplX3Qgc2l6ZSkKKyAgICAv
LyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZm
ZXIgaXMgd2l0aGluIHJhbmdlLgorICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3Ro
KGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQg
Ynl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBieXRlTGVu
Z3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRl
TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25lZCByZW1h
aW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0ZU9mZnNldCkgLyBzaXplOworICAgICAg
ICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8g
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7CiAgICAgICAgIGlmIChudW1FbGVtZW50
cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0MyArMTEzLDQ4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZm
ZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3Ro
KTsKIAotICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCBz
aXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsK
LSAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBk
YXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0
UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90
IGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBp
bmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5n
ZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFu
ZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUs
Ci0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpOworICAgIGlubGlu
ZSBib29sIHplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVM
ZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zmc2V0IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBm
cm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAgIC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVy
IG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlpbmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRz
KAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLAotICAgICAgICB1bnNpZ25lZCBh
cnJheUJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpvZmZzZXQsCi0gICAgICAgIHVuc2ln
bmVkICpudW1FbGVtZW50cykKKyAgICAgICAgc2l6ZV90IGFycmF5Qnl0ZU9mZnNldCwKKyAgICAg
ICAgc2l6ZV90ICpvZmZzZXQsCisgICAgICAgIHNpemVfdCAqbnVtRWxlbWVudHMpCiAgICAgewot
ICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZzZXQp
IC8gc2l6ZW9mKFQpOworICAgICAgICBzaXplX3QgbWF4T2Zmc2V0ID0gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAg
ICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewogICAgICAgICAgICAgKm9mZnNldCA9IGJ1
ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAqbnVtRWxlbWVudHMgPSAwOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICpvZmZzZXQgPSBhcnJheUJ5dGVPZmZz
ZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4oYnVm
ZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0Vs
ZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKKyAg
ICAgICAgQ2hlY2tlZFNpemUgYWRqdXN0ZWRPZmZzZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1
c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5
Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8
fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAg
ICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFsdWUoKTsKKyAgICAgICAgc2l6ZV90IHJl
bWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVv
ZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMs
ICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7
CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQg
OiA2MzsKKyNlbHNlCisgICAgdWludDMyX3QgbV9ieXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAg
ICBib29sIG1faXNEZXRhY2hhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7Cisg
ICAgVUNQVVJlZ2lzdGVyIG1fYnl0ZUxlbmd0aDsKIAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0g
Q2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8v
IFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0
aGUgYnl0ZSBvZmZzZXQuCkBAIC0xNjAsODEgKzE2NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0
SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBB
cnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5
dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAg
fHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAg
ICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0g
ICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3Vt
U21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVM
ZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50
OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1l
bW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0
ZUxlbmd0aCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6
OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNv
bnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQp
CiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9m
ZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZz
ZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJh
bmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwo
Ynl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEs
IGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZl
clZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdl
SW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0
ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwg
Ynl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAvLyBP
dXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFu
T3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGJhc2UgPSBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShkZXN0
aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQg
Ynl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3
Ojp6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3Ro
KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVP
ZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9m
ZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9m
IHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwoYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZz
ZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJy
YXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoCi0gICAgaW50IHN0YXJ0LCBp
bnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBs
ZW5ndGgpCi17Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXpl
OwotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwg
MCkKLSAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAg
ZW5kID0gMDsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUp
Ci0gICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKLSAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAg
IGVuZCA9IHN0YXJ0OwotICAgICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQp
OwotICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNpbmcgSlNDOjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCmluZGV4IDY4
ODNhMTdjNDcyZC4uZDM2MjQ1MGEyZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAtMTIwLDggKzEyMCw3IEBAIHN0YXRpYyB1bnNp
Z25lZCB2YWxpZGF0ZUF0b21pY0FjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIEpTQXJyCiAgICAgICAgIGFjY2Vzc0luZGV4ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0lu
ZGV4KGdsb2JhbE9iamVjdCwgImFjY2Vzc0luZGV4Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIDApOwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQodHlwZWRBcnJheVZpZXct
Pmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CisKICAgICBpZiAo
YWNjZXNzSW5kZXggPj0gdHlwZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7CiAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3Vu
ZHMgZm9yIGF0b21pYyBhY2Nlc3MuIl9zKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKaW5kZXggZGNjMmY1MDY0YWYyLi5mYmM5
ODQ3ZDJkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EYXRhVmlldzo6RGF0
YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKK0RhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAg
OiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3Ro
KQogewogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZp
ZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxE
YXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQog
ewotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBz
aXplX3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBjcmVh
dGUoV1RGTW92ZShidWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXggZGEwNmI0YmIyMTQ0Li4zNDAyNjU0MTAzMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFy
cmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNv
bnN0IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmll
dyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wg
bGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgZ2V0KHNpemVfdCBv
ZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihU
KSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVuc2lnbmVkJiBvZmZzZXQs
IGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIFQgcmVhZChz
aXplX3QmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIp
CiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRoaXMtPnRlbXBsYXRlIGdldDxUPihvZmZzZXQs
IGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAgICAgaWYgKCFzdGF0dXMgfHwgKnN0YXR1cykK
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0
bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgdm9pZCBzZXQoc2l6ZV90IG9m
ZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIp
CiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsg
c2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBEYXRhVmlldyhSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYmU3ZTZjMDUzNGZhLi41
YmU4MTY1ZjcyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDI0ICszMywyNCBAQCBuYW1lc3BhY2UgSlNDIHsK
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcg
ZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3Rh
dGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IHRyeUNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5p
bml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKICAgICAK
ICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KGJhc2VBZGRyZXNzKCkpOyB9CiAgICAgCi0g
ICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgdW5zaWdu
ZWQgb2Zmc2V0KQorICAgIGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiog
YXJyYXksIHNpemVfdCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0SW1wbChhcnJh
eSwgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBz
aXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBzZXRSYW5nZUltcGwoCiAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwKQEAgLTU4LDM5ICs1OCwzOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBj
b3VudCkKKyAgICBib29sIHplcm9SYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY291bnQpCiAg
ICAgewogICAgICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQgKiBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSksIGNvdW50ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB6ZXJvRmlsbCgpIHsgemVyb1JhbmdlKDAsIGxlbmd0
aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CisgICAgc2l6ZV90IGxl
bmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRlTGVuZ3RoKCkgLyBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRl
bShzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuIGRh
dGEoKVtpbmRleF07CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBk
b3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXQoc2l6ZV90IGluZGV4LCBkb3VibGUgdmFs
dWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2luZGV4XSA9IEFkYXB0
b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXROYXRp
dmUodW5zaWduZWQgaW5kZXgsIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0Cisg
ICAgdm9pZCBzZXROYXRpdmUoc2l6ZV90IGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZh
bHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1
ZTsKICAgICB9CiAKLSAgICBib29sIGdldFJhbmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRh
dGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wgZ2V0UmFuZ2UodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCBzaXplX3Qgb2Zmc2V0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGdldFJhbmdlSW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGRhdGEpLApAQCAtOTgsMTggKzk4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQog
Ci0gICAgYm9vbCBjaGVja0luYm91bmREYXRhKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50
KSBjb25zdAorICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
Y291bnQpIGNvbnN0CiAgICAgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5n
dGgoKTsKLSAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAmJiBv
ZmZzZXQgKyBjb3VudCA8PSBsZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0g
ICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA+PSBvZmZzZXQpOworICAgICAgICByZXR1cm4g
aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBjb3VudCwgdGhpcy0+bGVuZ3RoKCkpOwog
ICAgIH0KICAgICAKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShp
bnQgc3RhcnQpIGNvbnN0OwotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFy
cmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0gICAgCiAgICAgVHlwZWRBcnJheVR5cGUg
Z2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlw
ZVZhbHVlOwpAQCAtMTE4LDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmll
dyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7CiAKIHByaXZh
dGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBHZW5lcmljVHlwZWRBcnJh
eVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxl
bmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApp
bmRleCBhZTViZGQ4YzZhMzEuLmYxYTc2ZGZkM2JiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBl
ZEFycmF5VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdU
Rk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgobGVuZ3RoIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKQorUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3Vs
dCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00
Nyw3ICs0OCw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5
Q3JlYXRlKGFycmF5LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01
Niw3ICs1Nyw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewog
ICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAo
IWJ1ZmZlcikKQEAgLTc0LDcgKzc1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAg
ICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0
aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04NSw3ICs4Niw3IEBAIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5
Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwg
c2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcgKzEwMSw3IEBAIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8g
cmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2
IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciks
IDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0
YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWdu
ZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBl
bmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciog
YnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAg
ICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVP
ZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIs
IG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJy
YXlCdWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAKaW5kZXggODllYWViZDNjMmNjLi4zZDhlNDc0NTA2NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8g
PSB7CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3Ry
dWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgs
IHZvaWQqIHZlY3RvcikKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVj
dG9yKHZlY3RvciwgbGVuZ3RoKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQs
NyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCgKIH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWlu
dDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSwKICAgICBJ
bml0aWFsaXphdGlvbk1vZGUgbW9kZSkKICAgICA6IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCkBAIC04MSwxOCArODEsMTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6
OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICAvLyBEb24ndCBhbGxvdyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3Jl
IHRoYW4gMkdCLgotICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01B
WCkgLyBlbGVtZW50U2l6ZSkKKyAgICBDaGVja2VkU2l6ZSBzaXplID0gbGVuZ3RoOworICAgIHNp
emUgKj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUg
PiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXpl
X3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVf
dD4oZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5
TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0
b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwg
c2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwg
MCwgc2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChz
dGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5y
ZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplLnZhbHVlKCkpOwogICAgIAogICAgIG1fc3Ry
dWN0dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9kZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAg
LTEwMCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCkBAIC0xMTQsNyArMTE0LDcg
QEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNv
bnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoLCBEYXRhVmlld1RhZykKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwg
RGF0YVZpZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCiAgICAgLCBtX21vZGUoRGF0YVZpZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBA
QCBzdGF0aWMgaW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1
cm4gRWxlbWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQg
SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6ZV90IEpTQXJyYXlCdWZm
ZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENo
ZWNrZWQ8c2l6ZV90PiByZXN1bHQgPSBsZW5ndGgoKTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNp
emUodHlwZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRo
ZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0
b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4dHJhIHNhbml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJl
IGVuYWJsZWQuCiAgICAgcmV0dXJuIGxlbmd0aCgpICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNl
bmRpZgogfQogCiBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2Fz
dGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3NCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVy
Vmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7
Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXpl
X3QgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2Rl
KSB7CiAgICAgY2FzZSBGYXN0VHlwZWRBcnJheTogewpAQCAtMzE1LDggKzMyMiw4IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwo
KQogICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMt
Pmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOwor
ICAgIHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkg
ewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
aAppbmRleCBkZDAxZjdmODJhNTMuLjE0ZmE1YmJhNWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNp
bmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQs
IHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTEx
NywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVp
bnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHNpemVfdCBsZW5n
dGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAg
ICAgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aDsKKyAgICAgICAgcmVzdWx0ICo9
IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAt
IDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKSAmIH4oc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hl
Y2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAtMTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVj
dGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJv
RmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgs
IHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25N
b2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBj
b25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xv
dyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90
IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1
Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgICAgIFZNJiwg
U3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgICAgIHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcg
eyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAg
U3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAotICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CisgICAgICAgICAgICBz
aXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAK
ICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0K
ICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92
ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQotICAgICAgICB1aW50MzJfdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAgICAgIApAQCAtMTYyLDcgKzE2NCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICAgICAgdXNp
bmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0Nh
Z2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3ZlY3RvcjsKLSAgICAgICAgdWludDMyX3Qg
bV9sZW5ndGg7CisgICAgICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICAgICAgVHlwZWRBcnJheU1v
ZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogICAgIH07CkBAIC0x
OTAsMTEgKzE5MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0aCgpKTsgfQogICAgIHZvaWQqIHZlY3Rvcldp
dGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0VW5zYWZlKCk7
IH0KICAgICAKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwotICAgIGlubGluZSBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgaW5s
aW5lIHNpemVfdCBieXRlT2Zmc2V0KCk7CisgICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsK
KyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBzaXpl
X3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKICAgICAK
QEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5n
QnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3RvclB0ciBtX3ZlY3RvcjsKLSAgICB1aW50
MzJfdCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9sZW5ndGg7CiAgICAgVHlwZWRBcnJheU1vZGUg
bV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCAxZDA3MmI3MWFjYjcuLmQ4NWIzMjgz
MDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKQEAgLTk5LDcgKzk5LDcgQEAgaW5saW5lIFJlc3VsdFR5
cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICBwdHJkaWZmX3QgZGVs
dGEgPQogICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3RvcldpdGhvdXRQQUNWYWxp
ZGF0aW9uKCkpIC0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKTsKIAotICAg
IHVuc2lnbmVkIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWx0YSk7CisgICAgc2l6
ZV90IHJlc3VsdCA9IHN0YXRpY19jYXN0PHNpemVfdD4oZGVsdGEpOwogICAgIGlmIChyZXF1ZXN0
ZXIgPT0gTXV0YXRvcikKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVz
dWx0KSA9PSBkZWx0YSk7CiAgICAgZWxzZSB7CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBpbmxpbmUg
UmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9m
ZnNldCgpCitpbmxpbmUgc2l6ZV90IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsK
LSAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgdW5zaWduZWQ+KCk7CisgICAgcmV0
dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHNpemVfdD4oKTsKIH0KIAotaW5saW5lIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVu
dGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25j
dXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAgICByZXR1cm4gYnl0
ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+PigpOwog
fQogCiBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRv
V3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggYjFlYTlkYTBmZTRjLi5mNmM0NTQzZmUxMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0
YXRlLmg+CiAKQEAgLTI5OCw2ICsyOTksNyBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCB0b0ludDMy
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9VSW50MzIoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAgICBzaXplX3QgdG9UeXBlZEFycmF5SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OwogICAgIGRvdWJs
ZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggMzRlYTIx
NDYwYTBkLi4zYjNhODA5NjkzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjksMTQgKzY5LDQ3IEBAIGlubGluZSB1aW50
MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBj
YW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYg
KGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKKworICAgIGlmIChp
c0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMyKCk7CisKKyAgICBpZiAoZCA+IHN0YXRp
Y19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkgewog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU0M6OnRvSW50MzIoZCkpOworfQorCitpbmxpbmUgc2l6ZV90IEpTVmFsdWU6OnRvVHlwZWRB
cnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9y
TmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBkID0gdG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsK
KyAgICBpZiAoZCA8PSAtMSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5h
bWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7CisKKyAgICBpZiAoZCA+IHN0
YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZX0JVRkZFUl9TSVpFKSkgeworICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxsIG9mIHRoaXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0
byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBvbiAxPDwzMi4KKyAgICBzaXplX3Qgb3V0cHV0T2Zm
c2V0ID0gMDsKKyAgICBkb3VibGUgaW5wdXRPZmZzZXQgPSAwOworICAgIHNpemVfdCBpbnQzMk1h
eCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIGlmIChkID4gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihpbnQzMk1heCkpIHsKKyAgICAgICAgb3V0cHV0T2Zmc2V0ID0gaW50
MzJNYXg7CisgICAgICAgIGlucHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgfQorICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgb3V0cHV0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
dGF0aWNfY2FzdDx1aW50MzJfdD4oSlNDOjp0b0ludDMyKGQgLSBpbnB1dE9mZnNldCkpKSk7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCA2ZmFi
NDY1ZGQzYjkuLmRmZDZhNTExZDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIEpTRGF0YVZpZXc6OkpTRGF0YVZp
ZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0LCBBcnJheUJ1ZmZlciogYnVm
ZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNy
ZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3Ojpj
cmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQp
CitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3Ojpj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcq
IEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCkK
IHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNP
YmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2Jh
bE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCkKIHsKICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNE
YXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKK2Jv
b2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUp
CiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDJjNzg1ZTQ3
NjExYS4uYTVlNzhjNDY5YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDYsMTUgKzQ2LDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMsIHdo
aWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCiAgICAg
Ly8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdlIGRvIGVsc2V3aGVyZS4K
LSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcq
IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25l
ZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRp
YWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAg
c3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNp
emVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09i
amVjdCosIHNpemVfdCwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXRJbmRleChKU0dsb2Jh
bE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXIqIHBvc3Np
Ymx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBBcnJheUJ1
ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCA5NDkwNjI0N2VhNjUu
LmUwZmJjNTJmODc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2Qg
bXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQi
KTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRl
eChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBm
YWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5
aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0g
ICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBzaXplX3Qg
Ynl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBi
eXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9m
IGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIsNyArMTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
c2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUg
YSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAg
c2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFs
T2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2Yo
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgRW5jb2RlZEpTVmFs
dWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1l
bnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVt
ZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVu
dFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAgICAgICAg
bGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0Jvb2xlYW4o
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBp
ZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4g
ZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0g
ZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxl
bmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+
IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4uZWExZWY5YzEzZmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2lu
Y2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyogZ2V0Qmln
VWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAgICBTdHJ1Y3R1cmUqIFMgICAgIC8vIGZyb20g
SlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAgICAvLyBmcm9tIEpTT2JqZWN0CiAvLyAgICAg
RWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJfdCBMCisvLyAgICAgc2l6ZV90IEwKIC8vICAg
ICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBv
ZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1FOiBNYWtlCisvLyBUaGVzZSBmaWVsZHMg
dGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UK
IC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBCIGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBt
YXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZsb3ciIGRhdGEgZm9yCkBAIC0xMDMsMTQg
KzEwNCwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1l
bnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogCi0gICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25l
ZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0
ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVf
dCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0
aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2
b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgp
OworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3Ry
dWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5
cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CisgICAgc2l6
ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKTsgfQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQogICAg
IAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIHR5cGVkVmVjdG9yKCkgY29uc3QK
QEAgLTEyMiw0NiArMTIzLDQ2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4odmVjdG9yKCkpOwogICAgIH0KIAotICAgIGJvb2wg
aW5Cb3VuZHModW5zaWduZWQgaSkgY29uc3QKKyAgICBib29sIGluQm91bmRzKHNpemVfdCBpKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0aDsKICAgICB9CiAKICAgICAv
LyBUaGVzZSBtZXRob2RzIGFyZSBtZWFudCB0byBtYXRjaCBpbmRleGVkIGFjY2VzcyBtZXRob2Rz
IHRoYXQgSlNPYmplY3QKICAgICAvLyBzdXBwb3J0cyAtIGhlbmNlIHRoZSBzbGlnaHQgcmVkdW5k
YW5jeS4KLSAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAg
IGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIGluQm91bmRzKGkpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAg
ICB9Ci0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1
ZSkgY29uc3QKKyAgICBib29sIGNhblNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2
YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGggJiYgdmFsdWUu
aXNOdW1iZXIoKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQogICAg
IAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1
ZSh1bnNpZ25lZCBpKSBjb25zdAorICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhR
dWlja2x5QXNOYXRpdmVWYWx1ZShzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChpIDwgbV9sZW5ndGgpOwogICAgICAgICByZXR1cm4gdHlwZWRWZWN0b3IoKVtpXTsKICAgICB9
CiAgICAgCi0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAg
ICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseShzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBBZGFwdG9yOjp0b0pTVmFsdWUobnVsbHB0ciwgZ2V0SW5kZXhRdWlja2x5QXNOYXRp
dmVWYWx1ZShpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRp
dmVWYWx1ZSh1bnNpZ25lZCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQorICAgIHZv
aWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShzaXplX3QgaSwgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAg
ICAgICB0eXBlZFZlY3RvcigpW2ldID0gdmFsdWU7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0
SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRl
eFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQo
IXZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVl
KGksIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KHZhbHVlKSk7CiAgICAgfQogICAgIAotICAg
IGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaSwg
SlNWYWx1ZSBqc1ZhbHVlKQorICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgc2l6ZV90IGksIEpTVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKQEAgLTE3Niw5ICsxNzcsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZl
RnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkg
eyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVl
KTsgfQorICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1
ZSk7CisgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRh
cHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0
dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOyB9
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZy
b21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7
CisgICAgfQogCiAgICAgdm9pZCBzb3J0KCkKICAgICB7CkBAIC0xOTgsMjEgKzIwNSwxOCBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2ts
eSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBib29sIGNhbkFjY2Vzc1Jh
bmdlUXVpY2tseShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3Ro
IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVyZmxvdwotICAgICAgICAgICAg
JiYgb2Zmc2V0ICsgbGVuZ3RoID49IG9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxl
clRoYW5PckVxdWFsKG9mZnNldCwgbGVuZ3RoLCBtX2xlbmd0aCk7CiAgICAgfQogICAgIAogICAg
IC8vIExpa2UgY2FuU2V0UXVpY2tseSwgZXhjZXB0OiBpZiBpdCByZXR1cm5zIGZhbHNlLCBpdCB3
aWxsIHRocm93IHRoZQogICAgIC8vIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KLSAgICBib29sIHZh
bGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1
bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCByZXR1cm5zIGZhbHNlCiAgICAgLy8gdGhlbiBp
dCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4KLSAgICBib29sIHNldChKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBvYmplY3RPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUp
OworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNPYmplY3Qq
LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSA9IENvcHlUeXBl
OjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRh
cHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJbXBsKCk7CkBAIC0zMTgsOCArMzIyLDggQEAg
cHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9u
IGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9yLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhl
ckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKKyAgICAgICAgc2l6ZV90IG9i
amVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUpOwogCiAgICAgLy8gVGhlIEVDTUEg
NiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5nIHBvaW50IFR5cGVkIEFycmF5cyBzaG91bGQgaGF2
ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgogICAgIC8vCkBAIC0zNDksNyArMzUzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHB1cmlmeUFycmF5KCkKICAgICB7CiAgICAgICAgIEVsZW1lbnRUeXBl
KiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGVuZ3Ro
OyBpKyspCiAgICAgICAgICAgICBhcnJheVtpXSA9IHB1cmlmeU5hTihhcnJheVtpXSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRl
eCBkMjU4NDA2N2U4M2YuLjMzNmYxYWVlM2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xNDMsNyArMTQzLDcgQEAgaW5saW5lIEpTQXJy
YXlCdWZmZXIqIGNvbnN0cnVjdEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotaW5saW5lIEpT
T2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNW
YWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNpZ25lZCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGxlbmd0aE9wdCkKK2lubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgc2l6ZV90IG9mZnNl
dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aE9wdCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtMTU3LDcgKzE1Nyw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IDA7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSAwOwogICAgICAgICBpZiAobGVuZ3RoT3B0KQog
ICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAgICAgIGVsc2UgewpA
QCAtMTgyLDcgKzE4Miw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgLy8gLSBBIHBy
aW1pdGl2ZS4gVGhpcyBjcmVhdGVzIGEgbmV3IHR5cGVkIGFycmF5IG9mIHRoYXQgbGVuZ3RoIGFu
ZCB6ZXJvLWluaXRpYWxpemVzIGl0LgogCiAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGZpcnN0VmFsdWUpKSB7Ci0gICAgICAgIHVuc2lnbmVk
IGxlbmd0aDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKICAgICAgICAgSlNBcnJheUJ1ZmZlciog
Y3VzdG9tQnVmZmVyID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoaXNUeXBlZFZpZXcob2JqZWN0
LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSB7CkBAIC0yNTAsNyArMjUw
LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBmaXJzdFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAibGVuZ3RoIik7CisgICAgc2l6ZV90IGxlbmd0aCA9IGZpcnN0VmFsdWUudG9UeXBlZEFy
cmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBWaWV3Q2xh
c3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbGVuZ3RoKSk7CiB9CkBAIC0yNzUs
OCArMjc1LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogICAgIH0KIAogICAgIEpTVmFsdWUg
Zmlyc3RWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgdW5zaWdu
ZWQgb2Zmc2V0ID0gMDsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGggPSBzdGQ6
Om51bGxvcHQ7CisgICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5
QnVmZmVyKj4odm0sIGZpcnN0VmFsdWUpICYmIGFyZ0NvdW50ID4gMSkgewogICAgICAgICBvZmZz
ZXQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW5kZXgoZ2xvYmFsT2JqZWN0
LCAiYnl0ZU9mZnNldCIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKQEAgLTI4NSw3ICsyODUsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3Qq
CiAgICAgICAgICAgICAvLyBJZiB0aGUgbGVuZ3RoIHZhbHVlIGlzIHByZXNlbnQgYnV0IHVuZGVm
aW5lZCwgdHJlYXQgaXQgYXMgbWlzc2luZy4KICAgICAgICAgICAgIEpTVmFsdWUgbGVuZ3RoVmFs
dWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwogICAgICAgICAgICAgaWYgKCFs
ZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVu
Z3RoVmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsIFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3Jh
Z2VUeXBlID09IFR5cGVEYXRhVmlldyA/ICJieXRlTGVuZ3RoIiA6ICJsZW5ndGgiKTsKKyAgICAg
ICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxP
YmplY3QsIFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldyA/
ICJieXRlTGVuZ3RoIiA6ICJsZW5ndGgiKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA0NTAyMzg3OTJkMTAuLmEzZGRjMWY4
MzZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5o
IgogI2luY2x1ZGUgIlR5cGVkQXJyYXlzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtNDcsNyArNDgsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVX
aXRoRmFzdFZlY3RvcigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5n
dGgsIHZvaWQqIHZlY3RvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3Ip
OwpAQCAtNzgsNyArNzksNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgotSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBs
ZW5ndGgpCitKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKQEAgLTk5LDE3ICsxMDAsMTcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6
OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkp
IHsKKyAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoLCBlbGVtZW50U2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
ICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxp
Z25tZW50KGJ5dGVPZmZzZXQsIHNpemUpKSB7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZl
cmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgZWxlbWVudFNpemUpKSB7CiAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KQEAgLTE0NSw3ICsxNDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVuc2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9y
Piogb3RoZXIsCisgICAgc2l6ZV90IG90aGVyT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlw
ZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTgsNyArMjE5LDcgQEAgYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAg
ICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhlci0+ZXhpc3RpbmdCdWZmZXIoKQogICAg
ICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBv
dGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUgPT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0
KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBz
ZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGks
IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAg
ICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZz
ZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogICAgIC8vIE5vdyB3ZSBlaXRoZXIgaGF2
ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAoMkIpLgogICAgIGlmIChl
bGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07
KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAg
ICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0
b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVW
YWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAog
ICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5l
LiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFu
c2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykg
eworICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgdHJhbnNmZXJC
dWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAg
ICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9m
ZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAg
Zm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9O
YXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3Qq
IG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBl
IHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwg
SlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29w
eVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZv
KiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZh
c3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisg
ICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ug
d2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90
aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAg
bGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAg
LTMxMiw5ICszMTMsMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ugd29uJ3QgZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkg
d2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBtb3JlCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpKTsKICAgICAgICAgLy8gV2Ug
Y291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQgcmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0
KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldElu
ZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFsdWUpOwogICAgICAgICAgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNGMwZWJkMWY2MTY1Li5hOTc0NzM3M2M0
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNjAsNiAr
NjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIEV4Y2VwdGlv
bjsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEludGVybmFsRnVuY3Rpb247CkBAIC0yMTEs
MTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElu
bGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewogICAgICAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHBy
b3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBzZXRJbmRleFF1aWNrbHkodm0sIHBy
b3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICBpZiAodHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
CiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0y
ODksNyArMjg4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBnZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldEluZGV4
UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEFycmF5UHJvZmlsZSogPSBudWxscHRyKSBj
b25zdDsKICAgICAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25z
dAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAotICAgIEpTVmFsdWUgdHJ5
R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CisKKyAgICAvLyBVc2VzIHRoZSAob3B0
aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJp
dCB3aGVuIHJlbGV2YW50CisgICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQg
aSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKSBjb25zdAogICAgIHsKICAg
ICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAg
ICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19J
TkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGlmIChjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KGkpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KGkpOworICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KGksIGFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgYnJlYWs7CkBAIC00
MTEsMzUgKzQxMSw3MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0
LCBpKTsKICAgICB9CiAKLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
dW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0OwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSk7Ci0gICAgICAgIAotICAgIGJvb2wgY2FuU2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1
aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUoVk0mLCB1bnNpZ25lZCwgSlNWYWx1ZSk7
CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRpY2F0ZSBzdWNjZXNzCisgICAgLy8gVXNlIHRo
ZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFy
cmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgYm9vbCB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKKyAgICBib29sIHRyeVNl
dEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxl
KiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ01vZGUo
KSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAg
IHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHYsIGFycmF5
UHJvZmlsZSk7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJf
SU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElO
R19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19U
WVBFUzoKKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsK
KyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgewor
ICAgICAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJm
b3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzogeworICAgICAg
ICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0
aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYpOworICAgICAgICAgICAgaWYgKGkgPj0g
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNl
dFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0
aGlzLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNh
c2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYg
KGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAg
IGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwg
dik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBpZiAodmFsdWUg
IT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hp
bGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91
YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZs
eS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNM
ZW5ndGgoaSArIDEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRo
QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToK
ICAgICAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAg
cmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKQotICAg
ICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoaXNDb3B5T25Xcml0ZShpbmRleGlu
Z01vZGUoKSkpCisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
LT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3Jb
aV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5
U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQ29weU9uV3Jp
dGUoaW5kZXhpbmdNb2RlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KLSAgICAgICAgCisKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVu
c2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5
ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDZlMWJiMWI1OWYxZS4uNWNlZTZjZjg3OGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAt
NDY1LDIxICs0NjUsMTUgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QKICAgICB9CiB9CiAKLWlubGluZSBib29s
IEpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpT
VmFsdWUgdmFsdWUpIGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkg
Y29uc3QKIHsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewotI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZ
X1RZUEUobmFtZSkgXAotICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOlwKLSAgICAgICAgcmV0
dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBuYW1lICMjIEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRl
eFF1aWNrbHkoaSwgdmFsdWUpOwotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VY
Q0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQotI3VuZGVmIENBU0VfVFlQ
RURfQVJSQVlfVFlQRQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci19CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBpZiAoaSA+IEFycmF5UHJvZmls
ZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggJiYgYXJyYXlQcm9maWxlKQorICAgICAgICBh
cnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShhcnJheVByb2ZpbGUpOworI2VuZGlmCiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0
OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0Ci17CiAgICAg
c3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwK
ICAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wKQEAgLTUxMiw3ICs1MDYsNTAgQEAgaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KLSAgICAKKworaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5n
VHlwZShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKK3sKKyAgICBBcnJheVN0b3JhZ2Uq
IHN0b3JhZ2UgPSB0aGlzLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9yYWdlKCk7CisgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+JiB4ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgSlNWYWx1ZSBv
bGQgPSB4LmdldCgpOworICAgIHguc2V0KHZtLCB0aGlzLCB2KTsKKyAgICBpZiAoIW9sZCkgewor
ICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CisgICAgICAgIGlmIChpID49
IHN0b3JhZ2UtPmxlbmd0aCgpKQorICAgICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAx
KTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIEpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUpCit7CisgICAgc3dpdGNoICh0eXBlKCkpIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorI2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHsg
XAorICAgICAgICBpZiAoKGkgPiBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVu
Z3RoKSAmJiBhcnJheVByb2ZpbGUpXAorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlC
ZUxhcmdlVHlwZWRBcnJheSgpO1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbHNlCisjZGVmaW5l
IFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSkgZG8geyBcCisgICAgVU5VU0VE
X1BBUkFNKGFycmF5UHJvZmlsZSk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2VuZGlmCisjZGVm
aW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCisgICAgY2FzZSBuYW1lICMjIEFycmF5
VHlwZSA6IHsgXAorICAgICAgICBhdXRvKiB0eXBlZEFycmF5ID0ganNDYXN0PEpTICMjIG5hbWUg
IyMgQXJyYXkgKj4odGhpcyk7XAorICAgICAgICBpZiAoIXR5cGVkQXJyYXktPmNhblNldEluZGV4
UXVpY2tseShpLCB2KSlcCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7XAorICAgICAgICB0eXBl
ZEFycmF5LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7XAorICAgICAgICBVUERBVEVfQVJSQVlfUFJP
RklMRShpLCBhcnJheVByb2ZpbGUpO1wKKyAgICAgICAgcmV0dXJuIHRydWU7XAorICAgIH0KKyAg
ICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBF
RF9BUlJBWV9UWVBFKQorI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQorI3VuZGVmIFVQREFU
RV9BUlJBWV9QUk9GSUxFCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKwogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5
KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICNp
ZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oCmluZGV4IGNlNzMwZjNiZjk2NS4uMDkxOWU3MjE4NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC04OTgsOCArODk4LDggQEAgQUxXQVlTX0lO
TElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdpdGhJbmRleChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0MKIHsKICAgICBpZiAoYmFzZS0+aXNPYmplY3QoKSkgewogICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmNh
bkdldEluZGV4UXVpY2tseShpbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGluZGV4KSk7CisgICAgICAgIGlmIChKU1ZhbHVl
IHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGluZGV4KSkKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKICAgICBpZiAoaXNKU1N0
cmluZyhiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4u
YjdkOGM5ZmNmNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGFnZUNvdW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3Vu
dC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNs
dWRlICJBcnJheUJ1ZmZlci5oIgorCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewpAQCAtOTYsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IHBhZ2VTaXplID0gNjQgKiBLQjsKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwg
MzIpIC8gcGFnZVNpemUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNv
dW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSAvIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihwYWdlU2l6ZSkpOwogCiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBlNWI3Y2Q0NjYxODcuLmU2YWE3YTIwZWJjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMS0xMC0xMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisg
ICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0
NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgTWFkZSBz
b21lIG9mIENoZWNrZWRBcml0aG1ldGljIGNvbnN0ZXhwciwgYW5kIGFkZGVkIGlzU3VtU21hbGxl
clRoYW5PckVxdWFsIHNpbmNlIGl0IGlzIGEgY29tbW9ubHkgdXNlZCB0ZXN0IGluIEFycmF5QnVm
ZmVyIGFuZCBlYXN5IHRvIGdldCB3cm9uZyBpbiB0ZXJtcyBvZiBvdmVyZmxvdy4KKworICAgICAg
ICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjppc0luQm91bmRzKToK
KyAgICAgICAgKFdURjo6Y29udmVydFNhZmVseSk6CisgICAgICAgIChXVEY6OmlzU3VtU21hbGxl
clRoYW5PckVxdWFsKToKKwogMjAyMS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBub24tSEFWRShDRk5FVFdPUktfTlNV
UkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFURSkgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1l
dGljLmgKaW5kZXggZmYxNTY1ZjExZGVkLi5lZmFiNGFkM2JjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCwxNCArMTQ0LDE0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+PjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIGlzVGFyZ2V0QmlnZ2VyID0gc2l6ZW9mKFRh
cmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJvb2wgdGFyZ2V0U2lnbmVkID0gc3RkOjpudW1lcmlj
X2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQsIGJvb2wgc291cmNlU2lnbmVkID0gc3RkOjpudW1l
cmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWduZWQ+IHN0cnVjdCBCb3VuZHNDaGVja2VyOwogdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hl
Y2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0YXRpYyBi
b29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5C
b3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNv
IGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24g
dG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPFRhcmdldD46Om1heCgpOwogICAgIH0KIH07CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBm
YWxzZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAg
IHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lv
biB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1pbigpIDw9IHZhbHVlICYmIHZh
bHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CkBAIC0xNTksNyArMTU5
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gV2hlbiBjb252ZXJ0aW5nIHZhbHVlIHRvIHVuc2lnbmVkIFNv
dXJjZSwgdmFsdWUgd2lsbCBiZWNvbWUgYSBiaWcgdmFsdWUgaWYgdmFsdWUgaXMgbmVnYXRpdmUu
CiAgICAgICAgIC8vIENhc3RlZCB2YWx1ZSB3aWxsIGJlY29tZSBiaWdnZXIgdGhhbiBUYXJnZXQ6
Om1heCBhcyBTb3VyY2UgaXMgYmlnZ2VyIHRoYW4gVGFyZ2V0LgpAQCAtMTY4LDcgKzE2OCw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5k
c0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIC8vIFRoZSB1bnNpZ25lZCBTb3VyY2UgdHlwZSBoYXMgZ3JlYXRlciBwcmVj
aXNpb24gdGhhbiB0aGUgdGFyZ2V0IHNvIG1heChUYXJnZXQpIC0+IFNvdXJjZSB3aWxsIHdpZGVu
LgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291cmNlPihzdGQ6Om51bWVy
aWNfbGltaXRzPFRhcmdldD46Om1heCgpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2Us
IGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBi
b29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNp
Z24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3Vu
ZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAg
ICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCBmYWxzZT4g
ewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGFy
Z2V0IGlzIHNpZ25lZCB3aXRoIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uIElmIHN0cmljdGx5
IGdyZWF0ZXIsIGl0IGlzIGFsd2F5cyBzYWZlLgogICAgICAgICBpZiAoc2l6ZW9mKFRhcmdldCkg
PiBzaXplb2YoU291cmNlKSkKQEAgLTIwMiwxOSArMjAyLDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgdHJ1ZT4g
ewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGFy
Z2V0IGlzIHVuc2lnbmVkIHdpdGggZ3JlYXRlciBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB2
YWx1ZSA+PSAwOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVu
YW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQor
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5l
IGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQogewogICAgIHJldHVybiBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlPjo6aW5Cb3VuZHModmFsdWUpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9v
bCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQogewogICAg
IGlmICghaXNJbkJvdW5kczxUYXJnZXQ+KGlucHV0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdz
PiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJncy4uLiBhcmdzKQogICAgIHJldHVybiBjaGVja2Vk
UHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVyZmxvd2VkKCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoVCBhLCBUIGIsIFQgYm91bmQpCit7
CisgICAgQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4gc3VtID0gYTsKKyAgICBzdW0gKz0gYjsK
KyAgICByZXR1cm4gIXN1bS5oYXNPdmVyZmxvd2VkKCkgJiYgc3VtLnZhbHVlKCkgPD0gYm91bmQ7
Cit9CisKIH0KIAogdXNpbmcgV1RGOjpBc3NlcnROb092ZXJmbG93OwpAQCAtMTAxNywzICsxMDI0
LDQgQEAgdXNpbmcgV1RGOjpkaWZmZXJlbmNlT3ZlcmZsb3dzOwogdXNpbmcgV1RGOjppc0luQm91
bmRzOwogdXNpbmcgV1RGOjpwcm9kdWN0T3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpzdW1PdmVyZmxv
d3M7Cit1c2luZyBXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgK
aW5kZXggOWM5ZjgwZTNmZDFiLi5iOTRkYmU4OTEwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtVXNlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApAQCAt
MjcsNiArMjcsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKy8vIFRoaXMgaXMgdG8gZ2V0IFNJWkVf
TUFYLCB3aGljaCBpbiB0dXJuIGlzIHVzZWQgZm9yIFVTRV9MQVJHRV9UWVBFRF9BUlJBWVMKKyNp
ZmRlZiBfX2NwbHVzcGx1cworI2luY2x1ZGUgPGNzdGRpbnQ+CisjZWxzZQorI2luY2x1ZGUgPHN0
ZGludC5oPgorI2VuZGlmCisKICNpZm5kZWYgV1RGX1BMQVRGT1JNX0dVQVJEX0FHQUlOU1RfSU5E
SVJFQ1RfSU5DTFVTSU9OCiAjZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
IGluc3RlYWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIKICNlbmRpZgpAQCAtMTQxLDYgKzE0OCwx
MiBAQAogI2RlZmluZSBVU0VfSlNWQUxVRTMyXzY0IDEKICNlbmRpZgogCisjaWYgU0laRV9NQVgg
PT0gVUlOVDY0X01BWAorI2RlZmluZSBVU0VfTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisj
ZGVmaW5lIFVTRV9MQVJHRV9UWVBFRF9BUlJBWVMgMAorI2VuZGlmCisKICNpZiBVU0UoSlNWQUxV
RTY0KQogLyogRklYTUU6IEVuYWJsZSBCSUdJTlQzMiBvcHRpbWl6YXRpb24gYWdhaW4gYWZ0ZXIg
d2UgZW5zdXJlIFNwZWVkb21ldGVyMiBhbmQgSmV0U3RyZWFtMiByZWdyZXNzaW9ucyBhcmUgZml4
ZWQuICovCiAvKiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0Nzc3
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMmM2ZDE1ZWRkMTNjLi5iZDY4NWQzYTdlMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MyBAQAorMjAyMS0xMC0xMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAg
IHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisK
KyAgICAgICAgU29tZSBwYXJ0cyBvZiBXZWJDb3JlIHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxk
IG5vdCBidWlsZCBhZnRlciBJIG1hZGUgdGhlIGxlbmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFy
cmF5cyByZXR1cm4gVUNQVVJlZ2lzdGVyIGluc3RlYWQgb2YgdWludDMyX3QuCisgICAgICAgIE1v
c3QgZml4ZXMgd2VyZSB0cml2aWFsLCB0aGUgb25seSBleGNlcHRpb24gaXMgU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCwgd2hlcmUgSSBoYWQgdG8gaW5jcmVtZW50IHRoZSB2ZXJzaW9uIG51bWJl
ciwgYXMgQXJyYXlCdWZmZXIgKGFuZCBBcnJheUJ1ZmZlclZpZXdzKSBub3cgd3JpdGUvcmVhZCB0
aGVpciBsZW5ndGggaW4gYSA2NC1iaXQgZmllbGQgKGFuZCBzYW1lIGZvciB0aGUgYnl0ZU9mZnNl
dCBvZiBBcnJheUJ1ZmZlclZpZXcpLgorCisgICAgICAgIEkgYWxzbyBoYWQgdG8gYWRkIGEgdGVz
dCBpbiBQaXhlbEJ1ZmZlci5jcHAgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgQXJyYXlCdWZmZXIgaXQg
d2lsbCB0cnkgdG8gYWxsb2NhdGUgaXMgPCBJTlQzMl9NQVguCisgICAgICAgIE90aGVyd2lzZSwg
dGhlIHRlc3QgTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hh
cGUtb3V0c2lkZS1pbWFnZWRhdGEtb3ZlcmZsb3cuaHRtbCB3aGljaCBjaGVja3MgdGhhdCB2ZXJ5
IGxhcmdlIGltYWdlcyBhcmUgcHJvcGVybHkgcmVqZWN0ZWQgd2l0aG91dCBjcmFzaGluZywgd291
bGQgdGltZW91dC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZSBjb2RlIGlzIGFscmVh
ZHkgZXh0ZW5zaXZlbHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgYW5kIEkgaW1wbGVtZW50
ZWQgbm8gbmV3IGZlYXR1cmVzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBBcnJheUJ1ZmZlclZpZXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVySW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3SW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlldyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZSk6CisgICAgICAgICogZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVl
dWU6OmVucXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKwogMjAyMS0xMC0xMiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIHRoZSBTY3JvbGxp
bmdUcmVlIHRyYWNrIG5vZGVzIHdpdGggYW5pbWF0ZWQgc2Nyb2xscwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCBjYjdlODRkNDUzODMu
LmIxOGQ4ZmQ2YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgZGVzdGluYXRpb24s
CiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9
OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsK
KyAgICBzaXplX3QgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50
ID0gc3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAg
ICBjb25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyNiw3ICsyMjYs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbChSZWY8Rmxv
YXQzMkFycmF5PiYmIHNvdXJjZSwgdW5zaWduZQogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0
YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9
IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgc2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0
aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKHNvdXJjZS5nZXQoKS5sZW5n
dGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBzb3VyY2UtPmRhdGEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVB
bmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXIuY3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uZDUzYjllNjQ0ZWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAg
LTE5Niw4ICsxOTYsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lE
YXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAgZG9GRlRBbmFseXNpc0lmTmVj
ZXNzYXJ5KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxpbmVhciBtYWduaXR1ZGUgdG8g
dW5zaWduZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSBtYWdu
aXR1ZGVCdWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKHNvdXJj
ZUxlbmd0aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IHNvdXJjZUxl
bmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25M
ZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5ndGggPSBz
dGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3Ro
ID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1fbWF4RGVj
aWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBtX21pbkRl
Y2liZWxzKTsKICAgICAgICAgY29uc3QgZG91YmxlIG1pbkRlY2liZWxzID0gbV9taW5EZWNpYmVs
czsKQEAgLTIyNyw4ICsyMjgsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGlt
ZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZm
dFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRp
b25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGlu
YXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUo
KTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5n
dGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdv
b2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1
ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2Qp
OwpAQCAtMjUxLDggKzI1Myw5IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVE
b21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVkIGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7
Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXku
bGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJy
YXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAg
c2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAg
ICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9p
bnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6
ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRCdWZmZXJHb29kKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CmluZGV4IGExYThmYTI5MjljYS4uMTgyMjFlMzVhYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTk0LDYgKzk0
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XYXNtTW9kdWxlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KQEAgLTM0Miw4ICszNDMsOSBAQCBzdGF0aWMgdW5zaWduZWQgY291bnRVc2FnZXMoQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVyc2lvbiA3LiBhZGRlZCBzdXBwb3J0IGZvciBG
aWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNpb24gOC4gYWRkZWQgc3VwcG9y
dCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDkuIGFk
ZGVkIHN1cHBvcnQgZm9yIEltYWdlQml0bWFwIGNvbG9yIHNwYWNlLgorICogVmVyc2lvbiAxMC4g
Y2hhbmdlZCB0aGUgbGVuZ3RoIChhbmQgb2Zmc2V0cykgb2YgQXJyYXlCdWZmZXJzIChhbmQgQXJy
YXlCdWZmZXJWaWV3cykgZnJvbSAzMiB0byA2NCBiaXRzCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZl
cnNpb24gPSAxMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBUZXJtaW5hdG9yVGFnID0gMHhGRkZG
RkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb25JbmRleFByb3BlcnRpZXNUYWcgPSAweEZGRkZGRkZE
OwpAQCAtMzk5LDcgKzQwMSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4
Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IE9iamVjdFJlZmVyZW5jZQogICogICAgfCBN
ZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFycmF5QnVm
ZmVyCi0gKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5
dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZmZXIgfCBP
YmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZp
ZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0X3Q+IDxieXRlTGVuZ3RoOnVpbnQ2NF90PiAoQXJy
YXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCiAgKiAgICB8IENyeXB0b0tleVRhZyA8d3JhcHBl
ZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRle3dyYXBwZWRLZXlMZW5ndGh9PgogICog
ICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0CkBAIC00NjMsNyArNDY1LDcgQEAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAg
IE9iamVjdFJlZmVyZW5jZVRhZyA8b3BJbmRleDpJbmRleFR5cGU+CiAgKgogICogQXJyYXlCdWZm
ZXIgOi0KLSAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250ZW50czpi
eXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQ2NF90PiA8Y29u
dGVudHM6Ynl0ZXtsZW5ndGh9PgogICogICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6
dWludDMyX3Q+CiAgKiAgICBTaGFyZWRBcnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAg
KgpAQCAtOTk4LDggKzEwMDAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcgPSB0
b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXJWaWV3KHZtLCBvYmopOwotICAgICAgICB3cml0ZShz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCkpKTsKLSAg
ICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxl
bmd0aCgpKSk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVPZmZzZXQgPSBhcnJheUJ1ZmZlclZpZXct
PmJ5dGVPZmZzZXQoKTsKKyAgICAgICAgd3JpdGUoYnl0ZU9mZnNldCk7CisgICAgICAgIHVpbnQ2
NF90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAg
d3JpdGUoYnl0ZUxlbmd0aCk7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBhcnJheUJ1ZmZlclZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgIGlm
ICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6VmFsaWRhdGlvbkVycm9yOwpAQCAtMTEzMSw4ICsxMTM1LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYnVmZmVyLT5yZXNvbHV0aW9uU2NhbGUo
KSkpOwogICAgICAgICB3cml0ZShidWZmZXItPmNvbG9yU3BhY2UoKSk7CiAKLSAgICAgICAgd3Jp
dGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpKTsKLSAg
ICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRh
KCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgQ2hlY2tlZFVpbnQzMiBi
eXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgaWYgKGJ5dGVM
ZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAgICAgd3JpdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQpAQCAtMTI2Myw4
ICsxMjcyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoSW1hZ2VEYXRhVGFn
KTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0aCgpKTsKICAgICAgICAgICAgICAg
ICB3cml0ZShkYXRhLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0
YSgpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgp
LCBkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIENoZWNrZWRVaW50MzIg
ZGF0YUxlbmd0aCA9IGRhdGEtPmRhdGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZGF0YUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdy
aXRlKGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRh
KCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmNvbG9yU3BhY2Uo
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzEx
LDggKzEzMjUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRhZyk7Ci0gICAgICAgICAgICAg
ICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3Jp
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBieXRlTGVu
Z3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShi
eXRlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgpOwogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJp
dHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpAQCAtMTUwMiw3ICsxNTE3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4obV9idWZmZXIsIGkpOwogICAgIH0KIAotICAg
IHZvaWQgd3JpdGUodW5zaWduZWQgbG9uZyBsb25nIGkpCisgICAgdm9pZCB3cml0ZSh1aW50NjRf
dCBpKQogICAgIHsKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4obV9idWZmZXIsIGkpOwogICAg
IH0KQEAgLTIzOTEsNyArMjQwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGJvb2wgcmVhZCh1bnNpZ25lZCBsb25nIGxvbmcmIGkpCisgICAgYm9vbCBy
ZWFkKHVpbnQ2NF90JiBpKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4o
aSk7CiAgICAgfQpAQCAtMjU1NSw5ICsyNTcwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mIGFycmF5QnVmZmVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExlbmd0aFR5cGU+Cisg
ICAgYm9vbCByZWFkQXJyYXlCdWZmZXJJbXBsKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVm
ZmVyKQogICAgIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoOworICAgICAgICBMZW5ndGhUeXBl
IGxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChtX3B0ciArIGxlbmd0aCA+IG1fZW5kKQpAQCAtMjU2OSwxNSAr
MjU4NSwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBi
b29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcp
CisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZm
ZXIpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1
cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJfdD4oYXJyYXlCdWZmZXIpOworICAgICAgICBy
ZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50NjRfdD4oYXJyYXlCdWZmZXIpOworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZW5ndGhUeXBlPgorICAgIGJvb2wgcmVhZEFycmF5
QnVmZmVyVmlld0ltcGwoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgewog
ICAgICAgICBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgYXJyYXlCdWZmZXJWaWV3U3VidGFnOwogICAg
ICAgICBpZiAoIXJlYWRBcnJheUJ1ZmZlclZpZXdTdWJ0YWcoYXJyYXlCdWZmZXJWaWV3U3VidGFn
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgYnl0ZU9mZnNl
dDsKKyAgICAgICAgTGVuZ3RoVHlwZSBieXRlT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWQoYnl0
ZU9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5
dGVMZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZUxlbmd0aDsKICAgICAgICAgaWYgKCFy
ZWFkKGJ5dGVMZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09i
amVjdCogYXJyYXlCdWZmZXJPYmogPSBhc09iamVjdChyZWFkVGVybWluYWwoKSk7CkBAIC0yNTg3
LDcgKzI2MTEsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHR5
cGVkQXJyYXlFbGVtZW50U2l6ZShhcnJheUJ1ZmZlclZpZXdTdWJ0YWcpOwogICAgICAgICBpZiAo
IWVsZW1lbnRTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNpemU7CisgICAgICAgIExlbmd0aFR5cGUg
bGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOwogICAgICAgICBpZiAobGVuZ3RoICog
ZWxlbWVudFNpemUgIT0gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMjYzNCw2ICsyNjU4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBi
b29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcp
CisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisgICAgICAgICAgICByZXR1cm4g
cmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDMyX3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOwor
ICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDY0X3Q+KHZtLCBhcnJh
eUJ1ZmZlclZpZXcpOworICAgIH0KKwogICAgIGJvb2wgcmVhZChWZWN0b3I8dWludDhfdD4mIHJl
c3VsdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKQEAgLTMzNDUs
NyArMzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyOwogCi0gICAgICAgIGlmICghcmVhZChzZXJpYWxpemF0aW9uU3RhdGUpIHx8ICFyZWFk
KGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNhbEhlaWdodCkgfHwgIXJlYWQocmVzb2x1dGlv
blNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAhcmVhZChjb2xvclNwYWNlKSkgfHwgIXJlYWRB
cnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKCFyZWFkKHNlcmlhbGl6YXRp
b25TdGF0ZSkgfHwgIXJlYWQobG9naWNhbFdpZHRoKSB8fCAhcmVhZChsb2dpY2FsSGVpZ2h0KSB8
fCAhcmVhZChyZXNvbHV0aW9uU2NhbGUpIHx8IChtX3ZlcnNpb24gPiA4ICYmICFyZWFkKGNvbG9y
U3BhY2UpKSB8fCAhcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJfdD4oYXJyYXlCdWZmZXIpKSB7
CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCmluZGV4IGZiNzU3YTRkNzRmNi4uN2U0OWE5ZTczMjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTY3
LDcgKzE2Nyw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBpZiAoaGFzQXJyYXkpIHsKICAgICAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4obV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPnNpemUoKSk7
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byAmYXJyYXlCdWZmZXJDb250ZW50cyA6ICptX2FycmF5
QnVmZmVyQ29udGVudHNBcnJheSkgewotICAgICAgICAgICAgZW5jb2RlciA8PCBhcnJheUJ1ZmZl
ckNvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90PihhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCkpOwogICAgICAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGFycmF5QnVmZmVyQ29udGVudHMuZGF0YSgpKSwgYXJyYXlCdWZmZXJDb250ZW50cy5z
aXplSW5CeXRlcygpLCAxKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5OSw5ICsxOTksMTIgQEAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkg
PSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICAgICAgd2hpbGUg
KGFycmF5TGVuZ3RoLS0pIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNpemU7CisgICAg
ICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRCdWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKKyAgICAg
ICAgICAgIGlmIChjaGVja2VkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUg
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjEyLDcgKzIxNSw3IEBAIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+YXBwZW5kKHsg
YnVmZmVyLCBidWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVj
dG9yKCkgfSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFwcGVuZCh7
IGJ1ZmZlciwgY2hlY2tlZEJ1ZmZlclNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2Fn
ZURlc3RydWN0b3IoKSB9KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi41NTllYmNjNDhj
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAt
NjgsNyArNjgsOSBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29yZTo6Qmxv
YiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwogICAgIGlmICgh
Ynl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSgw
VSwgMSksIDAsIDApOworICAgICAgICAvLyBUaGUgY2FzdCBsb29rcyB3ZWlyZCwgYnV0IGlzIHJl
cXVpcmVkIGZvciB0aGUgb3ZlcmxvYWRpbmcgcmVzb2x1dGlvbiB0byBzdWNjZWVkLgorICAgICAg
ICAvLyBXaXRob3V0IGl0LCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkgd2hlcmUgQXJyYXlCdWZmZXI6
OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKSBjb3VsZCBiZSBj
YWxsZWQgaW5zdGVhZC4KKyAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8c2l6ZV90PigwVSksIDEpLCAwLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlUmVmPEJsb2JMb2FkZXI+KFt0aGlz
XShCbG9iTG9hZGVyJikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuY3BwCmluZGV4IDI1YmZmMTUzZDEyYy4uNzU0M2Y0NzVhMjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03
NCw2ICs3NCw4IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXpl
ID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5o
YXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1
ZmZlclNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRB
cnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVs
QXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li5kODNlNGE0
MDQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02Myw3ICs2NCwxMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgY2hlY2tlZFJlYWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZp
ZXcsIHVuc2lnbmVkJiBvZmZzZXQsIEVuZGlhbm5lc3MgZW5kaWFubmVzcykKICAgICB7CiAgICAg
ICAgIGJvb2wgcmVhZFN0YXR1cyA9IGZhbHNlOwotICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1w
bGF0ZSByZWFkPFQ+KG9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3Rh
dHVzKTsKKyAgICAgICAgc2l6ZV90IGFjdHVhbE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgVCB2
YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihhY3R1YWxPZmZzZXQsIGVuZGlhbm5lc3MgPT0g
TGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5C
b3VuZHM8dWludDMyX3Q+KGFjdHVhbE9mZnNldCkpOworICAgICAgICBvZmZzZXQgPSBhY3R1YWxP
ZmZzZXQ7CiAgICAgICAgIGlmICghcmVhZFN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAo=
</data>
<flag name="commit-queue"
          id="465537"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441344</attachid>
            <date>2021-10-15 01:06:58 -0700</date>
            <delta_ts>2021-10-15 10:03:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>273330</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjI2MmNkYTM4M2Q1Li5lYzZiYjNjMWQ4NTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
NSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFr
IHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxseS1v
b2IuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1MzliNTBkMmU1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQorewor
ICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7Citm
dW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4
XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVl
OworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICog
MTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdl
dEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAg
ICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9m
IHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwor
ICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAg
ICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisg
ICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2Yt
Ym91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNz
L3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIu
anMKaW5kZXggNzdkNTBjMzUwYjQ2Li5lZDBlN2FmMDkxM2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JV
RkZFUl9TSVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVx
dWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2
LDEzIEBAIGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewog
ICAgIHZhciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRk
TWVtb3J5KDMyNzY4KTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KCgyKioxNikgKyAxKTsKICAgICBt
b2R1bGUuaW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwog
fQogCi1pZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikgeworaWYg
KGV4Y2VwdGlvbiAhPSAiQ29tcGlsZUVycm9yOiBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDE1OiBNZW1vcnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgNjU1MzcgaXMg
aW52YWxpZCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0aGlzLnRvQnVmZmVy
KCkpJykiKSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1t
b3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMK
aW5kZXggYmE2MmQ5MTQ3NmFhLi4wMWYwNmQyZjQ5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2
YXIgZXhjZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0
aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXI7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMDEsIG1heGltdW06IDB4MTAwMDEgfSkuYnVmZmVy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24g
IT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQotICAgIHRocm93ICJGQUlMRUQiOworaWYg
KGV4Y2VwdGlvbiAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCisgICAgdGhyb3cgIkZBSUxFRCwgZXhjZXB0aW9uIHdh
czogIiArIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZTE5MDRiYTQwNzQuLmQ3OGRiYzJkZGRhMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3Nl
dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAg
ICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBSZWJhc2VsaW5lZCB0aHJlZSBmb2xsb3dpbmcgdGVzdHMgYXMgZGlmZmVyZW50
IG9yIGZld2VyIGVycm9yIG1lc3NhZ2VzIGFwcGVhciBvbiB0aGUgY29uc29sZS4KKyAgICAgICAg
QWxzbyBjaGFuZ2VkIGN1cnJlbnRWZXJzaW9uIGluIHNlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0
bWwgZnJvbSA5IHRvIDEwLgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWdldEltYWdl
RGF0YS1pbnZhbGlkLXJlc3VsdC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sOgorICAgICAgICAqIHdl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0
aC1leHBlY3RlZC50eHQ6CisKIDIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjI4NDIzMCwgbXkgbGFzdCBmaXhlcyB0byB0
aGUgd2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVhayB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3N0b3JhZ2Uvc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbAppbmRleCA1NTRhMDJk
ZjE3YWQuLjg3YmNjNDQ5MmMxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdl
L3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9y
YWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKQEAgLTYsNyArNiw3IEBACiAgICAgPGJv
ZHk+CiAgICAgICAgIDxzY3JpcHQ+CiAKLWNvbnN0IGN1cnJlbnRWZXJzaW9uID0gMHgwOTsKK2Nv
bnN0IGN1cnJlbnRWZXJzaW9uID0gMHgwYTsKIAogLy8gSGVyZSdzIGEgbGl0dGxlIFEmRCBoZWxw
ZXIgZm9yIGZ1dHVyZSBhZHZlbnR1cmVycyBuZWVkaW5nIHRvIHJlYmFzZWxpbmUgdGhpcy4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggNDk4YmRhY2Zk
ZGM1Li41YjhmMzY2NTljYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogRmFpbGVkIHRvIGNvbnN0
cnVjdCBpbnRlcm5hbCBBdWRpb0J1ZmZlciB3aXRoIDEgY2hhbm5lbChzKSwgYSBzYW1wbGUgcmF0
ZSBvZiA0NDAwMCBhbmQgYSBsZW5ndGggb2YgNTM2ODcwOTEyLgogVGhpcyB0ZXN0IHBhc3NlcyBp
ZiBpdCBkb2VzIG5vdCBjcmFzaC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVy
LWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA5NTZhNTc3OTc5NDku
LmQwNzM2MDAxNDMwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3Rl
ZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1
Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUg
b2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUzNjg3MDkxMi4KIE1ha2Ugc3VyZSB0aGF0IHRoZSBs
ZW5ndGggcmV0dXJuZWQgYnkgT2ZmbGluZUF1ZGlvQ29udGV4dCBldmVuIGlmIHdlIGZhaWxlZCB0
byBjb25zdHJ1Y3QgdGhlIHJlbmRlcmluZyBidWZmZXIuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ3NjA0NjgxMTJjZi4uZDI0NzAxMmE3
N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNzUgQEAKKzIwMjEtMTAt
MTUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxv
dyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFdoaWxlIGluY3JlYXNpbmcg
TUFYX0FSUkFZX0JVRkZFUl9TSVpFIHRvIDRHQiB3YXMgZWFzeSwgaXQgd2FzIG5vdCByZW1vdGVs
eSB0aGUgb25seSB0aGluZyByZXF1aXJlZCB0byBnZXQgdGhpcyB0byB3b3JrOgorICAgICAgICAt
IDRHQiBpcyBub3QgcmVwcmVzZW50YWJsZSBpbiBhIHVpbnQzMl90LCBzbyBJIGNoYW5nZWQgYWxs
IGxlbmd0aCBvZiBBcnJheUJ1ZmZlci9UeXBlZEFycmF5L2V0Yy4uIHRvIGJlaW5nIHNpemVfdC4K
KyAgICAgICAgLSBUaGlzIGFsc28gcmVxdWlyZWQgY2hhbmdpbmcgTmV3VHlwZWRBcnJheSBpbiBh
bGwgb2YgTExJbnQvQmFzZWxpbmUvREZHL0ZUTCB0byBhY2NlcHQgYSBub24taW50MzIgc2l6ZS4K
KyAgICAgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zLCBJ
IGhhZCB0byBhZGQgc3BlY3VsYXRpb24gaW4gdGhlIERGRy9GVEwsIHdoaWNoIG5vdyBoYXZlIHR3
byB2ZXJzaW9ucyBvZiBOZXdUeXBlZEFycmF5IChvbmUgdGhhdCB0YWtlcyBhbiBJbnQzMiBhbmQg
b25lIHRoYXQgdGFrZXMgYSBTdHJpY3RJbnQ1MikKKyAgICAgICAgLSBTaW1pbGFybHksIEdldEFy
cmF5TGVuZ3RoIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCBub3cgY2FuIGVpdGhlciByZXR1
cm4gYW4gSW50MzIgb3IgYSBsYXJnZXIgbnVtYmVyLgorICAgICAgICAgICAgSSBhbHNvIGhhZCB0
byBzcGxpdCB0aGVtIGluIHRoZSBERkcvRlRMLCBzZWUgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIgYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBmb3IgZXhhbXBsZXMKKyAgICAg
ICAgLSBJbiB0dXJucywgSSBoYWQgdG8gYWRkIENoZWNrSW5Cb3VuZHNJbnQ1MiBzaW5jZSBDaGVj
a0luQm91bmRzIGNvdWxkIG5vdCBhY2NlcHQgdGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MgorICAgICAgICAtIEkgbW9kaWZpZWQgdGhlIHJ1bnRpbWUgZnVuY3Rpb25zIGZv
ciBHZXRCeVZhbC9QdXRCeVZhbC9EYXRhVmlld0dldC9EYXRhVmlld1NldC9BdG9taWNzWFhYIHRv
IGFjY2VwdCBub24tSW50MzIgaW5kaWNlcywgc2luY2UgZm9yIHtJbnQ4L1VJbnQ4L1VJbnQ4Q2xh
bXBlZH1BcnJheSwgYSBtYXhpbXVtIHNpemUgb2YgNEdCIGltcGxpZXMgaW5kaWNlcyA+IDJCLgor
ICAgICAgICAtIEkgYWRkZWQgYSAibWF5QmVMYXJnZVR5cGVkQXJyYXkiIGJpdCB0byBBcnJheVBy
b2ZpbGUvVW5saW5rZWRBcnJheVByb2ZpbGUvREZHOjpBcnJheU1vZGUgdG8gdHJhY2sgd2hldGhl
ciBzdWNoIGEgbm9uLUludDMyIGluZGV4IHdhcyBzZWVuIHRvIGFsbG93IHByb3BlciBzcGVjdWxh
dGlvbiBhbmQgc3BlY2lhbGl6YXRpb24gb2YgZmFzdCBwYXRocyBpbiB0aGUgREZHL0ZUTC4KKyAg
ICAgICAgICAgIEkgdGhlbiB1cGRhdGVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyB1c2VkIGJ5IHRo
ZSBzbG93IHBhdGhzIHRvIGNvcnJlY3RseSB1cGRhdGUgaXQuCisKKyAgICAgICAgVW5mb3J0dW5h
dGVseSBJIHJhbiBvdXQgb2YgdGltZSB0byBhZGQgYWxsIHRoZSBzcGVjdWxhdGlvbnMvdXBkYXRl
IGFsbCB0aGUgZmFzdCBwYXRocy4KKyAgICAgICAgU28gdGhlIGZvbGxvd2luZyB3aWxsIGhhdmUg
dG8gd2FpdCBmb3IgYSBmb2xsb3ctdXAgcGF0Y2g6CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdl
IGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aCBvZiBHZXRCeVZhbCBpbiB0aGUgTExJbnQKKyAgICAg
ICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFzdCBwYXRocyBnZW5lcmF0ZWQg
YnkgQWNjZXNzQ2FzZS9Qb2x5bW9ycGhpY0FjY2VzcworICAgICAgICAtIEFjY2VwdGluZyBsYXJn
ZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGhzIGdlbmVyYXRlZCBieSB0aGUgREZHL0ZUTCBmb3Ig
ZWFjaCBvZiBHZXRCeVZhbC9QdXRCeVZhbC9EYXRhVmlld0dldC9EYXRhVmlld1NldC9BdG9taWNz
WFhYCisKKyAgICAgICAgVGhlIGN1cnJlbnQgcGF0Y2ggaXMgZnVuY3Rpb25hbCwgaXQgd2lsbCBq
dXN0IGhhdmUgZHJlYWRmdWwgcGVyZm9ybWFuY2UgaWYgdHJ5aW5nIHRvIHVzZSBpbmRpY2VzID4y
QiBpbiBhIHtJbnQ4L1VJbnQ4L1VJbnQ4Q2xhbXBlZH1BcnJheS4KKworICAgICAgICBPdGhlciBt
aW5vciBjaGFuZ2VzIGluIHRoaXMgcGF0Y2g6CisgICAgICAgIC0gRml4ZWQgYW4gdW5kZWZpbmVk
IGJlaGF2aW9yIGluIEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbCB3aGVyZSBtZW1jcHkgY291
bGQgYmUgY2FsbGVkIG9uIG51bGxwdHIgKHRoZSBzcGVjIGV4cGxpY2l0bHkgYmFucyB0aGlzIGV2
ZW4gd2hlbiBsZW5ndGggaXMgMCkKKyAgICAgICAgLSBSZXBsYWNlZCBzb21lIHJlcGV0aXRpdmUg
YW5kIGVycm9yLXByb25lIGJvdW5kcyBjaGVja2luZyBieSBjYWxscyB0byBXVEY6OmlzU3VtU21h
bGxlclRoYW5PckVxdWFsLCB3aGljaCBpcyBjbGVhcmVyLCBzaG9ydGVyLCBhbmQgcmV1c2UgQ2hl
Y2tlZEFyaXRobWV0aWMgZmFjaWxpdGllcyB0byBhdm9pZCBvdmVyZmxvdyBpc3N1ZXMuCisgICAg
ICAgIC0gRml4ZWQgYSB2YXJpZXR5IG9mIG9ic29sZXRlIGNvbW1lbnRzCisgICAgICAgIC0gQWRk
ZWQgc3VwcG9ydCBmb3IgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgICAgICAgICAgKHRoZXJlIHdhcyBhbHJlYWR5IHN1
cHBvcnQgZm9yIHRoZSBzYW1lIGJ1dCB3aXRoIFRydXN0ZWRJbW02NCkKKyAgICAgICAgLSBNYWRl
IHZhcmlvdXMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciBmdW5jdGlvbiBjb25zdGV4cHIgYXMgcGFy
dCBvZiB0aGUgcHJldmlvdXMgcG9pbnQKKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyOjpUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cjo6YXNJbnRwdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyOjphc1B0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6SW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6SW1tUHRyOjphc1RydXN0ZWRJbW1QdHIpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzI6OlRydXN0ZWRJbW0zMik6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTMyOjpJbW0zMik6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTMyOjphc1RydXN0ZWRJbW0zMiBjb25z
dCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NDo6
VHJ1c3RlZEltbTY0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1t
NjQ6OkltbTY0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tNjQ6
OmFzVHJ1c3RlZEltbTY0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlcjo6Y2FuQmxpbmQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpz
aG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpicmFuY2g2NCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2g2NCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjRFLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjRFOjp1bnRhZ0FycmF5UHRyTGVuZ3RoNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0aDMyKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmNhbkJsaW5kKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKiBieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNo
RlBSIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpBcnJh
eVByb2ZpbGU6OnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjptYXlCZUxhcmdlVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQXJyYXlQcm9maWxlOjpVbmxpbmtlZEFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQXJyYXlQcm9maWxlOjp1cGRhdGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1v
ZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6cmVmaW5lIGNvbnN0KToKKyAg
ICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2Rl
OjpBcnJheU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6bWF5QmVMYXJnZVR5
cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFR5cGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNwZWN1bGF0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhDb252ZXJzaW9uIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlQW5kQ29udmVyc2lvbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlDbGFzc0FuZFNw
ZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6c3BlY3VsYXRpb25Gcm9tUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpB
cnJheU1vZGU6OndpdGhBcnJheUNsYXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbW1v
bi5oOgorICAgICAgICAoSlNDOjpERkc6OmVuYWJsZUludDUyKToKKyAgICAgICAgKiBkZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9s
ZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNvbnZlcnRUb0dldEFycmF5TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpwcmVwZW5kR2V0QXJyYXlMZW5ndGgpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdHZW5lcmF0aW9uSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdI
ZWFwTG9jYXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAg
KiBkZmcvREZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc1N0b3JhZ2VDaGlsZCBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6c3RvcmFnZUNoaWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6
OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
U0FMb3dlcmluZ1BoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTU0FMb3dl
cmluZ1BoYXNlOjpsb3dlckJvdW5kc0NoZWNrKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlw
ZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uRmxvYXRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBl
ZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50U3RydWN0
dXJlQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjpp
ZGVudGlmeVJlZHVuZGFudEFycmF5Q2hlY2tzKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp2YWxpZGF0ZUFJU3RhdGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEV4Y2VwdFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEFycmF5
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEp
OgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OmxvYWQ2NE5vbk5lZ2F0aXZlKToKKyAgICAgICAgKiBqaXQvSW50cmluc2ljRW1pdHRlci5jcHA6
CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNH
ZXR0ZXIpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
cHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpnZXRCeVZhbCk6CisgICAgICAgICogbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50
aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyk6CisgICAgICAgIChKU0M6OkFycmF5QnVm
ZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1
ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMpOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OnNpemVJbkJ5dGVz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGggY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJbkJ5dGVzIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
QnVmZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3Qp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1l
bnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpjbGFtcE9mZnNldEFuZE51bUVsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmll
dzo6emVyb1JhbmdlSW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6Y2FsY3Vs
YXRlT2Zmc2V0QW5kTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NP
YmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlND
OjpEYXRhVmlldzo6RGF0YVZpZXcpOgorICAgICAgICAoSlNDOjpEYXRhVmlldzo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpHZW5lcmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25z
dHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVM
ZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJs
eVNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNpemVPZik6CisgICAgICAgIChKU0M6OkpT
QXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpsZW5ndGggY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0FycmF5
QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVy
Vmlldzo6Ynl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRl
T2Zmc2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnRvSW5kZXggY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1R5cGVkQXJyYXlJ
bmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3Jl
YXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnNldCk6CisgICAg
ICAgIChKU0M6OkpTRGF0YVZpZXc6OnNldEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0
YVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0YSk6CisgICAgICAgICog
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp2YWxpZGF0ZVJhbmdlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4SW5saW5lKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnRyeUdldEluZGV4UXVpY2tseSBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
Y2FuU2V0SW5kZXhRdWlja2x5KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlG
b3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5
U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpj
YW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Z2V0QnlWYWxXaXRoSW5kZXgp
OgorICAgICAgICAqIHdhc20vV2FzbVBhZ2VDb3VudC5oOgorCiAyMDIxLTEwLTE1ICBSb2JpbiBN
b3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHIyODQyMzAs
IG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2UgaXQgYnJlYWsgdGVzdHMKQEAg
LTI1NCw3ICs1MjYsNyBAQAogICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgogCiAg
ICAgICAgIFdoaWxlIGluY3JlYXNpbmcgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIHRvIDRHQiB3YXMg
ZWFzeSwgaXQgd2FzIG5vdCByZW1vdGVseSB0aGUgb25seSB0aGluZyByZXF1aXJlZCB0byBnZXQg
dGhpcyB0byB3b3JrOgotICAgICAgICAtIDRHQiBpcyBub3QgcmVwcmVzZW50YWJsZSBpbiBhIHVp
bnQzMl90LCBzbyBJIGNoYW5nZWQgYWxsIGxlbmd0aCBvZiBBcnJheUJ1ZmZlci9UeXBlZEFycmF5
L2V0Yy4uIHRvIGJlaW5nIFVDUFVSZWdpc3Rlci4KKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJl
c2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlC
dWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBzaXplX3QuCiAgICAgICAgIC0gVGhpcyBh
bHNvIHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2Vs
aW5lL0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCiAgICAgICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1
bGF0aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3
VHlwZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEg
U3RyaWN0SW50NTIpCiAgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEg
bGFyZ2VyIG51bWJlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCmluZGV4IGRjYzllNTkyMzFjZi4uNTVm
ZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkN2FhMGI3
YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI2NSw5ICsyNjUsOSBA
QCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFzcyByZXF1aXJpbmcgZXhwbGljaXQgY29uc3RydWN0
aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlhdGUKICAgICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQg
YXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1lbW9yeSBvcGVyYXRpb25zCiAgICAgc3RydWN0IFRy
dXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIo
KSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoKSB7IH0KICAgICAgICAgCi0g
ICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAg
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI3OCwy
MSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZXhw
bGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgZXhwbGljaXQgY29u
c3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAg
ICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCiAgICAgICAg
ICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpKQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigpCisgICAgICAgIGNvbnN0
ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihtX3ZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29uc3RleHByIHZvaWQqIGFzUHRyKCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fdmFsdWUpOwogICAgICAg
ICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDog
cHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAgewotICAgICAgICBleHBsaWNpdCBJbW1QdHIoY29u
c3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qg
dm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkg
eyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW1QdHIgYXNUcnVz
dGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogCiAgICAgLy8gVHJ1c3RlZElt
bTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgIUNQVShY
ODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikK
KyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0
cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAg
ICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBAQCBwdWJsaWM6CiAKIAogICAgIHN0cnVjdCBJbW0z
MiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsKLSAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJf
dCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTMyKGludDMyX3QgdmFsdWUp
CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9
CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIg
cHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIp
CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKICAgICAgICAgfQog
I2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBjb25z
dCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZEltbTMy
JiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB9OwogICAg
IApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVibGljOgogICAgIC8vICh3aGljaCBhcmUgaW1wbGVt
ZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgcGFzc2VkIGFzCiAgICAg
Ly8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBzdHJ1Y3QgVHJ1c3RlZEltbTY0IDogVHJ1c3RlZElt
bSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgVHJ1c3Rl
ZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50
NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChpbnQ2
NF90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0g
ICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAg
ZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAg
ICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBA
IC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRl
IFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoaW50NjRfdCB2YWx1
ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIEltbTY0KGludDY0X3QgdmFsdWUpCiAgICAg
ICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICAgICAgZXhwbGlj
aXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJ
bW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikK
ICAgICAgICAgewogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgVHJ1c3RlZEltbTY0
JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGNvbnN0
ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0KCkgY29uc3QgeyByZXR1cm4g
KnRoaXM7IH0KICAgICB9OwogICAgIAogICAgIC8vIFNlY3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIg
Y29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1Myw5ICsxMDUzLDkgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UmVn
aXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lm
aWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3Rl
ciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFiZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggMDFlNDhhMTFiYmIw
Li40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsKICNpZiBDUFUoQVJNNjQpIHx8IENQVShB
Uk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hQdHI7CisjZW5kaWYKKyNpZiBDUFUo
WDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYK
ICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFN1YjMyOwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7CkBAIC0xNDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYW5kNjQoaW1tLmFzVHJ1c3RlZEltbTMyKCks
IGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4
NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUoQVJNNjQpCkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0KGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsK
ICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICAKICAgICB2b2lk
IHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtMTgyMSw2ICsxODI1
LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0
LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgLy8gT3Ro
ZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBuZWVkIGJsaW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2
NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdpc3RlcklELCBJbW02NCkgZGlyZWN0bHkgZGVmaW5l
ZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9B
c3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBpdCB1c2VzIHNob3VsZEJsaW5kKCksIGxvYWRSb2F0
aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3aGljaCBhcmUgb25seSBkZWZpbmVkIGhlcmUgYW5k
IG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRC
bGluZChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxp
bmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChy
b3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJl
Z2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElm
IHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSds
bCBqdXN0CisgICAgICAgICAgICAvLyBwbGFjZSBhIHJhbmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAg
ICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOworICAgICAgICAgICAg
d2hpbGUgKG5vcENvdW50LS0pCisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tNjQoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3Rl
ZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorCiAgICAgdm9pZCBjb21w
YXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJp
Z2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmln
aHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThmZjllMzM3Yy4uODU3NDA1NWM5YjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJl
Z2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmxyOwogCiAgICAgLy8gRklY
TUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UKLSAgICBzdGF0aWMg
Ym9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVp
bnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGlj
IGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVl
KSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJh
dGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
dW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0
KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkNjQo
cmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIuLjA3NGEzOThmODgzYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApA
QCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQdHJMZW5ndGgzMihBZGRyZXNzIGxlbmd0aCwgUmVn
aXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRhdGVBdXRoKQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0
LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7CiAgICAgICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBsb2FkMzIo
bGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAgICBsb2FkNjQobGVuZ3RoLCBsZW5ndGhHUFIpOwog
ICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxpZGF0ZUF1dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6IEludmFsaWRHUFJSZWc7IAogICAgICAgICB1bnRh
Z0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0LCB2YWxpZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAppbmRleCBlNjYxMDBiYTJlNDcuLjNmYWJjNGQ4OTE0MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6
OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgp
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmlj
QXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAg
IHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBz
aG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
Pj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZm
ZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzOTc5
OTJhM2E3NTAuLjEzMjUwZWM0ODQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2LDcgKzQ4Niw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgog
ICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRl
cjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2Ug
SW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CkBAIC01MjksNiArNTI4LDggQEAg
Ym9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW5kZXhl
ZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQz
MlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0U3RvcmU6CisgICAgLy8g
VXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5cGVkQXJyYXlCeXRlT2Zmc2V0IGluIHRoZSBwcm9j
ZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQgYXMgYSBkb3VibGUKKyAgICBjYXNlIEludHJpbnNp
Y0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEyICsxMTg1LDE3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gc3RhdGUu
dS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAKICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVy
czo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRj
aEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlw
ZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkpOwogCi0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChq
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3Jh
dGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGgg
PSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIs
IHNjcmF0Y2hHUFIpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRo
ZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBv
biB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQu
YnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NP
Zkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJl
c3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5t
YWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTExOTcsOSAr
MTIwMywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0g
YWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAg
aml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNw
YWNlKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQo
YWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIo
YWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxs
eUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBz
Y3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3Bl
cnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CkBAIC0xNTk1LDkgKzE2MDUsMTQgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgIHJlYWR5Lmxp
bmsoJmppdCk7CiAgICAgICAgIH0KIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNj
cmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRPZkJvdW5kcyBiaXQgb2YgQXJyYXlQcm9maWxlIHdp
bGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rpb24uCi0gICAgICAgIHN0YXRlLmZhaWxB
bmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWws
IHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQuc2lnbkV4dGVuZDMy
VG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBVQ1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAz
MiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZh
aWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUu
ZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JF
cXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAg
YXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRj
aEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNj
cmF0Y2hHUFIoKTsKQEAgLTE2MDUsOSArMTYyMCwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZl
ZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJz
QnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4
dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNl
bHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNl
bmRpZgogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAg
ICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNj
cmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0
LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYg
KGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggNjkxNjc5
NDg0M2IwLi4zNmZlYjE0NGJhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVW5saW5rZWRBcnJheVBy
b2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRmaWVsZCB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRz
IGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRoYXQgd2UgaGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJl
IDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNlIHRoZSBsb3dlciBiaXRzLgotLy8gVGhlcmUgYXJl
IDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBiaXRzIDE2IHRvIDI1LgorLy8gVGhlcmUg
YXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAxNi0yMCBhbmQgMjYtMzEu
CiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9kZXM7CiAKIC8vIFRoZSBwb3NzaWJsZSBJbmRleGlu
Z1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAoMCAtIDE2LCAyMSwgMjMsIDI1KS4KQEAgLTIwNSw3
ICsyMDUsMTUgQEAgcHVibGljOgogICAgICAgICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmlu
ZyhmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAorCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNfc21hbGxUeXBlZEFycmF5TWF4TGVu
Z3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgdm9pZCBzZXRN
YXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7IH0K
KyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
IGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXk7IH0KKyNlbHNlCisgICAgYm9v
bCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFz
dFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAg
ICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRB
cnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVy
biAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjQ0LDYgKzI1Miw5IEBAIHByaXZhdGU6CiAgICAg
U3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9tYXlT
dG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQg
dG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVy
aW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3
ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZh
cmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhh
Y3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91bmRzIHsgZmFs
c2UgfTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdl
VHlwZWRBcnJheSB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzIDogMTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVz
IDogMTsKICAgICBib29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMs
NyArMjY0LDEzIEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwog
CiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgVW5saW5rZWRBcnJh
eVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVW5saW5rZWRBcnJheVByb2ZpbGUo
KQorICAgICAgICA6IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgLCBtX21heUJlTGFyZ2VUeXBlZEFycmF5KGZh
bHNlKQorI2VuZGlmCisgICAgeworICAgIH0KIAogICAgIHZvaWQgdXBkYXRlKEFycmF5UHJvZmls
ZSYgYXJyYXlQcm9maWxlKQogICAgIHsKQEAgLTI4MCw2ICsyOTcsMTMgQEAgcHVibGljOgogICAg
ICAgICAgICAgYXJyYXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFs
c2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVzID0gYXJyYXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOworCisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJy
YXkpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheSA9IHRy
dWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBh
cnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJheTsKKyNlbmRpZgogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTI5MCw3ICszMTQsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5U3RvcmVU
b0hvbGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKKyAgICBib29sIG1fdXNlc09y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA6IDE7CisjZW5kaWYKIH07CitzdGF0aWNf
YXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5UHJvZmlsZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDJiMmY1ZTAzMDE5Zi4uYTFjZDY5OTQ0YWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDYzLDcgKzM0NjMsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKICAgICAgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKICAgICAgICAgICAg
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKLSAg
ICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgaWYgKHZpZXcgJiYgaXNJbkJvdW5kczxpbnQzMl90
Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVt
YmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5
TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAg
ICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAg
ICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAgICAgICBKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBpZiAodmlldykgewotICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50
bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHko
KTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0
ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcigq
Ynl0ZU9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
MzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7Cisg
ICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZp
ZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSk7CisgICAgICAgIGlmICh2aWV3KSB7
CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7Cisg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogewogICAgICAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoKHZh
bHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9z
dHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAtNDEwOSw2ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50
MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUgQ2hlY2tJbkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5v
dCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0IGhlcmUuCisgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAg
ICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1p
bmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1MzEwNGJkMy4uYTNiOTM0MGY2OTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICszMjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBub2RlIGlzIG9ubHkgdXNlZCBm
b3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBub3QgYmUgcmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBl
bGltaW5hdGlvbgorICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQyKCksIG5v
ZGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGNhc2Ug
TmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAgICAgICAgICAgICAgICAgIEJpdFZlY3RvciogYml0
VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNX
YXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCA9IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmlu
Z0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5YWZhM2ViLi43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBA
QCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZpbmUoCiAgICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkpOwogICAgIH0KICAgICAKLSAgICBpZiAoIWlzSW50
MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgp
ICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgpKQogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFy
cmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAgICAgCiAgICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBi
ZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3QgYmVoYXZpb3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNw
ZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDggQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5l
KAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2
NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJpZ1VpbnQ2NEFycmF5OgorICAgICAgICAvLyBGSVhN
RTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVzZXJ2ZSB0aGlzIG91dC1vZi1ib3VuZHMgaW5mb3Jt
YXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3QgR2V0QnlWYWwgYXMgd2VsbC4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTI3NgogICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkgewogICAgICAgICAgICAgaWYgKGdyYXBoLmhhc0V4
aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3V0T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRz
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0
aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNiLi5kZjc1Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAg
ICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMu
YWN0aW9uID0gQXJyYXk6OldyaXRlOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVk
QXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5
OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwog
ICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFz
Qnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVk
QXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5
cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0
NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0g
QXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpB
c0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlN
b2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJheTo6U3Bl
Y3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5
OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6
Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0
eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFzcyA9IGFycmF5Q2xhc3M7CiAgICAgICAg
IHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0aW9uOwogICAgICAgICB1LmFzQnl0ZXMu
Y29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rp
b247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IG1heUJlTGFyZ2VU
eXBlZEFycmF5OwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwg
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24sIEFy
cmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
dS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0
ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBh
Y3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlOwog
ICAgIH0KICAgICAKICAgICBBcnJheTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRlcy50eXBlKTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBA
IHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3BlY3VsYXRpb24+KHUuYXNCeXRlcy5zcGVjdWxhdGlv
bik7IH0KICAgICBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNpb24+KHUuYXNCeXRlcy5jb252ZXJzaW9uKTsgfQog
ICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlvbik7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBl
ZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9
CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3JkKCkgY29uc3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0K
ICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3Rh
dGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJy
YXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7Ci0gICAgCisKKyAgICBB
cnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKKyAgICB9CisKICAg
ICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlv
bikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNs
YXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24sIGNvbnZlcnNp
b24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAg
ICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0
CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVy
c2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJh
eUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29u
dmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkpOwogICAgIH0KLSAgICAK
LSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkg
Y29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUg
dHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252
ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCisgICAg
QXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25BbmRNYXlCZUxhcmdlVHlwZWRB
cnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0
aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBjb25zdAogICAgIHsKLSAgICAgICAgQXJy
YXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247CisgICAgICAgIHJldHVybiBBcnJheU1vZGUo
dHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAorICAgIHN0YXRpYyBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKQorICAgIHsKICAgICAg
ICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpPdXRP
ZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6T3V0T2ZCb3VuZHM7CiAgICAgICAg
IGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCi0gICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6
VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6
OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6SW5Cb3VuZHM7CiAgICAgfQot
ICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFr
ZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSkpOworICAgIH0KKwog
ICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tl
ciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAg
ICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKLQogICAgICAgICBpZiAoaXNKU0FycmF5
KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVy
ZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKICAgICAgICAgICAg
ICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMo
bG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBt
eUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
bXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdp
dGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQotICAgIAotICAgIEFycmF5TW9kZSB3aXRo
VHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0
aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6
OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFj
dGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhUeXBlQW5kQ29udmVyc2lv
bihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1
bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKKworICAgICAgICBBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmls
ZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJvb2wgbGFyZ2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+
bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKKworICAgICAgICByZXR1cm4gd2l0aEFycmF5
Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VUeXBlZEFycmF5KG15QXJyYXlDbGFzcywg
c3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJ
bnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlw
ZSgpID09IG90aGVyLnR5cGUoKQogICAgICAgICAgICAgJiYgYXJyYXlDbGFzcygpID09IG90aGVy
LmFycmF5Q2xhc3MoKQogICAgICAgICAgICAgJiYgc3BlY3VsYXRpb24oKSA9PSBvdGhlci5zcGVj
dWxhdGlvbigpCi0gICAgICAgICAgICAmJiBjb252ZXJzaW9uKCkgPT0gb3RoZXIuY29udmVyc2lv
bigpOworICAgICAgICAgICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKQor
ICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdl
VHlwZWRBcnJheSgpOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJy
YXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3OSw3ICs1OTAsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgdWludDhfdCBhcnJheUNsYXNzOwogICAgICAgICAgICAgdWludDhfdCBzcGVjdWxhdGlv
bjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29udmVyc2lvbiA6IDQ7Ci0gICAgICAgICAgICB1aW50
OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDE7CisgICAgICAg
ICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBlZEFycmF5IDogMTsKICAgICAgICAgfSBhc0J5dGVz
OwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBjODhkZTRiMjM5YzcuLmEw
MGM4NTM3MDEwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgwNywxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBE
TwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogeworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgc3RhdGljX2Fzc2VydChlbmFibGVJbnQ1MigpKTsKKyNlbmRpZgorCiAgICAg
c3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxl
bmd0aEludHJpbnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93
KTsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlw
ZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVk
QXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4MjIsMjYgKzM4MzEsMzAgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMp
OwogICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBsZW5ndGhOb2RlID0gYWRkVG9HcmFwaChH
ZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5h
c1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRB
cnJheUxlbmd0aDsKKyAgICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgob3AsIE9w
SW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9k
ZSk7CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQg
aGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3aXRob3V0IGVmZmVjdHMuCiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwogCi0KICAgICAg
ICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2Fu
IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2
ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50MzIuCi0gICAgICAg
IE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIobG9nU2l6ZSkpOwotICAgICAg
ICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlm
dE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1
c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBJbnQz
Mi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKDEgPDwgbG9n
U2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhO
b2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNh
c2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAg
aWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAgICAgICAgVHlw
ZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xh
c3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4NTMsMTMgKzM4NjYsMTkgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0g
QXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6
OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxs
TmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50
NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwg
T3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNO
b2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9CiAKICAgICBjYXNlIFR5cGVk
QXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAgICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAg
aWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAg
IFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSkt
PmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBAIC0zODcxLDcgKzM4OTAsOCBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1
bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAh
PSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlU
eXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOworICAgICAgICBOb2RlVHlw
ZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyID8gR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyIDogR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ7CisgICAgICAg
IHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBB
cnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXgg
YThkZDNmZGU5Nzc5Li45YWQ1YzI3MDIwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0
ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRvckhhc093blByb3BlcnR5OgogICAgICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2Ug
R2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0
QnlWYWxEaXJlY3Q6CkBAIC0yMzksNiArMjQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIFRvQm9vbGVhbjoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDaGVj
a0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgRG91Ymxl
UmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKQEAgLTEzMzcsNiAr
MTMzOSwxMSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSks
IExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAg
IGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnQ1MkxvYywgTWlzY0ZpZWxk
cywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKwog
ICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBBcnJheVVzZToKQEAgLTE0NDQsNiArMTQ1MSwx
NCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB9CiAgICAgfQogCisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjogeworICAgICAgICBBcnJheU1vZGUgbW9kZSA9
IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlLmlzU29tZVR5
cGVkQXJyYXlWaWV3KCkpOworICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYo
SGVhcExvY2F0aW9uKFR5cGVkQXJyYXlMZW5ndGhJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+
Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUt
PmFycmF5TW9kZSgpOwogICAgICAgICBzd2l0Y2ggKG1vZGUudHlwZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb24uaAppbmRleCBjNjZmYjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCkBAIC05Miw3ICs5Miw3IEBAIGlu
bGluZSBib29sIHZhbGlkYXRpb25FbmFibGVkKCkKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBl
bmFibGVJbnQ1MigpCitpbmxpbmUgYm9vbCBjb25zdGV4cHIgZW5hYmxlSW50NTIoKQogewogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGI4ODI1YWNh
ZTM0ZS4uZmExN2JmMTE0MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMzg3LDYgKzM4Nyw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVu
dEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5
Ny4uNDAyODRjZmEyMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBj
YXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgY2Fz
ZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVj
a1ZhcmFyZ3M6CkBAIC0xOTcsMTAgKzE5OCwxMiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVB
dDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAg
Y2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIEdl
dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggOGUxYjkzZWVlNmNhLi41NjZmNTM5ZGUxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNDMsNiArMTA0Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3Bl
Y3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3Bl
Y2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91
bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFy
Z2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xMDcz
LDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4
aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBmb3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZl
IG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2RlLgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
RSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uLgogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEVudW1lcmF0b3JHZXRCeVZhbCkKICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLndpdGhU
eXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMzLDYg
KzExMzQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5n
VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKKyAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQz
MkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6
VWludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6
OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25D
ZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKQEAgLTExODQs
NiArMTE5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJl
clNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYmIG5v
ZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBub2Rl
LT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5vZGUt
PmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAgICAg
JiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykp
IHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCkBAIC0xNzE3LDEyICsxNzMxLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OiB7CiAgICAgICAgICAgICB3YXRjaEhhdmlu
Z0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJG
bGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50
NTIoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjE0OSw2ICsyMTY3LDIzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkt
PnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1bnVzZWRJbmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAg
ICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAg
ICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGJsZXNz
QXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxl
bmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdElu
dDUyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25D
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9k
ZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewogICAgICAgICAgICAgZml4RWRnZTxLbm93
bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4Miw2
ICsyMjE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVy
OgogICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIENvbnN0
YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAg
Y2FzZSBWYWx1ZVRvSW50MzI6CkBAIC00MDk2LDE0ICs0MTMyLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIAogICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQot
ICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRBcnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwg
Tm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJheU1vZGUpCi0gICAgewotICAgICAgICBOb2RlKiBz
dG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1vZGUsIG9yaWdpbiwgY2hpbGQsIG51bGxwdHIsIGxl
bmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5
TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
RWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7Ci0gICAgfQogCiAgICAg
dm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKaW5kZXggNGZhZjk0
OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0
YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcgY29kZSBnZW5lcmF0aW9uLgogLy8gQ2FuIHByb3Zp
ZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhlciBhIHZhbHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0
ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3aGV0aGVyIGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxl
ZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQgaWYgc28gbWF5IGJlIGFibGUgdG8gcHJvdmlkZQot
Ly8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxl
ZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBtYXkgYmUKLS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5
cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFs
dWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9yeSwgYW5kIHRyYWNr
cyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAogLy8gc28gdGhh
dCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlzIGRlYWQgYW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVy
cyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1heSBiZSByZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRp
b25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNw
cAppbmRleCAyYmI5ZDRiZWE4MDAuLjA2NjFlNWI4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAg
ICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2MiKTsKICAgICAgICAgcmV0dXJu
OwogCisgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jOgorICAgICAgICBvdXQu
cHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MiKTsKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50NTJMb2M6CisgICAgICAgIG91dC5wcmludCgi
VHlwZWRBcnJheUxlbmd0aEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2Ug
UHJvdG90eXBlTG9jOgogICAgICAgICBvdXQucHJpbnQoIlByb3RvdHlwZUxvYyIpOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApp
bmRleCAyNjkxNzFjYjM0MWQuLjQwZmI3MTY3MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02Nyw2ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25L
aW5kIHsKICAgICBTZXR0ZXJMb2MsCiAgICAgU3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlC
eXRlT2Zmc2V0TG9jLAorICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsCisgICAgVHlw
ZWRBcnJheUxlbmd0aEludDUyTG9jLAogICAgIFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywK
ICAgICBTdGFja1BheWxvYWRMb2MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmluZGV4IDFi
YWExYzhiY2Y1MS4uNmRlZGEwMzdlZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApA
QCAtMTMzNSw3ICsxMzM1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vbk5lZ2F0aXZlICYmIGxlc3NUaGFuTGVuZ3RoKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBleGVjdXRlTm9kZShibG9jay0+YXQobm9kZUluZGV4KSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmFsaWRhdGVCb3Vu
ZHNDaGVja0VsaW1pbmF0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigpKSAmJiBub2RlLT5v
cCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBBc3NlcnRJbkJvdW5kcywg
bm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gV2UganVzdCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYSB2YWx1
ZS1wcm9kdWNpbmcgbm9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTljLi4wYmE3YjlmZjNlYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk2NSw2ICsxOTY1LDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
ICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAgICAgICAgIGNhc2UgRW51bWVyYXRv
ck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAgICAgICAgIGNhc2UgQXJyYXlJbmRleE9mOgpAQCAt
MjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgogCiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1cm4gMjsKIAogICAgICAgICBjYXNlIEhhc0luZGV4
ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAg
ICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgIGNhc2UgSW5C
eVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAppbmRleCA5YTkwYTRjZmRhYzguLjIzZjFjMTUwZDYwMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjYxLDggKzI2MSwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNl
dCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE11bHRpRGVsZXRlQnlPZmZzZXQsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0
aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgLyogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBU
eXBlZEFycmF5cywgYXMgdGhleSBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IGNhbiBoYXZlIGEgbGVu
Z3RoIHRoYXQgZG9lcyBub3QgZml0IGluIDMyIGJpdHMuICovIFwKKyAgICAvKiBHZXRUeXBlZEFy
cmF5TGVuZ3RoQXNJbnQ1MiBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIGNoYW5n
ZSB0byByZXR1cm5pbmcgSW50NTIgaW4gRml4dXAuIERvaW5nIGl0IGJlZm9yZSBjYXVzZXMgdmFs
aWRhdGlvbiBmYWlsdXJlcy4gKi8gXAorICAgIG1hY3JvKEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1
bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0
SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFJlc29sdmVTY29wZSwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMjg2LDYgKzI5MCw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDaGVja0JhZFZhbHVlLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXNzZXJ0SW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJl
c3VsdEpTKSBcCisgICAgbWFjcm8oQ2hlY2tJbkJvdW5kc0ludDUyLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2hlY2tJZGVudCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKENoZWNrVHlwZUluZm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyog
VGFrZXMgYW4gT3BJbmZvIHdpdGggdGhlIGZsYWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAq
L1wKICAgICBtYWNybyhDaGVja0pTQ2FzdCwgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0
aGUgc2FtZSBhcyBqc0Nhc3QgYnV0IGFzIGEgc3BlY3VsYXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0
aW9uICovXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5k
ZXggZTUwN2YxZTgwYWMwLi45NDUzNTM1NmRlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtOTcsMTAgKzk3LDggQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0s
IEpTVmFsdWUKICAgICB9CiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaW5kZXgsIHZhbHVlKSkgewotICAgICAgICAgICAgb2Jq
ZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGlmIChvYmpl
Y3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgsIHZhbHVlKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQogCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRC
eUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTE3NSw3ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lk
IHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0
aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBzaXplLCBjaGFyKiB2ZWN0b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5
V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50cHRyX3Qgc2l6ZSwgY2hhciogdmVjdG9yKQogewogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTgzLDExICsxODEsMTQgQEAgY2hh
ciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHIKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3Ro
IGlzIG5lZ2F0aXZlIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAK
KworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxpbnRwdHJfdD46Om1heCgp
IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIHNpemVfdCB1bnNp
Z25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpOworCiAgICAgaWYgKHZlY3RvcikK
LSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVXaXRo
RmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2
ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdD
bGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2ln
bmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVuc2lnbmVkU2l6ZSkpKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNy
ZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSkpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wg
c3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAoVk0qIHZtUG9pbnRlciwgU3RydWMKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5MjQsNyArMTkyNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJ
bnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk0MCw3ICsxOTQxLDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0
aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk1
Niw3ICsxOTU3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMy
QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9y
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTk3Miw3ICsxOTczLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4
LDcgKzE5ODksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhD
bGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSgogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIq
IHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDA0LDcgKzIwMDUsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcg
KzIwMjEsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTIwMzYsNyArMjAzNyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIq
IHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1
Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNG
bG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsyMDY5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDM5M2RlODg1MDcwNy4uNGZkNTc5
NWQyZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAt
MTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdB
cnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgY2hhciosIChWTSosIFN0cnVjdHVy
ZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZs
eSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6
ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBp
bnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFt
cGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNo
YXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJh
eVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Jp
Z0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwq
LCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVjMC4uOGUwYzU4YjhhMjY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAg
ICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNhc2Ug
U3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMy
T25seSk7CkBAIC0xMzIwLDYgKzEzMjYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNr
VGllclVwQW5kT1NSRW50ZXI6CiAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAg
IGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAg
ICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIERvdWJsZVJlcDoKICAgICAg
ICAgY2FzZSBWYWx1ZVJlcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUxvd2VyaW5nUGhhc2UuY3BwCmluZGV4IGUzYTIzOWEzM2UzMC4uZDlkYWUzYTgzMjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAK
QEAgLTEwMCwxMSArMTAwLDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJy
YXlUeXBlKCkgIT0gTm90VHlwZWRBcnJheSAmJiBtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZC
b3VuZHMoKSkgewotICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJP
bmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDQpID0gRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpOworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVM
YXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBPdmVyZmxvdykpIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUt
Pm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9k
ZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBJbnQ1MlJlcFVzZSk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUt
Pm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9k
ZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAgICAgICAgIH0KKyNlbmRpZgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMzcsMTIgKzE0NywyOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9y
aWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwg
RWRnZShiYXNlLm5vZGUoKSwgS25vd25DZWxsVXNlKSwgc3RvcmFnZSk7Ci0gICAgICAgIE5vZGUq
IGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2lu
LAotICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKSk7CisgICAg
ICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHM7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICAgICAgaWYgKChvcCA9PSBHZXRBcnJheUxlbmd0aCkgJiYgKG1fbm9kZS0+YXJyYXlNb2RlKCku
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBPdmVyZmxvdykpKSB7CisgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwK
KyAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVk
Z2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgbGVu
Z3RoLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIC8vIFRoZSByZXR1
cm4gdHlwZSBpcyBhIGR1bW15IHNpbmNlIHRoaXMgbm9kZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1
cm4gYW55dGhpbmcuCisgICAgICAgICAgICBjaGVja0luQm91bmRzID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwg
Q2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRl
eCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNlKSk7CisgICAgICAgIH0gZWxzZSB7CisjZW5kaWYK
KyAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9y
aWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQo
KSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVzZSksIHN0b3JhZ2UpOworICAgICAgICAg
ICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+
b3JpZ2luLAorICAgICAgICAgICAgICAgIGluZGV4LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVz
ZSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIH0KKyNlbmRpZgorCiAK
ICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGphY2VuY3lMaXN0ID0gbV9ncmFwaC5jb3B5VmFyYXJn
Q2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVu
ZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlwZWRVc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOTI0ZmM4YzMxMDg2Li4yZTdmNTZhYTEx
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBA
IC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0lu
Qm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRT
dG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpA
QCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYg
c3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBHZXRC
eVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdD
aGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KIAogICAg
IGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0Ogor
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAgICByZXR1cm4g
IShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5
VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjVmNmFj
YTY3YzQ4Li43NDllZjU0NmFiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4ICszMjM4LDQzIEBAIHN0YXRpYyB2b2lk
IGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVzdWx0
LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1
bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9y
VHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcg
aW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewogICAgIGlmIChub2RlLT5vcCgpID09IFB1
dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXco
CiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDApKS5t
X3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgdWlu
dDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2
aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5kZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5j
aGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlmIChpbmRleE5vZGUtPmlzSW50MzJDb25z
dGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKKyAgICAgICAgaWYgKGlu
ZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGluZGV4
R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0
Y2hHUFIpOwogICAgICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMy
KGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQorCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7CisgICAg
cmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2Vsc2UKICAgICByZXR1
cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworI2VuZGlmCiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBl
ZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRl
eEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcCA9
IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRz
KG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKICAgICBpZiAoIWp1bXAuaXNT
ZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMs
IEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwpAQCAtMzM4MCwxMCArMzM5NSwxMiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSog
bm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50
MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwog
ICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICBHUFJSZWcgYmFz
ZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3By
KCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9y
YXJ5PiBmcHJUZW1wOwogICAgIEZQUlJlZyByZXN1bHRGUFIgPSBJbnZhbGlkRlBSUmVnOwpAQCAt
MzM5Nyw3ICszNDE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25J
bnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHQKICAgICBzdGQ6OnRpZShy
ZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4KERhdGFGb3JtYXRJbnQzMik7CiAgICAgYm9vbCBz
aG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZvcm1hdEpTOwogCi0gICAgZW1pdFR5cGVkQXJyYXlC
b3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJy
YXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAg
ICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCByZXN1bHRS
ZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAgICAgY29uc3RleHByIGJvb2wgY2FuU3BlY3VsYXRl
ID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFycmF5TG9hZFJlc3VsdChub2RlLCByZXN1bHRSZWdz
LCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3VsZEJveCwgcmVzdWx0RlBSKTsKQEAgLTM1NTUsNiAr
MzU3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgQVNTRVJUKGlzSW50KHR5cGUp
KTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
ICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICAKICAgICBFZGdlIHZh
bHVlVXNlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKQEAgLTM1ODcsNyAr
MzYwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgQVNTRVJUX1VOVVNFRCh2YWx1
ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVydHkpOwogICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNl
KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7Ci0gICAgSklUQ29tcGlsZXI6
Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJh
c2UsIHByb3BlcnR5KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBG
b3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHksIHNjcmF0Y2guZ3By
KCkpOwogCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgMToKQEAg
LTM2NDUsMTAgKzM2NjMsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFs
T25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwog
ICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9w
ZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFn
ZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAgIERhdGFGb3JtYXQgZm9ybWF0OwpAQCAtMzY1Niw3
ICszNjc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5
cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKIAogICAgIEZQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CiAgICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5mcHIoKTsKLSAgICBl
bWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnKTsKKyAg
ICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBz
Y3JhdGNoR1BSKTsKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0
OgogICAgICAgICBtX2ppdC5sb2FkRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9y
YWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRm91ciksIHJlc3VsdFJl
Zyk7CkBAIC0zNjkwLDEwICszNzEwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlCiAKICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAgIEZQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBncFNjcmF0Y2godGhp
cyk7CiAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWVPcC5mcHIoKTsKICAgICBGUFJSZWcgc2Ny
YXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBncFNjcmF0
Y2guZ3ByKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBG
b3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHkpOworICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5k
cyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwgc2NyYXRjaEdQUik7CiAgICAgCiAgICAgc3dpdGNoIChl
bGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDogewpAQCAtNzk2Nyw3ICs3OTg5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVn
LCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBhdXRvIHVudGFnQXJyYXlQdHIgPSBbJl0o
KSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKKyAgICAgICAgbV9qaXQu
dW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRhdGVB
dXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2YWxpZGF0ZUF1dGgpOwogICAgICAg
ICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MDM5LDkgKzgwNjEsNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZl
Y3Rvci5ncHIoKTsKICAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7Ci0gICAgQVNTRVJU
KGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKLSAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsK
LSAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRhdGFHUFIpOwogCiAgICAgR1BSUmVnIGFycmF5QnVm
ZmVyR1BSID0gZGF0YUdQUjsKIApAQCAtODA4Myw2ICs4MTAyLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKiBub2RlKQogICAgIG51
bGxWZWN0b3IubGluaygmbV9qaXQpOwogI2VuZGlmCiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhlIHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBtdXN0IHVwaG9sZCB0aGF0IHByb21pc2Ug
aGVyZS4KKyAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHZlY3RvckdQUiwgVHJ1
c3RlZEltbTMyKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOworI2VuZGlm
CisKICAgICBzdHJpY3RJbnQzMlJlc3VsdCh2ZWN0b3JHUFIsIG5vZGUpOwogfQogCkBAIC04MzQ5
LDEyICs4MzczLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0
aChOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBi
YXNlKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02
NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbHNlCiAgICAgICAg
IG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdEdQUik7CisjZW5kaWYKICAgICAgICAg
c3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fSB9CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSWRlbnQoTm9kZSog
bm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmdPclN5bWJvbCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CkBAIC0xMTExOSwxMCArMTExNDksMjQgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIGF1dG8g
dHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5VHlwZSgpOwogICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUp
KTsKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIAorCisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBUaGUgb3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRo
ZSBzbG93IHBhdGggZXhwZWN0IGEgaW50cHRyX3QsIHNvIGludDY0X3Qgb24gNjQgYml0IHBsYXRm
b3JtcworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9
IHNpemUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAg
IG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIsIHNjcmF0Y2hHUFIpOworICAgIGVtaXRO
ZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1
Y3R1cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigp
OwotICAgIAorICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5
cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIpOworI2VuZGlmCit9CisKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5v
ZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzKTsKQEAgLTExMTM2LDggKzExMTgwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICAKICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHN0b3JhZ2VHUFIpOwogCisjaWYgVVNFKExB
UkdFX1RZUEVEX0FSUkFZUykKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRydXN0ZWRJbW02NChKU0Fy
cmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpKTsKKyAgICAvLyBXZSBhc3N1bWUgdGhyb3Vn
aCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUgaXMgYSAzMi1iaXQgbnVt
YmVyLgorICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVy
Vmlldzo6ZmFzdFNpemVMaW1pdCkpOworI2Vsc2UKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNpemVHUFIsIFRydXN0
ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpKTsKKyNlbmRpZgogICAg
IAogICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgbV9qaXQubHNoaWZ0
MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hH
UFIpOwpAQCAtMTExOTMsOSArMTEyNDQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIG1faml0LnN0b3JlUHRyKAog
ICAgICAgICBzdG9yYWdlR1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjaWYgVVNFKExB
UkdFX1RZUEVEX0FSUkFZUykKKyAgICBtX2ppdC5zdG9yZTY0KAorICAgICAgICBzaXplR1BSLAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZWxzZQogICAgIG1faml0LnN0b3JlMzIoCiAgICAg
ICAgIHNpemVHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogICAgIG1faml0
LnN0b3JlMzIoCiAgICAgICAgIFRydXN0ZWRJbW0zMihGYXN0VHlwZWRBcnJheSksCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE2Nyw2ICsxNDIyNCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6
CiAgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUobm9kZSk7CiAgICAgICAgIGJy
ZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgY2FzZSBJbnQ1MlJlcFVzZToK
KyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoSW50NTJTaXplKG5vZGUpOworICAgICAg
ICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMDdiNTYzYjM0ODNhLi4w
NDliY2Y3ZTZmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRp
eCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAgIAorCisgICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJh
eVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwgVHlwZWRBcnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0
aFNpemUoTm9kZSopOwotICAgIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9p
ZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9kZSopOworI2VuZGlmCisKICAg
ICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3Jv
QXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICNpZiBVU0UoQklHSU5UMzIpCkBAIC0x
MzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsVGhpcyhO
b2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7CisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MihOb2RlKik7CisjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9G
bGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudChOb2RlKik7CkBAIC0xNDMx
LDEwICsxNDM4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVBcml0aE1pbk1heChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQ29uc3RhbnRTdG9yYWdlUG9pbnRlcihOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKik7Ci0gICAgSklUQ29t
cGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5
cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBl
ZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRD
b21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7Ci0gICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5k
c0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKTsKKyAgICB2b2lk
IGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcg
aW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2
b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSopOworI2VuZGlm
CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJy
YXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZv
cm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4KTsKICAgICB2b2lkIGNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0
eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxv
YXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0
ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9y
bWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcgKzI0MzcsNyBAQCBwcml2YXRlOgogICAgIEdQUlJl
ZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAo
aS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCisvLyBHaXZlcyB5
b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBi
aXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0NzUsNyArMjQ4NSw3IEBAIHByaXZhdGU6CiAg
ICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotLy8gR2l2ZXMgeW91IGEgc3RyaWN0IElu
dDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRz
IGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0
aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJpdHMsIGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1l
eHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNmEwZjI1MjBlYTM3Li4y
MmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEzNCw2ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxz
dGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMobm9k
ZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogeworICAgICAgICBBU1NF
UlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CiAgICAgICAgIFR5
cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwog
ICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbklu
dFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVH
ZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBh
cnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxl
dGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsK
ICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTQzOTgsNiArNDQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgY2FzZSBBc3NlcnRJbkJvdW5kczoKICAg
ICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAg
Y2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVs
dGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCmluZGV4IDNiMzkzZjUyNzVmNy4uYjVjNDg0OTgzZmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNjk0LDYgKzI2OTQsODYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFs
KE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICB9IH0KIH0K
IAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlw
ZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0
LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0
dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3Ry
dWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCBzaXplKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisK
KyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5
VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5vZGUqIG5vZGUpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAg
bV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgxdWxsIDw8IDUyKSwgInRoZXJlIGlzIGEgcmlzayB0
aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJyYXkgd29uJ3QgZml0IGluIGFuIEludDUyIik7Cisg
ICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MihOb2RlKiBub2Rl
KQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3IodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IGRhdGEo
dGhpcyk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHZl
Y3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKKyAgICBHUFJSZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7
CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBkYXRhR1BSOworCisgICAgSklUQ29tcGls
ZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwKKyAgICAgICAgVHJ1c3Rl
ZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0
b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBudWxsVmVjdG9yID0g
bV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmVjdG9yR1BSLCBUcnVzdGVkSW1t
UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9yUHRyKCkpKTsKKworICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQuY2FnZVdpdGhvdXRVbnRhZ2dpbmcoR2ln
YWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKGJh
c2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZBcnJheUJ1ZmZlcigpKSwgYXJyYXlC
dWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNhZ2luZy4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTE1CisgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJheUJ1ZmZlckdQUiwgQXJyYXlCdWZmZXI6
Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICBtX2ppdC5y
ZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRpZgorCisgICAgbV9qaXQuc3ViUHRyKGRh
dGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQu
anVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsK
KyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JHUFIpOworCisgICAgZG9uZS5saW5rKCZt
X2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNTRVJUKCFKU0FycmF5QnVmZmVyVmlldzo6
bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNlbmRpZgor
CisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKK30KKyNlbmRpZiAvLyBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgb3AgPSBub2RlLT5vcCgpOwpAQCAtMzY0NCwxMSAr
MzcyNCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsK
ICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIGluZGV4RWRn
ZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoOwogCiAgICAgICAgIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOwogICAgICAgICAKLSAg
ICAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQUik7
CisgICAgICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhH
UFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICAKICAgICAgICAgR1BSVGVtcG9yYXJ5IGFyZ3Nb
Ml07CiAgICAgICAgIApAQCAtNDM4MSw2ICs0NDYyLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6
CisjaWYgVVNFKEFERFJFU1M2NCkKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAg
ICAgICBjb21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDk5LDYg
KzQ1ODgsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MjogeworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIobm9kZSk7CisjZWxzZQorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9m
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTU1ODksNyArNTY4NywxNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQz
MlRvV29yZChpbmRleEdQUiwgdDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAg
ICAgICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0
Mik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigw
KSkpOworICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZp
ZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UK
KyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUs
IG5lZ2F0aXZlIGluZGljZXMgYXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0
aCByaWdodCBhZnRlcgogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEp
OworI2VuZGlmCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVS
ZWdzKCksIG5vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIApAQCAtNTc5MCw3ICs1ODk1LDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVu
ZDMyVG9Xb3JkKGluZGV4R1BSLCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkK
ICAgICAgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSks
IHQyKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMy
KDApKSk7CisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRh
Vmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisjZWxz
ZQorICAgICAgICAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjayBhZ2FpbnN0IDAgaGVy
ZSwgbmVnYXRpdmUgaW5kaWNlcyBhcmUgY2F1Z2h0IGJ5IHRoZSBjb21wYXJpc29uIHdpdGggbGVu
Z3RoIHJpZ2h0IGFmdGVyCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0
MSk7CisjZW5kaWYKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1
ZVJlZ3MoKSwgbm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkpOwogCkBAIC02MDQyLDYgKzYxNTQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBFeHRyYWN0T1NSRW50
cnlMb2NhbDoKICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5k
czoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIEFyaXRoSU11bDoKICAg
ICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZS5jcHAKaW5kZXggNWY1MWYyMjUxMDRmLi5lMTBkNjJlNDI3ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNw
cApAQCAtMjc5LDEwICsyNzksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1
dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAg
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRB
cnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5OgogICAg
ICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICAgICAgICAgICAgICBjYXNlIEdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0QXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAg
ICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoK
QEAgLTM1OSw2ICszNjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlW
YWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNh
c2UgTW92SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFs
aWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5k
ZXggYzVlNWNmMzZhNzcwLi5mYjNiZGQ0ODYxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCkBAIC02NDAsNiArNjQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBjYXNlIFVwc2lsb246CiAgICAgICAgICAgICAgICAgY2FzZSBBc3NlcnRJbkJvdW5k
czoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3
T2JqZWN0OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMjQ4YzlmYWQ2Ny4u
Nzg3ZTE0NTU2MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCkBAIC0xNzAsNiArMTcwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgog
ICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBj
YXNlIFN0b3JlQmFycmllcjoKQEAgLTE5OSw2ICsyMDAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2Fz
ZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVj
a0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNh
c2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CkBAIC0zOTEsNiArMzkzLDcgQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbml0
aWFsaXplRW50cnlwb2ludEFyZ3VtZW50czoKICAgICBjYXNlIENQVUludHJpbnNpYzoKICAgICBj
YXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6
CiAgICAgY2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNl
IEdldEJ5VmFsV2l0aFRoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggM2E4ZjVjZmM3OTVlLi40OGQ0ZTFiZmY0MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTYwNSw2ICs2MDUs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gQ2hlY2tJbkJvdW5kcykKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHNJbnQ1MikKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9
IG1faW50ZXJwcmV0ZXIuZm9yTm9kZShub2RlKTsKICAgICAgICAgICAgIHsKQEAgLTEwMjUsNiAr
MTAyNyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAg
ICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBHZXRWZWN0b3JMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0VmVjdG9yTGVuZ3Ro
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzQsNiArMTAzOSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgICAgIGNvbXBpbGVDaGVja0luQm91
bmRzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja0luQm91bmRzSW50
NTI6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kc0ludDUyKCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRC
eVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTc1LDYgKzExODMsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAgICAgICAgICBjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICAgICAgICAgIGNvbXBpbGVHZXRQcm90
b3R5cGVPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00ODI4LDkgKzQ4MzksOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKSk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxl
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIExWYWx1ZSBlbWl0R2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIExWYWx1ZSBiYXNl
UHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsgICAgCisgICAgICAgIExWYWx1ZSBiYXNl
UHRyID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayB3
YXN0ZWZ1bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3RO
dWxsID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQ4NDYsNyArNDg1Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8od2FzdGVmdWxDYXNl
LCBub3ROdWxsKTsKIAogICAgICAgICBMVmFsdWUgdmVjdG9yID0gbV9vdXQubG9hZFB0cihiYXNl
UHRyLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5lcXVhbCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJyYXlCdWZmZXJW
aWV3OjpudWxsVmVjdG9yUHRyKCkpKSwgCisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVh
bCh2ZWN0b3IsIG1fb3V0LmNvbnN0SW50UHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9y
UHRyKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90TnVs
bCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bGwsIGNvbnRpbnVhdGlvbik7CkBA
IC00ODY2LDkgKzQ4NzcsMzAgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
IAotICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihtX291dC5waGkocG9pbnRlclR5
cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQpKSk7CisgICAgICAgIHJldHVybiBtX291
dC5waGkocG9pbnRlclR5cGUoKSwgbnVsbFZlY3Rvck91dCwgd2FzdGVmdWxPdXQpOwogICAgIH0K
IAorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkKKyAgICB7CisgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0
aW5nUmVzdWx0KCk7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgLy8gQUkg
cHJvbWlzZXMgdGhhdCB0aGUgcmVzdWx0IG9mIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0IHdpbGwg
YmUgSW50MzIsIHNvIHdlIG11c3QgdXBob2xkIHRoYXQgcHJvbWlzZSBoZXJlLgorICAgICAgICBz
cGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmUocmVzdWx0
LCBtX291dC5jb25zdEludDY0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkp
OworI2VuZGlmCisgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKHJlc3VsdCkpOwor
ICAgIH0KKworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisgICAgdm9pZCBjb21waWxlR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBwcmVw
cm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
KSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6
ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsKKyAgICAgICAgc2V0
U3RyaWN0SW50NTIocmVzdWx0KTsKKyAgICB9CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
CisKICAgICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmln
aW4uc2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1MDg2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgp
LmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAg
ICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNpZiBVU0Uo
TEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291
dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJm
bG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKGxlbmd0aCwgbV9vdXQuY29uc3RJ
bnQ2NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAg
ICAgICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsZW5ndGgpKTsKKyNlbHNlCisgICAgICAg
ICAgICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAt
NTA2NCw2ICs1MTAxLDE3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdtaXNzaW5nLW5vcmV0dXJuIgorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2Rl
KCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3Ig
Y2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBp
cyBlcXVpdmFsZW50LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9PSBz
aXplb2YodWludDY0X3QpKTsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQubG9hZDY0Tm9u
TmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19sZW5ndGgpKTsKKyAgICB9CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAg
ICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKICAgICAgICAgc3dpdGNoICht
X25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAtNTEwOCw3ICs1MTU2LDIzIEBAIHByaXZh
dGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBq
dXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAogICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgog
ICAgIH0KLSAgICAKKworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisgICAgdm9pZCBjb21w
aWxlQ2hlY2tJbkJvdW5kc0ludDUyKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNz
b3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhp
cyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9
PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgLy8gU2lnbi1leHRlbmRlZCB0byBhbHNvIGNh
dGNoIG5lZ2F0aXZlIGluZGljZXMKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuc2lnbkV4
dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgIExWYWx1ZSBsZW5n
dGggPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgc3BlY3VsYXRl
KE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRl
eCwgbGVuZ3RoKSk7CisgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIGNsYWltIHRvIGhhdmUgSlNW
YWx1ZSByZXN1bHQsIG5vIHVzZXIgb2YgdXMgc2hvdWxkCisgICAgICAgIC8vIGRlcGVuZCBvbiBv
dXIgdmFsdWUuIFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAor
ICAgICAgICAvLyB3ZSBkb21pbmF0ZSB0aGVtLgorICAgIH0KKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKKwogICAgIExWYWx1ZSBjb21waWxlR2V0QnlWYWxJbXBsKCkKICAgICB7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CkBAIC02MDA4LDExICs2MDcyLDE4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzSW5Cb3VuZHMgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc091dE9mQm91bmRzID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFi
b3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBpc091dE9mQm91bmRz
Q29uZGl0aW9uOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ1LnVzZUtpbmQoKSA9PSBJ
bnQ1MlJlcFVzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHByZXByb2Nlc3Nv
ciBjaG9rZXMgb24gUkVMRUFTRV9BU1NFUlQoVVNFKExBUkdFX1RZUEVEX0FSUkFZUykpLCB0aGlz
IGlzIGVxdWl2YWxlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
aXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92ZU9yRXF1YWwobV9vdXQuc2ln
bkV4dDMyVG82NChpbmRleCksIGxvd1N0cmljdEludDUyKGNoaWxkNSkpOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoaWxkNS51
c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgaXNPdXRPZkJv
dW5kc0NvbmRpdGlvbiA9IG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1
KSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKGlzT3V0T2ZCb3VuZHNDb25kaXRpb24sIHVuc3VyZShpc091dE9mQm91bmRzKSwgdW5zdXJl
KGlzSW5Cb3VuZHMpKTsKKwogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGlzT3V0T2ZCb3VuZHMpOwogICAgICAgICAg
ICAgICAgICAgICBtX291dC5zdG9yZSh2YWx1ZVRvU3RvcmUsIHBvaW50ZXIsIHN0b3JlVHlwZSh0
eXBlKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAg
LTgxNjksOTUgKzgyNDAsMTggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewog
ICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRs
eSh0eXBlZEFycmF5VHlwZSkpOwogCi0gICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVub3Vn
aENhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nh
c2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbm9TdG9yYWdlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwotCi0g
ICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoc2l6
ZSwgbV9vdXQuY29uc3RJbnQzMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpLAot
ICAgICAgICAgICAgICAgIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNl
KSk7Ci0KLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
c21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBieXRlU2l6
ZSA9Ci0gICAgICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSksIG1f
b3V0LmNvbnN0SW50MzIobG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7Ci0gICAgICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgewotICAgICAgICAgICAg
ICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5h
ZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRyKDcpKSwKLSAgICAgICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOwotICAgICAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JG
b3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNs
b3dDYXNlKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChh
bGxvY2F0b3IsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3BsYXRXb3Jk
cygKLSAgICAgICAgICAgICAgICBzdG9yYWdlLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDMy
WmVybywKLSAgICAgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVT
aXplLCBtX291dC5jb25zdEludFB0cigzKSkpLAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0
WmVybywKLSAgICAgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKLQot
I2lmIENQVShBUk02NEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNp
emVQdHIgPSBtX291dC56ZXJvRXh0UHRyKHNpemUpOwotICAgICAgICAgICAgICAgIFBhdGNocG9p
bnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsK
LSAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdl
KTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplUHRyLCBCMzo6VmFs
dWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAg
YXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAg
ICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBhdXRoZW50
aWNhdGU7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgaGF2ZVN0b3JhZ2UgPSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisgICAgICAgICAgICBMVmFs
dWUgc2l6ZSA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSkp
OwogCi0gICAgICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKLSNkZWZpbmUgVFlQRURfQVJSQVlfVFlQ
RV9DQVNFKG5hbWUpIFwKLSAgICAgICAgICAgIGNhc2UgVHlwZSAjIyBuYW1lOiBcCi0gICAgICAg
ICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5
PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJ
TkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKLSN1bmRlZiBUWVBFRF9BUlJBWV9U
WVBFX0NBU0UKLSAgICAgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICAgICAgICAg
IGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwg
bV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNB
cnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoc2l6ZSwg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7Ci0gICAg
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBm
YXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOwotICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgZW1pdE5ld1R5cGVk
QXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNp
emUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgTFZhbHVlIHN0
b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBub1N0b3JhZ2UsIGhhdmVTdG9y
YWdlKTsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlZEFycmF5VHlwZSkpOwog
Ci0gICAgICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgICAgICAgICAgTFZhbHVlIHNs
b3dSZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICBbPSwgJnZtXSAo
Y29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRo
OjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxs
R2VuZXJhdG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRB
cnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Ci0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwot
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93
UmVzdWx0VmFsdWUpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKTsK
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0g
ICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5
cGVkQXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODI3Nyw3ICs4MjcxLDEwNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBl
bWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSwgTFZhbHVlIHNpemU2NEJpdHMpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbWFsbEVu
b3VnaENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9TdG9yYWdlID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgK
KyAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50NjQoSlNB
cnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKKyAgICAgICAgICAgIHJhcmVseShzbG93
Q2FzZSksIHVzdWFsbHkoc21hbGxFbm91Z2hDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNsb3dDYXNlKTsKKyAg
ICAgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZhc3QgcGF0aCB0aGF0
IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICAgICAgc3RhdGljX2Fzc2VydChpc0lu
Qm91bmRzPGludDMyX3Q+KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSk7CisKKyAg
ICAgICAgTFZhbHVlIGJ5dGVTaXplID0KKyAgICAgICAgICAgIG1fb3V0LnNobChzaXplNjRCaXRz
LCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOworICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpIDwgOCkgeworICAgICAgICAgICAg
Ynl0ZVNpemUgPSBtX291dC5iaXRBbmQoCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVT
aXplLCBtX291dC5jb25zdEludFB0cig3KSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIofnN0YXRpY19jYXN0PGludHB0cl90Pig3KSkpOworICAgICAgICB9CisKKyAgICAgICAg
TFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgc3Rv
cmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7CisKKyAgICAgICAg
c3BsYXRXb3JkcygKKyAgICAgICAgICAgIHN0b3JhZ2UsCisgICAgICAgICAgICBtX291dC5pbnQz
Mlplcm8sCisgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGJ5dGVTaXpl
LCBtX291dC5jb25zdEludFB0cigzKSkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAor
ICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7CisKKyNpZiBDUFUoQVJN
NjRFKQorICAgICAgICB7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0
ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICBhdXRoZW50
aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihzdG9yYWdlKTsKKyAgICAgICAgICAgIGF1dGhlbnRp
Y2F0ZS0+YXBwZW5kKHNpemU2NEJpdHMsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6OlNvbWVM
YXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNb
MF0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGppdC50YWdBcnJheVB0cihwYXJhbXNbMl0uZ3By
KCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0b3Jh
Z2UgPSBhdXRoZW50aWNhdGU7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0b3JhZ2UpOworCisgICAgICAgIExW
YWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOworICAgICAgICBzd2l0Y2ggKHR5cGVkQXJy
YXlUeXBlKSB7CisjZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCisgICAgICAg
IGNhc2UgVHlwZSAjIyBuYW1lOiBcCisgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxv
Y2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd0Nhc2UpOyBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfVFlQRURf
QVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKFRZUEVEX0FSUkFZX1RZUEVfQ0FTRSkKKyN1
bmRlZiBUWVBFRF9BUlJBWV9UWVBFX0NBU0UKKyAgICAgICAgY2FzZSBUeXBlRGF0YVZpZXc6Cisg
ICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3Pihz
dHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuc3Rv
cmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X3ZlY3Rvcik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgbV9vdXQuc3Rv
cmU2NChzaXplNjRCaXRzLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfbGVuZ3RoKTsKKyNlbHNlCisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY2FzdFRvSW50
MzIoc2l6ZTY0Qml0cyksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d19sZW5ndGgpOworI2VuZGlmCisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQz
MihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld19tb2RlKTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xv
d0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291
dC5waGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisKKyAgICAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgTFZhbHVlIHNsb3dSZXN1bHRWYWx1ZSA9IGxh
enlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+
JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKKyAgICAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5
VHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwg
bG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNb
Ml0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNpemU2NEJpdHMs
IHN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwor
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0ID0g
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKQEAgLTE0NjU2LDYgKzE0NzQ3LDggQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIGJhc2UgYW5kIHZhbHVlIGFyZSA2NC1iaXRz
LCBiZWdpbiBhbmQgZW5kIGFyZSAzMi1iaXRzCisgICAgLy8gc3RvcmVzIHZhbHVlIGF0IGV2ZXJ5
IDY0LWJpdHMgd29yZCBiZXR3ZWVuIGJhc2UrYmVnaW4qOCBhbmQgYmFzZStlbmQqOAogICAgIHZv
aWQgc3BsYXRXb3JkcyhMVmFsdWUgYmFzZSwgTFZhbHVlIGJlZ2luLCBMVmFsdWUgZW5kLCBMVmFs
dWUgdmFsdWUsIGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCkKICAgICB7CiAgICAgICAgIGNvbnN0
IHVpbnQ2NF90IHVucm9sbGluZ0xpbWl0ID0gMTA7CkBAIC0xNTU5MSw3ICsxNTY4NCwxMyBAQCBw
cml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0Rh
dGEoKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0ZShP
dXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5sZXNzVGhhbihpbmRleCwgbV9v
dXQuY29uc3RJbnQzMigwKSkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0
Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsK
KyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNvbXBhcmlzb24gb2Yg
aW5kZXggdG8gMCwgdGhlIGNoZWNrIGFnYWluc3QgbGVuZ3RoIGNhdGNoZXMgdGhhdCBjYXNlCiAg
ICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5l
Z2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworI2Vu
ZGlmCiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRyKGluZGV4
KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgaW5kZXhUb0No
ZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRhLmJ5dGVT
aXplIC0gMSkpOwpAQCAtMTU3MzQsNyArMTU4MzMsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBE
YXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsK
KyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBO
byBuZWVkIGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVj
ayBhZ2FpbnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3Ro
ID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUg
aW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRl
eFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE3MjM2
LDcgKzE3MzQxLDExIEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gZG9VbnRhZ0FycmF5UHRyID0g
WyZdKExWYWx1ZSB0YWdnZWRQdHIpIHsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaWYg
KGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSkgeworI2lmIFVTRShBRERSRVNTNjQpCisgICAg
ICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkNjQoYmFzZSwgbV9oZWFwcy5KU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgpOworI2Vsc2UKICAgICAgICAgICAgICAgICBMVmFsdWUgc2l6
ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7
CisjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cih0YWdnZWRQdHIs
IHNpemUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IGE5NDIwMDkzZjUyOS4uZWQ4ZmY3M2UxYTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTMyOSw2ICszMjksNyBA
QCBwdWJsaWM6CiAgICAgTFZhbHVlIG5vbk5lZ2F0aXZlMzIoTFZhbHVlIGxvYWRJbnN0cnVjdGlv
bikgeyByZXR1cm4gbG9hZEluc3RydWN0aW9uOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0
aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkMzIocG9pbnRlcik7IH0KICAg
ICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVh
cCYgZmllbGQpIHsgcmV0dXJuIGxvYWQzMihiYXNlLCBmaWVsZCk7IH0KKyAgICBMVmFsdWUgbG9h
ZDY0Tm9uTmVnYXRpdmUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsg
cmV0dXJuIGxvYWQ2NChiYXNlLCBmaWVsZCk7IH0KIAogICAgIExWYWx1ZSBlcXVhbChMVmFsdWUs
IExWYWx1ZSk7CiAgICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCmluZGV4IDVjNzY1ZWQ5
NzY1MC4uODk1NjhkNDYzMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0ludHJpbnNpY0VtaXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50
cmluc2ljRW1pdHRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC04NiwyMyArODYsMzIgQEAgdm9pZCBJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUKIAogICAgIHN3aXRjaCAoaW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlM
ZW5ndGhJbnRyaW5zaWM6IHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBq
aXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94
SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNo
RlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1
ZUdQUik7CiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRp
ZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CiAgICAgICAgIFR5cGVkQXJy
YXlUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdl
VHlwZTsKLQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0
eXBlKSA+IDEpCisgICAgICAgICAgICBqaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKGxvZ0VsZW1l
bnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIs
IHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAg
ICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB2YWx1ZUdQUik7Ci0KICAgICAg
ICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkgewotICAgICAgICAgICAgLy8gV2UgY2FuIHVz
ZSBhIGJpdHNoaWZ0IGhlcmUgc2luY2Ugd2UgVHlwZWRBcnJheXMgY2Fubm90IGhhdmUgYnl0ZUxl
bmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KLSAgICAgICAgICAgIGppdC5sc2hpZnQzMih2
YWx1ZUdQUiwgSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1ZUdQUik7CisgICAgICAg
ICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBzaW5jZSBvbiBBRERSRVNTMzIgcGxh
dGZvcm1zIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3Mg
YW4gaW50MzIuCisgICAgICAgICAgICBqaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1l
bnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOwogICAgICAgICB9Ci0KICAgICAgICAgaml0LmJveElu
dDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1Y2NlZWQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMyw4ICsxNDIsMTIgQEAgdm9pZCBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUKICAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwg
dmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICAK
KworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1
ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vs
c2UKICAgICAgICAgaml0LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAg
ICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDRhNWMwODBjMDYwYy4u
ZmFjOGUwYWM2NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKQEAgLTkzNywxMCArOTM3LDggQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3UKICAgICAg
ICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgp
KSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
LSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpIHsK
LSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUpOwor
ICAgICAgICAgICAgaWYgKG9iamVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwg
YXJyYXlQcm9maWxlKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9m
aWxlLT5zZXRPdXRPZkJvdW5kcygpOwpAQCAtMjM0MiwyMSArMjM0MCwyMiBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8
aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7Ci0gICAgICAgIGlu
dDMyX3QgaSA9ICppbmRleDsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkg
PSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKLSAgICAgICAg
ICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisg
ICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUp
LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKICAgICAgICAgICAgIGlmIChhcnJheVByb2Zp
bGUpCiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAg
ICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmpl
Y3QtPmNhbkdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAg
IGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5
UHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAg
Ym9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChv
YmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA+PSAwICYm
IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xl
bmd0aCgpKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJh
eVdpdGhDb250aWd1b3VzCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1h
eWJlIERvdWJsZToKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwpAQCAtMjM3Miw4ICsyMzcxLDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlm
IChpID49IDApCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1
ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaSkp
OwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVlLmlzQ2Vs
bCgpICYmIGFycmF5UHJvZmlsZSkKICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5k
cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgKaW5kZXggNDFjNzFiNjAwNDRlLi5lNzZkYWRhMGQzMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAg
LTE0OSw2ICsxNDksMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAogI2VuZGlm
CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJH
RV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURf
QVJSQVlTIDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9B
U01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCA1NjgxMzc3YmI5ODQuLjQ5NGVmNzYxZTMyNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ3
LDggKzEwNDcsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICAgICAgYXJyYXlQ
cm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAg
ICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShp
LCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAg
ICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwogCkBAIC0xMTcwLDE0
ICsxMTcwLDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQog
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1f
cHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0
ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFN
b2RlLmlzU3RyaWN0KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOwogICAgIAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9
ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgICAgIGlm
IChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAg
b2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGlmICghb2JqZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVl
LCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwg
aXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5UX0VORCgpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggYjQyMWE3ZmE0MTBlLi42Y2RiZDhkZTNiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIxNyw2ICsyMTcs
MTAgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCA9
IGNvbnN0ZXhwciBTdHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1
cmVQb2ludGVyCiBlbmQKIAoraWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgY29uc3QgU21hbGxU
eXBlZEFycmF5TWF4TGVuZ3RoID0gY29uc3RleHByIEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVk
QXJyYXlNYXhMZW5ndGgKK2VuZAorCiBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCA9IGNvbnN0ZXhwciBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbAogCiBpZiBYODZfNjQg
b3IgWDg2XzY0X1dJTiBvciBBUk02NCBvciBBUk02NEUgb3IgUklTQ1Y2NApAQCAtMTMxMCw3ICsx
MzE0LDggQEAgbWFjcm8gYXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwg
bWV0YWRhdGEsIHNjcmF0Y2gpCiAgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZUFuZE1p
c2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKLW1hY3JvIGdldEJ5VmFsVHlwZWRBcnJheShi
YXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzbG93
UGF0aCkKKyMgTm90ZSB0aGF0IGluZGV4IGlzIGFscmVhZHkgc2lnbi1leHRlbmRlZCB0byBiZSBh
IHJlZ2lzdGVyIHdpZHRoLgorbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBm
aW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJh
eSwgc2xvd1BhdGgpCiAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5
cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KICAg
ICBsb2FkYiBKU0NlbGw6Om1fdHlwZVtiYXNlXSwgdDIKICAgICBzdWJpIEZpcnN0VHlwZWRBcnJh
eVR5cGUsIHQyCkBAIC0xMzIxLDExICsxMzI2LDI2IEBAIG1hY3JvIGdldEJ5VmFsVHlwZWRBcnJh
eShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBz
CiAgICAgaWYgQVJNNjRFCiAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2CiAgICAgICAgIGNvbnN0
IHNjcmF0Y2ggPSB0NwotICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhb
YmFzZV0sIGxlbmd0aAotICAgICAgICBiaWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0aAorICAg
ICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgICAgIGxvYWRxIEpTQXJyYXlCdWZm
ZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3RoCisgICAgICAgICAgICBicWFlcSBpbmRleCwg
bGVuZ3RoLCBzbG93UGF0aAorICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2FkaSBKU0FycmF5
QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAorICAgICAgICAgICAgYmlhZXEgaW5k
ZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgZW5kCiAgICAgZWxzZQogICAgICAgICAjIGxl
bmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFu
Y2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMuCi0gICAgICAg
IGJpYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRo
CisgICAgICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICAgICAgYnFhZXEgaW5kZXgs
IEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFti
YXNlXSwgc2xvd1BhdGgKKyAgICAgICAgZW5kCisgICAgZW5kCisKKyAgICBpZiBMQVJHRV9UWVBF
RF9BUlJBWVMKKyAgICAgICAgYnFiZXEgaW5kZXgsIFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCwg
LnNtYWxsVHlwZWRBcnJheQorICAgICAgICBzZXRMYXJnZVR5cGVkQXJyYXkoKQorLnNtYWxsVHlw
ZWRBcnJheToKICAgICBlbmQKIAogICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rv
cltiYXNlXSwgdDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNTBkNWRiZGY2MDJhLi40ZTcwZjhiMTVm
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNjI0LDYgKzE2MjQsMTAgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCisgICAgbWFjcm8gc2V0
TGFyZ2VUeXBlZEFycmF5KCkKKyAgICAgICAgY3Jhc2goKQorICAgIGVuZAorCiAgICAgbWV0YWRh
dGEodDUsIHQyKQogICAgIGdldChtX2Jhc2UsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTY2
OSw3ICsxNjczLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBkaXNwYXRjaCgpCiAK
IC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQw
LCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZh
bFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWws
IGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIC5vcEdldEJ5VmFsU2xv
dykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQ4NGI2ZWFkMzdmZC4uMzU5Y2VjNWM5MDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtMTcxMyw2ICsxNzEzLDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
CiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBlbmQKIAor
ICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgIGlmIExBUkdFX1RZUEVEX0FS
UkFZUworICAgICAgICAgICAgc3RvcmViIDEsIE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZS5tX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjcmFzaCgpCisgICAgICAgIGVuZAorICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQy
KQogCiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBAIC0xNzIzLDYgKzE3MzEsNyBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZAogCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAjIFRo
aXMgc2lnbi1leHRlbnNpb24gbWFrZXMgdGhlIGJvdW5kcy1jaGVja2luZyBpbiBnZXRCeVZhbFR5
cGVkQXJyYXkgd29yayBldmVuIG9uIDRHQiBUeXBlZEFycmF5LgogICAgIHN4aTJxIHQxLCB0MQog
CiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgbnVt
YmVyVGFnKQpAQCAtMTc2Myw3ICsxNzcyLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAg
ICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlW
YWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5
VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmlu
aXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXks
IC5vcEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFlLi40OTdmNDllOGExZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw3ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnBy
aW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCku
Y29weVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBz
aXplKQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAgLCBtX3Np
emVJbkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29udGVudHM6OkFy
cmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQogICAgIG90aGVy
LnRyYW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZl
ckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNp
emVJbkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKIHsKQEAgLTEwOSwy
MyArMTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQogICAgIG1fc2l6
ZUluQnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxp
emF0aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2Nh
dGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxp
emF0aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3QgYWxsb3cgMzEtYml0IG92ZXJm
bG93IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1
bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAg
ICAgaWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSB8fCB0b3Rh
bFNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVja2VkU2l6ZSBzaXplSW5CeXRl
cyA9IG51bUVsZW1lbnRzOworICAgIHNpemVJbkJ5dGVzICo9IGVsZW1lbnRCeXRlU2l6ZTsKKyAg
ICBpZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJbkJ5dGVzLnZhbHVlKCkg
PiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KG51bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudEJ5dGVTaXplKTsKLSAg
ICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlczsKKworICAgIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgaWYgKCFhbGxvY2F0aW9uU2l6
ZSkKICAgICAgICAgYWxsb2NhdGlvblNpemUgPSAxOyAvLyBNYWtlIHN1cmUgbWFsbG9jIGFjdHVh
bGx5IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11Y2guIFdlIHVzZSBudWxsIHRv
IG1lYW4gdGhhdCB0aGUgYnVmZmVyIGlzIGRldGFjaGVkLgogCiAgICAgdm9pZCogZGF0YSA9IEdp
Z2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYWxsb2NhdGlvblNpemUpOwot
ICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzKTsKKyAgICBtX2RhdGEgPSBE
YXRhVHlwZShkYXRhLCBzaXplSW5CeXRlcy52YWx1ZSgpKTsKICAgICBpZiAoIWRhdGEpIHsKICAg
ICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHZvaWQg
QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlCiAgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKICAg
ICAgICAgbWVtc2V0KGRhdGEsIDAsIGFsbG9jYXRpb25TaXplKTsKIAotICAgIG1fc2l6ZUluQnl0
ZXMgPSBzaXplSW5CeXRlczsKKyAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXMudmFsdWUo
KTsKICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJf
U0laRSk7CiAgICAgbV9kZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdl
RGVzdHJ1Y3RvcigpOwogfQpAQCAtMTc4LDcgKzE3Niw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250
ZW50czo6c2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQogICAgIFJFTEVBU0Vf
QVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0K
IAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUp
CiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRl
U2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0xOTEsNyArMTg5LDcgQEAgUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9
CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpj
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBhdXRv
IGJ1ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgpOwogICAgIGlmICghYnVmZmVy
KQpAQCAtMjA4LDcgKzIwNiw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyBDdXJyZW50IHRoaXMgaXMgb25s
eSB1c2VkIGZyb206CiAvLyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PD46OnNsb3dEb3duQW5k
V2FzdGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1vcnkgc2hvdWxkIGhhdmUgYWxy
ZWFkeSBjb21lCiAvLyAgIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRW5h
YmxlZCgpIHx8IChHaWdhY2FnZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNhZ2U6OmNvbnRhaW5z
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5ndGggLSAxKSkpOwog
ICAgIHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXI6
OnByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIyMCw3ICsyMTgsNyBAQCBSZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEs
IHVuc2lnbmVkIGJ5dGVMZW5ndAogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdlIGNvdWxkIGludHJv
ZHVjZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUgdW5jYWdlZCBhbmQg
Z2V0IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3NlbWJseS4gV2FzbSBz
aG91bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3Ro
LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitSZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3Rv
cikKIHsKICAgICBpZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2lnYWNhZ2U6OlByaW1p
dGl2ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2Uo
KTsKQEAgLTIyOSw3ICsyMjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbgogICAgIHJldHVy
biBjcmVhdGUoV1RGTW92ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShz
aXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1
cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzOSw3ICsyMzcsNyBAQCBSZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAg
IHJldHVybiB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQog
Ci1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCog
c291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7
CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxv
Y2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7
CkBAIC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZwogICAgIHJldHVy
biBjcmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRlbnRzKSwgc291cmNlLCBieXRlTGVuZ3RoKTsK
IH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKG51bUVs
ZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFs
aXplKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBy
ZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVy
Q29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1Jl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRp
b25Qb2xpY3kgcG9saWN5KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1l
bnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yNjYs
MTUgKzI2NCwxNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlUwogICAgIHJldHVybiBidWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZv
aWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFieXRlTGVuZ3Ro
IHx8IHNvdXJjZSk7CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdFJlZigqbmV3IEFycmF5QnVmZmVy
KFdURk1vdmUoY29udGVudHMpKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2Us
IGJ5dGVMZW5ndGgpOworICAgIGlmIChieXRlTGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChzb3Vy
Y2UpOworICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7
CisgICAgfQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xp
Y3kpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
IGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50
Qnl0ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQXJyYXlCdWZmZXI6OkFycmF5
QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIHsKIH0KIAotdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVk
IHJpZ2h0KQorc2l6ZV90IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3Qg
bGVmdCwgc2l6ZV90IHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0KTsKICAgICBp
ZiAoeCA8IGxlZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNs
YW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQogICAgIHJl
dHVybiB4OwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5k
ZXgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBj
b25zdAogewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CisgICAg
c2l6ZV90IGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CiAgICAgaWYgKGluZGV4IDwgMCkK
ICAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7CiAgICAgcmV0dXJuIGNsYW1w
VmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3QKICAg
ICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVu
Z3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhD
bGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVn
aW4sIHNpemVfdCBlbmQpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVu
ZCA/IGVuZCAtIGJlZ2luIDogMDsKKyAgICBzaXplX3Qgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVu
ZCAtIGJlZ2luIDogMDsKICAgICBhdXRvIHJlc3VsdCA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7CiAgICAgaWYg
KHJlc3VsdCkKICAgICAgICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9kZShzaGFyaW5nTW9kZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IDY4ZmY5
MGUxM2ViYS4uZWFjY2EyYzIzM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMywxMyArMzMsMjIgQEAKICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1NoYXJlZFRhc2suaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXpl
X3QpID09IHNpemVvZih1aW50NjRfdCkpOworI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUg
KDF1bGwgPDwgMzIpCisjZWxzZQorc3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSBzaXpl
b2YodWludDMyX3QpKTsKKy8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2l6ZV90IHRvIHN0b3Jl
IHRoZSBzaXplIGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRH
QiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorLy8gU28gd2UgYXJlIHN0aWNraW5nIHdpdGggMkdCLiBJ
dCBzaG91bGQgaW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRvIHN1cHBvcnQgdXAgdG8gKDRHQiAtIDFC
KSBpZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAweDdmZmZm
ZmZmdQorI2VuZGlmCiAKIGNsYXNzIFZNOwogY2xhc3MgQXJyYXlCdWZmZXI7CkBAIC01MSw3ICs2
MCw3IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uID0gUGFja2Vk
UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+CiAKIGNsYXNzIFNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJD
b250ZW50cz4gewogcHVibGljOgotICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCog
ZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Cisg
ICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3QsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIH5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRz
KCk7CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlC
ZU51bGwobV9zaXplSW5CeXRlcyk7IH0KQEAgLTYwLDE0ICs2OSwxNCBAQCBwcml2YXRlOgogICAg
IHVzaW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFn
Q2FnZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRl
czsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyQ29u
dGVudHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMpOwog
cHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBz
aXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRz
JiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMmIG9wZXJhdG9y
PShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpAQCAtNzksNyArODgsNyBAQCBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAgICAg
dm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUluQnl0
ZXMoKSk7IH0KLSAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZUluQnl0ZXM7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3Np
emVJbkJ5dGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkOyB9CiAgICAgCkBAIC05NCw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICBEb250
SW5pdGlhbGl6ZQogICAgIH07CiAKLSAgICB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsK
KyAgICB2b2lkIHRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hh
cmVkKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsKQEAgLTEw
NSwyOCArMTE0LDI4IEBAIHByaXZhdGU6CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tl
ZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICBQYWNrZWRS
ZWZQdHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7Ci0gICAgdW5zaWduZWQg
bV9zaXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFy
cmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiBw
dWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3Qg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90
IGJ5dGVMZW5ndGgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwg
dW5zaWduZWQgYnl0ZUxlbmd0aCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5
dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRl
KGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCiAgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVp
bnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6
OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIAogICAgIGlubGluZSB2b2lk
KiBkYXRhKCk7CiAgICAgaW5saW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBpbmxp
bmUgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIGlubGluZSBzaXplX3QgYnl0ZUxl
bmd0aCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgc2V0
U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CkBAIC0xMzcsNyArMTQ2LDcgQEAg
cHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGlj
ZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleCh1
bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVnaW4s
IHNpemVfdCBlbmQpIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlu
bGluZSB2b2lkIHVucGluKCk7CkBAIC0xNjEsMTIgKzE3MCwxMiBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKLSAgICBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRz
JiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5
KTsKKyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZl
ckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAg
IEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgaW5saW5lIHVuc2lnbmVk
IGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKLSAgICBzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsK
KyAgICBpbmxpbmUgc2l6ZV90IGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKKyAgICBz
dGF0aWMgaW5saW5lIHNpemVfdCBjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6
ZV90IHJpZ2h0KTsKIAogICAgIHZvaWQgbm90aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTE5Miw3
ICsyMDEsNyBAQCBjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxl
bmd0aCgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2NvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CiB9CkBAIC0yMDUsNyArMjE0LDcg
QEAgYm9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVmZmVy
OjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBwcm9i
YWJseSB3YW50IHRvIHNjYWxlIHRoaXMgYnkgdGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29tZXRo
aW5nLgotICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6ZV90
PihieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0ZUxl
bmd0aCgpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNzY4ZmVhOTA5YmFi
Li40NzM3MjI3NDUzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSwxOCArMjUsMTcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1
ZmZlclZpZXcoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgICAgIDog
bV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9pc0RldGFjaGFibGUodHJ1ZSkK
ICAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkKICAgICAgICAgLCBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgQ3Jhc2hPbk92ZXJmbG93
PiBsZW5ndGgoYnl0ZU9mZnNldCk7CisgICAgQ2hlY2tlZDxzaXplX3QsIENyYXNoT25PdmVyZmxv
dz4gbGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAgIGxlbmd0aCArPSBieXRlTGVuZ3RoOwogICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obGVuZ3RoIDw9IG1fYnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChtX2J1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggN2UzOTYwNzc3OGE5Li4wOTk5
NTRiODY1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBlLmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NywxNCArNzgsMTQgQEAgcHVibGljOgogCiAgICAg
dm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VBZGRyZXNzKCk7IH0KIAotICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHNpemVfdCBieXRlT2Zmc2V0KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgc2V0RGV0YWNoYWJsZShib29sKTsKICAgICBib29sIGlzRGV0YWNoYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxlOyB9CkBAIC05MiwxOSArOTMsMTggQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOwogCiAg
ICAgLy8gSGVscGVyIHRvIHZlcmlmeSBieXRlIG9mZnNldCBpcyBzaXplIGFsaWduZWQuCi0gICAg
c3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudCh1bnNpZ25lZCBieXRlT2Zmc2V0
LCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50
KHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gIShieXRlT2Zmc2V0ICYgKHNpemUgLSAxKSk7CisgICAgICAgIHJldHVybiAhKGJ5dGVP
ZmZzZXQgJiAoZWxlbWVudFNpemUgLSAxKSk7CiAgICAgfQogCi0gICAgLy8gSGVscGVyIHRvIHZl
cmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCi0gICAgLy8g
d2l0aGluIHJhbmdlLgotICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0
IEFycmF5QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCBzaXplX3Qgc2l6ZSkKKyAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZl
biBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMgd2l0aGluIHJhbmdlLgorICAgIHN0YXRp
YyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRTaXpl
KQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3Ro
KCk7CisgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAg
ICAgICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0g
Ynl0ZU9mZnNldCkgLyBzaXplOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAo
Ynl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6
ZSk7CiAgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0MyArMTEz
LDQ4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xv
YmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIGlubGluZSBib29sIHNldEltcGwo
QXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wg
c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCBzaXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxp
bmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKLSAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwo
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9m
ZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29s
IGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBz
aXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlu
bGluZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0LCBp
bnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsCi0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVu
c2lnbmVkKiBsZW5ndGgpOworICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwoc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zmc2V0
IGlzIGluIG51bWJlciBvZiBlbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAgIC8v
IG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlpbmcg
YnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9p
ZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYg
YnVmZmVyLAotICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2ln
bmVkICpvZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpudW1FbGVtZW50cykKKyAgICAgICAgc2l6
ZV90IGFycmF5Qnl0ZU9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpvZmZzZXQsCisgICAgICAgIHNp
emVfdCAqbnVtRWxlbWVudHMpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAo
VUlOVF9NQVggLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBzaXplX3Qg
bWF4T2Zmc2V0ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBhcnJheUJ5
dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkg
ewogICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAg
ICAqbnVtRWxlbWVudHMgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgICpvZmZzZXQgPSBhcnJheUJ5dGVPZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAg
ICAgICAqb2Zmc2V0ID0gc3RkOjptaW4oYnVmZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkg
LSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgQ2hlY2tlZFNpemUgYWRqdXN0ZWRPZmZz
ZXQgPSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAg
ICAgIGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVz
dGVkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVm
ZmVyLmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0
aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQu
dmFsdWUoKTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRl
TGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0g
c3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAg
dW5zaWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyAgICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisgICAgdWludDMyX3QgbV9i
eXRlT2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNEZXRhY2hhYmxlIDogMTsKLSAg
ICB1bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgVUNQVVJlZ2lzdGVyIG1fYnl0ZUxlbmd0aDsK
IAogICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwg
dm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFy
cmF5QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0xNjAsODEgKzE2
NSw0NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CiB9Owog
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1
bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlC
dWZmZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZz
ZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVu
Z3RoKCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRl
TGVuZ3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQg
b3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQs
IGFycmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGFycmF5
LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5
QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0
ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRl
TGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZz
ZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlm
ICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5
dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICB1aW50OF90
KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1v
dmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9v
bCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNl
dCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGgg
PiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwg
Ynl0ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93
CisgICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxl
bmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAg
IGNvbnN0IHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFk
ZHJlc3MoKSk7CiAgICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRh
dGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZp
ZXc6Onplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxl
bmd0aCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0
ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRl
TGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVP
ZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAg
IGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3Ro
LCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAg
ICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsK
ICAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoCi0gICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVu
c2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0gICAgaWYgKHN0YXJ0IDwgMCkK
LSAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAg
IHN0YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsK
LSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKLSAg
ICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0OwotICAgICpvZmZzZXQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZW5kIC0gc3RhcnQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNpbmcg
SlNDOjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0F0b21pY3NPYmplY3QuY3BwCmluZGV4IDY4ODNhMTdjNDcyZC4uZDM2MjQ1MGEyZjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAt
MTIwLDggKzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0b21pY0FjY2VzcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAgICAgICAgIGFjY2Vzc0lu
ZGV4ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImFjY2Vzc0luZGV4
Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIH0KLSAgICAK
LSAgICBBU1NFUlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihJTlRfTUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlwZWRBcnJheVZpZXct
Pmxlbmd0aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nlc3MuIl9zKTsKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5j
cHAKaW5kZXggZGNjMmY1MDY0YWYyLi5mYmM5ODQ3ZDJkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK0RhdGFWaWV3
OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNl
dCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZm
ZXIpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFW
aWV3OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0
LCBieXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZShSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBi
dWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpOwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBieXRlTGVu
Z3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXgg
ZGEwNmI0YmIyMTQ0Li4zNDAyNjU0MTAzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IERhdGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGlj
IFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAg
VHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBAIHB1
YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xv
YmFsT2JqZWN0KikgZmluYWw7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBU
IGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQorICAgIFQgZ2V0KHNpemVfdCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29s
KiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAg
ICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgVCByZWFkKHVuc2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0
dXMgPSBudWxscHRyKQorICAgIFQgcmVhZChzaXplX3QmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRp
YW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRo
aXMtPnRlbXBsYXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAg
ICAgaWYgKCFzdGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAg
IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0KHVuc2lnbmVk
IG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCisgICAgdm9pZCBzZXQoc2l6ZV90IG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRp
YW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7
CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZpZXco
UmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRl
TGVuZ3RoKTsKKyAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgKaW5kZXggYmU3ZTZjMDUzNGZhLi41YmU4MTY1ZjcyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDI0
ICszMywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBj
bGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHNpemVf
dCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUo
Y29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRp
YyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFs
aXplZChzaXplX3QgbGVuZ3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+
KGJhc2VBZGRyZXNzKCkpOyB9CiAgICAgCi0gICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wgc2V0KEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJyYXksIHNpemVfdCBvZmZzZXQpCiAgICAgewog
ICAgICAgICByZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkK
KyAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNp
emVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBzZXRSYW5n
ZUltcGwoCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwK
QEAgLTU4LDM5ICs1OCwzOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2Yo
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHplcm9SYW5n
ZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBjb3VudCkKKyAgICBib29sIHplcm9SYW5nZShzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgY291bnQpCiAgICAgewogICAgICAgICByZXR1cm4gemVyb1Jhbmdl
SW1wbChvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksIGNvdW50ICogc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB6ZXJv
RmlsbCgpIHsgemVyb1JhbmdlKDAsIGxlbmd0aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoaXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBi
eXRlTGVuZ3RoKCkgLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0g
ICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAg
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbShzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxl
bmd0aCgpKTsKICAgICAgICAgcmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAotICAg
IHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBz
ZXQoc2l6ZV90IGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAg
ICAgICAgZGF0YSgpW2luZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7
CiAgICAgfQogCi0gICAgdm9pZCBzZXROYXRpdmUodW5zaWduZWQgaW5kZXgsIHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXROYXRpdmUoc2l6ZV90IGluZGV4
LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAg
ICAgICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1ZTsKICAgICB9CiAKLSAgICBib29sIGdldFJhbmdl
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zm
c2V0KQorICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6
ZV90IGNvdW50LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGdldFJhbmdl
SW1wbCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpLApAQCAtOTgs
MTggKzk4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogCi0gICAgYm9vbCBjaGVja0luYm91bmREYXRhKHVu
c2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25zdAorICAgIGJvb2wgY2hlY2tJbmJvdW5k
RGF0YShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CiAgICAgewotICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIChvZmZzZXQg
PD0gbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA8PSBsZW5ndGgKLSAgICAg
ICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA+
PSBvZmZzZXQpOworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0
LCBjb3VudCwgdGhpcy0+bGVuZ3RoKCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7
Ci0gICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAgewog
ICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzExMSw3IEBAIHB1
YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xv
YmFsT2JqZWN0KikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBz
aXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBhZTViZGQ4YzZhMzEuLmYxYTc2ZGZkM2Ji
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxMyArMzIsMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgobGVu
Z3RoIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVm
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00Nyw3ICs0OCw3IEBAIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KHVuc2lnCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
LSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3Ro
KQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGFycmF5LCBsZW5ndGgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01Niw3ICs1Nyw3IEBAIFJlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIGxl
bmd0aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0LDcgKzc1LDcgQEAgUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFy
cmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
YXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04NSw3
ICs4Niw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAw
LDcgKzEwMSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChz
aXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcg
QEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJu
IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Pgot
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGlu
dCBlbmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3Vs
YXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAm
bGVuZ3RoKTsKLSAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIo
KTsKLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFk
YXB0b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVPZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0g
ICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJyYXlCdWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OndyYXAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggODllYWViZDNjMmNj
Li4zZDhlNDc0NTA2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8gPSB7CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6
Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKICAgICA6IG1fc3RydWN0
dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fdmVjdG9yKHZlY3RvciwgbGVuZ3RoKQogICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQpAQCAtNTQsNyArNTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIH0KIAogSlNBcnJheUJ1ZmZlclZp
ZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50
U2l6ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB1
bnNpZ25lZCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1vZGUgbW9kZSkKICAgICA6
IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC04MSwxOCAr
ODEsMTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVj
dGlvbkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBEb24ndCBhbGxv
dyBhIHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAgIGlmIChsZW5ndGggPiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6ZSkKKyAgICBDaGVja2Vk
U2l6ZSBzaXplID0gbGVuZ3RoOworICAgIHNpemUgKj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNp
emUuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9y
ID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNp
emUpLCBsZW5ndGgpOworCisgICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlN
YWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBp
ZiAoIW1fdmVjdG9yKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwp
CiAgICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwgc2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5y
ZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBl
bGVtZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXpl
LnZhbHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9k
ZSA9IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVy
Vmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJh
eUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAg
ICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFy
cmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0
cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5
cGVkQXJyYXkpCkBAIC0xMTQsNyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVj
dGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICBzaXplX3Qg
Ynl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVy
ZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoRGF0YVZp
ZXdNb2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBlbGVtZW50
U2l6ZShKU1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4
QXJyYXlUeXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgo
KSBjb25zdAorc2l6ZV90IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1bHQgPSBsZW5ndGgo
KTsKKyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0
LnZhbHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlzIGFscmVh
ZHkgY2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4dHJhIHNh
bml0eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0dXJuIGxlbmd0aCgp
ICogZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1ZmZlciogSlNBcnJh
eUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3NCw3IEBA
IEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgp
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IHRo
aXMtPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5n
dGgoKTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0VHlwZWRBcnJheTog
ewpAQCAtMzE1LDggKzMyMiw4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZm
ZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBw
b3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOwot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlT2Zm
c2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5n
dGgoKTsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAg
ICBjYXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCBkZDAxZjdmODJhNTMuLjE0ZmE1YmJh
NWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZmFz
dFNpemVMaW1pdCA9IDEwMDA7CiAgICAgdXNpbmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2
b2lkKiBudWxsVmVjdG9yUHRyKCkKQEAgLTExNywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG51bGwucmF3Qml0cygpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90
IHNpemVPZih1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRp
YyBzaXplX3Qgc2l6ZU9mKHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50
U2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAgICAgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9
IGxlbmd0aDsKKyAgICAgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQg
Kz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFs
dWUoKSAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpA
QCAtMTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVjdGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51
bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAg
ICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBT
dHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFs
aXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0
cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBl
bGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAg
ICAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMu
IEl0J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25D
b250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAg
ICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2
ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9u
Q29udGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAg
CiAgICAgICAgIGVudW0gRGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1
Y3Rpb25Db250ZXh0KAogICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmLAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBE
YXRhVmlld1RhZyk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0
aCwgRGF0YVZpZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCog
dmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsg
fQotICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQor
ICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAg
ICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAg
ICAgICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJl
KiBtX3N0cnVjdHVyZTsKICAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBt
X3ZlY3RvcjsKLSAgICAgICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgICAgIHNpemVfdCBtX2xl
bmd0aDsKICAgICAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkq
IG1fYnV0dGVyZmx5OwogICAgIH07CkBAIC0xOTAsMTEgKzE5MiwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0
aCgpKTsgfQogICAgIHZvaWQqIHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZWN0b3IuZ2V0VW5zYWZlKCk7IH0KICAgICAKLSAgICBpbmxpbmUgdW5zaWduZWQg
Ynl0ZU9mZnNldCgpOwotICAgIGlubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zm
c2V0Q29uY3VycmVudGx5KCk7CisgICAgaW5saW5lIHNpemVfdCBieXRlT2Zmc2V0KCk7CisgICAg
aW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAK
LSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZl
Y3RvclB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9s
ZW5ndGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApp
bmRleCAxZDA3MmI3MWFjYjcuLmQ4NWIzMjgzMDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKQEAgLTk5
LDcgKzk5LDcgQEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZz
ZXRJbXBsKCkKICAgICBwdHJkaWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3aXNlX2Nhc3Q8dWlu
dDhfdCo+KHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGJ1ZmZlci0+ZGF0YSgpKTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihkZWx0YSk7CisgICAgc2l6ZV90IHJlc3VsdCA9IHN0YXRpY19jYXN0PHNpemVf
dD4oZGVsdGEpOwogICAgIGlmIChyZXF1ZXN0ZXIgPT0gTXV0YXRvcikKICAgICAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSA9PSBkZWx0YSk7CiAgICAgZWxzZSB7CkBA
IC0xMTAsMTQgKzExMCwxNCBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6
Ynl0ZU9mZnNldEltcGwoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB1bnNpZ25l
ZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCitpbmxpbmUgc2l6ZV90IEpTQXJyYXlC
dWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0
YXRvciwgdW5zaWduZWQ+KCk7CisgICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHNp
emVfdD4oKTsKIH0KIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZm
ZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQogewotICAg
IHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPj4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+PigpOwogfQogCiBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggMDg2N2Rj
YmVhZDgxLi5lOGE0ZTdhNjIzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKQEAgLTI5OCw2ICsyOTksNyBAQCBw
dWJsaWM6CiAgICAgaW50MzJfdCB0b0ludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAg
dWludDMyX3QgdG9VSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0
b0luZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAg
ICBzaXplX3QgdG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBl
cnJvck5hbWUpIGNvbnN0OwogICAgIGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9i
amVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKaW5kZXggZjdhOWU3MGVkNmUwLi44ZjVjMDcxOTg4NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAt
NjksMTQgKzY5LDQ3IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpIHsKKworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0lu
dDMyKCk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhl
cnJvck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworfQorCitpbmxp
bmUgc2l6ZV90IEpTVmFsdWU6OnRvVHlwZWRBcnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBn
ZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKKyAgICBpZiAoZCA8PSAtMSkgeworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAg
cmV0dXJuIGFzSW50MzIoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9J
bnQzMihkKSk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZX0JV
RkZFUl9TSVpFKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIg
dG9vIGxhcmdlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxsIG9m
IHRoaXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBvbiAx
PDwzMi4KKyAgICBzaXplX3Qgb3V0cHV0T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUgaW5wdXRPZmZz
ZXQgPSAwOworICAgIHNpemVfdCBpbnQzMk1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpOworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnQzMk1heCkpIHsK
KyAgICAgICAgb3V0cHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgICAgIGlucHV0T2Zmc2V0ID0g
aW50MzJNYXg7CisgICAgfQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3V0cHV0T2Zm
c2V0ICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNDOjp0b0lu
dDMyKGQgLSBpbnB1dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYy
LyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjkuLmRmZDZhNTExZDE5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0
Miw3IEBAIEpTRGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0
JiBjb250ZXh0LCBBcnJheUJ1ZmZlciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXpl
X3QgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBA
IEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVh
dGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewog
ICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1KU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCiti
b29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBz
aXplX3QsIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9i
YWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5oCmluZGV4IDJjNzg1ZTQ3NjExYS4uYTVlNzhjNDY5YjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMTUgKzQ2LDE0IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNEYXRhVmll
dyogY3JlYXRlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAg
IAogICAgIC8vIER1bW15IG1ldGhvZHMsIHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNl
IGFyZSBqdXN0IGluIHBsYWNlIHRvCiAgICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9uIHdlIGRvIGVsc2V3aGVyZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRp
YyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpT
R2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90IGxlbmd0aCk7
CisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSk7CiAg
ICAgCiAgICAgQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KICAgICBBcnJheUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAppbmRleCA5NDkwNjI0N2VhNjUuLmUwZmJjNTJmODc1OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMzYsMTEgKzEzNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAK
LSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4
KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
CiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6
ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNp
emUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXpl
ID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGxpdHRs
ZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRh
dGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFW
aWV3LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgo
KTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRl
TGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIs
NyArMTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIg
b2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5z
aWduZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxP
YmplY3QsICJieXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3Qg
dW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0x
OTUsNyArMTk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9
IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpID49IDMpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgyKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVy
bHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAK
LSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVf
dCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+
IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQg
b2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4u
ZWExZWY5YzEzZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRl
ICJUb05hdGl2ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAg
ICBTdHJ1Y3R1cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAg
ICAvLyBmcm9tIEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJf
dCBMCisvLyAgICAgc2l6ZV90IEwKIC8vICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhl
c2UgZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJ
WE1FOiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRl
ci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAv
LyBCIGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3Zl
cmZsb3ciIGRhdGEgZm9yCkBAIC0xMDMsMTQgKzEwNCwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAg
c3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQ
dHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQogICAgIHNpemVf
dCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKTsgfQogICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUqIHR5cGVkVmVjdG9yKCkgY29uc3QKQEAgLTEyMiw0NiArMTIzLDQ2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4odmVj
dG9yKCkpOwogICAgIH0KIAotICAgIGJvb2wgaW5Cb3VuZHModW5zaWduZWQgaSkgY29uc3QKKyAg
ICBib29sIGluQm91bmRzKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkg
PCBtX2xlbmd0aDsKICAgICB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBtZWFudCB0byBt
YXRjaCBpbmRleGVkIGFjY2VzcyBtZXRob2RzIHRoYXQgSlNPYmplY3QKICAgICAvLyBzdXBwb3J0
cyAtIGhlbmNlIHRoZSBzbGlnaHQgcmVkdW5kYW5jeS4KLSAgICBib29sIGNhbkdldEluZGV4UXVp
Y2tseSh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHNpemVf
dCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGluQm91bmRzKGkpICYmIEFkYXB0b3I6
OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9Ci0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKKyAgICBib29sIGNhblNldEluZGV4
UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBpIDwgbV9sZW5ndGggJiYgdmFsdWUuaXNOdW1iZXIoKSAmJiBBZGFwdG9yOjpjYW5Db252
ZXJ0VG9KU1F1aWNrbHk7CiAgICAgfQogICAgIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZSh1bnNpZ25lZCBpKSBjb25zdAorICAgIHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShzaXplX3QgaSkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICByZXR1
cm4gdHlwZWRWZWN0b3IoKVtpXTsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZSBnZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseShzaXpl
X3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b0pTVmFsdWUobnVs
bHB0ciwgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpKSk7CiAgICAgfQogICAgIAotICAg
IHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSh1bnNpZ25lZCBpLCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1
ZShzaXplX3QgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICB0eXBlZFZlY3RvcigpW2ldID0gdmFsdWU7
CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFs
dWUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFs
dWUpCiAgICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICBz
ZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKGksIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+
KHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIGJvb2wgc2V0
SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IGksIEpTVmFsdWUganNW
YWx1ZSkKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE3Niw5ICsxNzcs
MTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMg
RWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRh
cHRvcj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0
b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFk
YXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7CisgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2Vy
Y2lvbihKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENv
ZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxl
bWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVl
IGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0
Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7CisgICAgfQogCiAgICAgdm9pZCBzb3J0KCkKICAg
ICB7CkBAIC0xOTgsMjEgKzIwNSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseShzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBtX2xlbmd0aAotICAg
ICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBj
aGVjayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoID49IG9mZnNldDsK
KyAgICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKG9mZnNldCwgbGVuZ3RoLCBt
X2xlbmd0aCk7CiAgICAgfQogICAgIAogICAgIC8vIExpa2UgY2FuU2V0UXVpY2tseSwgZXhjZXB0
OiBpZiBpdCByZXR1cm5zIGZhbHNlLCBpdCB3aWxsIHRocm93IHRoZQogICAgIC8vIGFwcHJvcHJp
YXRlIGV4Y2VwdGlvbi4KLSAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9vbCB2YWxpZGF0ZVJhbmdl
KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCBy
ZXR1cm5zIGZhbHNlCiAgICAgLy8gdGhlbiBpdCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlv
bi4KLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmpl
Y3QqLCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlw
ZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0
Kiwgc2l6ZV90IG9mZnNldCwgSlNPYmplY3QqLCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoLCBDb3B5VHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwo
KTsKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJ
bXBsKCk7CkBAIC0zMTgsOCArMzIyLDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9y
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhT
cGVjaWZpY1R5cGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQg
b2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9i
YWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFk
YXB0b3I+KiwKKyAgICAgICAgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29w
eVR5cGUpOwogCiAgICAgLy8gVGhlIEVDTUEgNiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5nIHBv
aW50IFR5cGVkIEFycmF5cyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgogICAg
IC8vCkBAIC0zNDksNyArMzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1cmlmeUFycmF5KCkK
ICAgICB7CiAgICAgICAgIEVsZW1lbnRUeXBlKiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBhcnJheVtpXSA9
IHB1cmlmeU5hTihhcnJheVtpXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCBkMjU4NDA2N2U4M2YuLjMzNmYxYWVlM2Y3MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNvbnN0cnVjdEN1c3RvbUFycmF5
QnVmZmVySWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVmlld0NsYXNzPgotaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNpZ25lZCBv
ZmZzZXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aE9wdCkKK2lubGluZSBKU09iamVj
dCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUg
Zmlyc3RBcmd1bWVudCwgc2l6ZV90IG9mZnNldCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0
aE9wdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIGlubGluZSBK
U09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0ds
b2JhbE9iamVjdCogZ2xvCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSAw
OwogICAgICAgICBpZiAobGVuZ3RoT3B0KQogICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0
LnZhbHVlKCk7CiAgICAgICAgIGVsc2UgewpAQCAtMTgyLDcgKzE4Miw3IEBAIGlubGluZSBKU09i
amVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2Jh
bE9iamVjdCogZ2xvCiAgICAgLy8gLSBBIHByaW1pdGl2ZS4gVGhpcyBjcmVhdGVzIGEgbmV3IHR5
cGVkIGFycmF5IG9mIHRoYXQgbGVuZ3RoIGFuZCB6ZXJvLWluaXRpYWxpemVzIGl0LgogCiAgICAg
aWYgKEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGZpcnN0
VmFsdWUpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICAgICAgc2l6ZV90IGxlbmd0
aDsKICAgICAgICAgSlNBcnJheUJ1ZmZlciogY3VzdG9tQnVmZmVyID0gbnVsbHB0cjsKIAogICAg
ICAgICBpZiAoaXNUeXBlZFZpZXcob2JqZWN0LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGUpKSB7CkBAIC0yNTAsNyArMjUwLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8K
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBm
aXJzdFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7CisgICAgc2l6ZV90IGxl
bmd0aCA9IGZpcnN0VmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3Ro
Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgbGVuZ3RoKSk7CiB9CkBAIC0yNzUsOCArMjc1LDggQEAgQUxXQVlTX0lOTElORSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2Jq
ZWN0KgogICAgIH0KIAogICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CisgICAgc2l6ZV90IG9mZnNldCA9
IDA7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGZpcnN0VmFsdWUpICYmIGFy
Z0NvdW50ID4gMSkgewogICAgICAgICBvZmZzZXQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4NSw3ICsyODUs
NyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICAvLyBJZiB0aGUgbGVuZ3Ro
IHZhbHVlIGlzIHByZXNlbnQgYnV0IHVuZGVmaW5lZCwgdHJlYXQgaXQgYXMgbWlzc2luZy4KICAg
ICAgICAgICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpOwogICAgICAgICAgICAgaWYgKCFsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9JbmRleChnbG9iYWxPYmplY3Qs
IFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldyA/ICJieXRl
TGVuZ3RoIiA6ICJsZW5ndGgiKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhWYWx1
ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsIFZpZXdDbGFzczo6VHlwZWRBcnJheVN0
b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldyA/ICJieXRlTGVuZ3RoIiA6ICJsZW5ndGgiKTsKICAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApp
bmRleCA0NTAyMzg3OTJkMTAuLmEzZGRjMWY4MzZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oIgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlzLmgiCisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDcsNyArNDgs
NyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC02NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3RvcigKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3Ro
LCB2b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0
KHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyArNzksNyBAQCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTk5LDE3ICsxMDAs
MTcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZz
ZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBzaXplX3Qgc2l6
ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNp
emUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7
Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKKyAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6
dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoLCBlbGVtZW50
U2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZl
ciIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGlmICghQXJyYXlCdWZm
ZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemUpKSB7Cisg
ICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9m
ZnNldCwgZWxlbWVudFNpemUpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQnl0ZSBvZmZzZXQgaXMg
bm90IGFsaWduZWQiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE0NSw3
ICsxNDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2Uo
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2
MCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFu
Z2UoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJB
ZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNw
ZWNpZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBv
ZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAg
IHVuc2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCisgICAgc2l6ZV90IG90aGVyT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC0yMTgsNyArMjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBv
dGhlci0+ZXhpc3RpbmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJF
bGVtZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5
cGUgPT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAog
ICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVy
dFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5
QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgK
IAogICAgIC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRy
eSB0byBjb3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXpl
KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNr
bHlUb05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRv
cjo6dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhl
ci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0y
MzgsMTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
ZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJt
ZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7
IGktLTspIHsKICAgICAgICAgdHJhbnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBs
YXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNr
bHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykK
ICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2Zl
ckJ1ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBA
QCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNU
eXBlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVj
dE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsK
ICAgICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUp
IHsKLSAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNp
bmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6
IHdlIGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIG90aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Kj4ob2JqZWN0KTsKICAgICAgICAgbGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhl
ci0+bGVuZ3RoKCkpOwogICAgICAgICAKQEAgLTMxMiw5ICszMTMsMTEgQEAgYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ugd29u
J3QgZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBt
b3JlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihsZW5ndGgpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0T2Zm
c2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkpKTsKICAgICAgICAgLy8gV2UgY291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQg
cmlnaHQgbm93LCB3ZSBkb24ndC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xv
YmFsT2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+
Z2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwg
dmFsdWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkg
fHwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5k
ZXggYjYzYjY4YTI1YjQ1Li4xOTg2MzkwZDhiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaApAQCAtNjAsNiArNjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1
bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNzIEFy
cmF5UHJvZmlsZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNz
IEludGVybmFsRnVuY3Rpb247CkBAIC0yMTEsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAg
ICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0gICAgICAg
ICAgICBzZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICBp
ZiAodHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2
bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yODksNyArMjg4LDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29u
c3Q7Ci0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBj
b25zdDsKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQs
IEFycmF5UHJvZmlsZSogPSBudWxscHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNhbkdldElu
ZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgICAgIAotICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNv
bnN0CisKKyAgICAvLyBVc2VzIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRo
ZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgSlNWYWx1ZSB0
cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUg
PSBudWxscHRyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGlm
IChjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpOworICAgICAgICAgICAgICAgIHJl
dHVybiBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIGFycmF5UHJvZmlsZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVT
OgogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTEsMzUgKzQxMSw3MyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0LCBpKTsKICAgICB9CiAKLSAgICBib29sIGNhblNl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0OwogICAg
IHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSk7Ci0g
ICAgICAgIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5
cGUoVk0mLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRp
Y2F0ZSBzdWNjZXNzCisgICAgLy8gVXNlIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8g
c2V0IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgYm9v
bCB0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlLCBBcnJh
eVByb2ZpbGUqKTsKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVk
IGksIEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAg
ICAgICAgc3dpdGNoIChpbmRleGluZ01vZGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19J
TkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlGb3JU
eXBlZEFycmF5KGksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnlTZXRJbmRleFF1aWNr
bHlGb3JUeXBlZEFycmF5KGksIHYsIGFycmF5UHJvZmlsZSk7CiAgICAgICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgY2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2Ug
QUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJ
VEFCTEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExfV1JJVEFC
TEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCF2LmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRv
RG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRkFM
TFRIUk9VR0g7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9V
U19JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0
b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBi
dXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVy
KHYpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAg
ICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAg
ICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElO
R19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNO
dW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGls
ZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVtYmVy
KCk7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBj
b252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYp
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1ZTsKKyAg
ICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAg
ICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3Jh
Z2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0
dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGkgPj0g
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUo
dm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgTm9uQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0
QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT52ZWN0b3JMZW5ndGgoKQotICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5LT5h
cnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBpZiAoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICBpZiAoaSA+
PSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCisKICAgICB2b2lk
IHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7CiAg
ICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDhmZmM1
ZjkzODIyZi4uNzYwYTlhOWUyZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDIxICs0NjUsMTUgQEAgaW5saW5lIGJvb2wg
SlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29u
c3QKICAgICB9CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CitpbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHR5cGUoKSkg
ewotI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAotICAgIGNhc2UgbmFtZSAj
IyBBcnJheVR5cGUgOlwKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBuYW1lICMj
IEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOwotICAgICAgICBG
T1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9B
UlJBWV9UWVBFKQotI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKyAgICBpZiAoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgg
JiYgYXJyYXlQcm9maWxlKQorICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBl
ZEFycmF5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhcnJheVByb2ZpbGUpOworI2VuZGlm
CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5
KHVuc2lnbmVkIGkpIGNvbnN0Ci17CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgQ0FT
RV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKICAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDog
e1wKQEAgLTUxMiw3ICs1MDYsNTAgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIH0KLSAgICAKKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVp
Y2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFs
dWUgdikKK3sKKyAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzLT5idXR0ZXJmbHkoKS0+
YXJyYXlTdG9yYWdlKCk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB4ID0gc3RvcmFnZS0+
bV92ZWN0b3JbaV07CisgICAgSlNWYWx1ZSBvbGQgPSB4LmdldCgpOworICAgIHguc2V0KHZtLCB0
aGlzLCB2KTsKKyAgICBpZiAoIW9sZCkgeworICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVz
SW5WZWN0b3I7CisgICAgICAgIGlmIChpID49IHN0b3JhZ2UtPmxlbmd0aCgpKQorICAgICAgICAg
ICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAxKTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIEpT
T2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFs
dWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCit7CisgICAgc3dpdGNoICh0eXBlKCkp
IHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorI2RlZmluZSBVUERBVEVfQVJSQVlfUFJP
RklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHsgXAorICAgICAgICBpZiAoKGkgPiBBcnJheVByb2Zp
bGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoKSAmJiBhcnJheVByb2ZpbGUpXAorICAgICAg
ICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpO1wKKyAgICB9IHdo
aWxlIChmYWxzZSkKKyNlbHNlCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5
UHJvZmlsZSkgZG8geyBcCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7XAorICAgIH0g
d2hpbGUgKGZhbHNlKQorI2VuZGlmCisjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1l
KSBcCisgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHsgXAorICAgICAgICBhdXRvKiB0eXBl
ZEFycmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyk7XAorICAgICAgICBp
ZiAoIXR5cGVkQXJyYXktPmNhblNldEluZGV4UXVpY2tseShpLCB2KSlcCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7XAorICAgICAgICB0eXBlZEFycmF5LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7
XAorICAgICAgICBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpO1wKKyAgICAg
ICAgcmV0dXJuIHRydWU7XAorICAgIH0KKyAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VY
Q0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQorI3VuZGVmIENBU0VfVFlQ
RURfQVJSQVlfVFlQRQorI3VuZGVmIFVQREFURV9BUlJBWV9QUk9GSUxFCisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGNlNzMwZjNiZjk2NS4uMDkxOWU3
MjE4NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBA
IC04OTgsOCArODk4LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdp
dGhJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBpZiAoYmFz
ZS0+aXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZSk7Ci0gICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpbmRleCkpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGlu
ZGV4KSk7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhR
dWlja2x5KGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKICAgICB9CiAKICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+
Y2FuR2V0SW5kZXgoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VD
b3VudC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4uYjdkOGM5ZmNmNzJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorCiAjaW5jbHVk
ZSA8bGltaXRzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtOTYsNyArOTgsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQgKiBLQjsKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE1B
WF9BUlJBWV9CVUZGRVJfU0laRSAvIHN0YXRpY19jYXN0PHVpbnQ2NF90PihwYWdlU2l6ZSkpOwog
CiAgICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBiZTA4YWVmNzMxYzMuLjFkMGQ0
M2RiNTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQg
IDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRv
IDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3Vr
ZSBTdXp1a2kuCisKKyAgICAgICAgTWFkZSBzb21lIG9mIENoZWNrZWRBcml0aG1ldGljIGNvbnN0
ZXhwciwgYW5kIGFkZGVkIGlzU3VtU21hbGxlclRoYW5PckVxdWFsIHNpbmNlIGl0IGlzIGEgY29t
bW9ubHkgdXNlZCB0ZXN0IGluIEFycmF5QnVmZmVyIGFuZCBlYXN5IHRvIGdldCB3cm9uZyBpbiB0
ZXJtcyBvZiBvdmVyZmxvdy4KKworICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgor
ICAgICAgICAoV1RGOjppc0luQm91bmRzKToKKyAgICAgICAgKFdURjo6Y29udmVydFNhZmVseSk6
CisgICAgICAgIChXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFsKToKKwogMjAyMS0xMC0xNSAg
Um9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCBy
Mjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRl
c3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291
cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLmVmYWI0
YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQs
MTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8
VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wg
aXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0
YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9v
bCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4g
c3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAg
ICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwg
YWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJu
IHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5k
c0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGlj
IGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBp
bkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mg
c28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lv
biB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFy
Z2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJn
ZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0
LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAog
fTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0
ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZl
cnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2
YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwg
YmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBU
YXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5k
c0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRp
YyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIg
aW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNv
dXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRh
cmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0
aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAt
MTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJv
dW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkK
ICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4K
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQs
IFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+
IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29u
c3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3Jl
YXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyAr
MTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1
Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291
cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBz
YW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAg
ICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsy
MDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1
Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBT
b3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291
cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCiAgICAgewogICAgICAgICAvLyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHBy
ZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+Ojpp
bkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBU
YXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1
dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4u
IGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93
ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JF
cXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sKKyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93
PiBzdW0gPSBhOworICAgIHN1bSArPSBiOworICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQo
KSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsKK30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5v
T3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQsNCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVy
Zmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxv
d3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhh
bk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCA5YzlmODBlM2ZkMWIuLjY0NmU5YmVhNThl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xNDEsNiArMTQxLDE1IEBACiAjZGVmaW5lIFVTRV9K
U1ZBTFVFMzJfNjQgMQogI2VuZGlmCiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBpbnN0ZWFkIGJl
IGJhc2VkIG9uIFNJWkVfTUFYID09IFVJTlQ2NF9NQVgKKy8vIEJ1dCB0aGlzIHJlcXVpcmVzIGlu
Y2x1ZGluZyA8Y3N0ZGludD4gYW5kIFBsYXRmb3JtLmggaXMgaW5jbHVkZWQgaW4gYWxsIGtpbmQg
b2Ygd2VpcmQgcGxhY2VzLCBpbmNsdWRpbmcgbm9uLWNwcCBmaWxlcworLy8gQW5kIGluIHByYWN0
aWNlIENQVShBRERSRVNTNjQpIGlzIGVxdWl2YWxlbnQgb24gYWxsIHBsYXRmb3JtcyB3ZSBzdXBw
b3J0ICh2ZXJpZmllZCBieSBzdGF0aWNfYXNzZXJ0cyBpbiBBcnJheUJ1ZmZlci5oKQorI2lmIENQ
VShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9MQVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNk
ZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAvKiBGSVhNRTogRW5hYmxlIEJJR0lOVDMyIG9wdGltaXphdGlvbiBhZ2FpbiBhZnRlciB3
ZSBlbnN1cmUgU3BlZWRvbWV0ZXIyIGFuZCBKZXRTdHJlYW0yIHJlZ3Jlc3Npb25zIGFyZSBmaXhl
ZC4gKi8KIC8qIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ3Nzcg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmYmRmODM1M2E3ZmIuLjc4YWRkMDFjOWMzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQzIEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAg
cmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICBTb21lIHBhcnRzIG9mIFdlYkNvcmUgdXNlIFR5cGVkQXJyYXlzLCBhbmQgd291bGQg
bm90IGJ1aWxkIGFmdGVyIEkgbWFkZSB0aGUgbGVuZ3RoKCkgZnVuY3Rpb24gb24gdHlwZWQgYXJy
YXlzIHJldHVybiBVQ1BVUmVnaXN0ZXIgaW5zdGVhZCBvZiB1aW50MzJfdC4KKyAgICAgICAgTW9z
dCBmaXhlcyB3ZXJlIHRyaXZpYWwsIHRoZSBvbmx5IGV4Y2VwdGlvbiBpcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwLCB3aGVyZSBJIGhhZCB0byBpbmNyZW1lbnQgdGhlIHZlcnNpb24gbnVtYmVy
LCBhcyBBcnJheUJ1ZmZlciAoYW5kIEFycmF5QnVmZmVyVmlld3MpIG5vdyB3cml0ZS9yZWFkIHRo
ZWlyIGxlbmd0aCBpbiBhIDY0LWJpdCBmaWVsZCAoYW5kIHNhbWUgZm9yIHRoZSBieXRlT2Zmc2V0
IG9mIEFycmF5QnVmZmVyVmlldykuCisKKyAgICAgICAgSSBhbHNvIGhhZCB0byBhZGQgYSB0ZXN0
IGluIFBpeGVsQnVmZmVyLmNwcCB0aGF0IHRoZSBzaXplIG9mIHRoZSBBcnJheUJ1ZmZlciBpdCB3
aWxsIHRyeSB0byBhbGxvY2F0ZSBpcyA8IElOVDMyX01BWC4KKyAgICAgICAgT3RoZXJ3aXNlLCB0
aGUgdGVzdCBMYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFw
ZS1vdXRzaWRlLWltYWdlZGF0YS1vdmVyZmxvdy5odG1sIHdoaWNoIGNoZWNrcyB0aGF0IHZlcnkg
bGFyZ2UgaW1hZ2VzIGFyZSBwcm9wZXJseSByZWplY3RlZCB3aXRob3V0IGNyYXNoaW5nLCB3b3Vs
ZCB0aW1lb3V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhlIGNvZGUgaXMgYWxyZWFk
eSBleHRlbnNpdmVseSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBhbmQgSSBpbXBsZW1lbnRl
ZCBubyBuZXcgZmVhdHVyZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5uZWwpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9tYWluRGF0YSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEFycmF5QnVmZmVyVmlldyk6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBmaWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1
ZTo6ZW5xdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oOgorCiAyMDIxLTEwLTE1ICBSb2JpbiBNb3Jp
c3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHIyODQyMzAsIG15
IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2UgaXQgYnJlYWsgdGVzdHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5kZXggY2I3
ZTg0ZDQ1MzgzLi5iMThkOGZkNmEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIGRl
c3RpbmF0aW9uLAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZm
ZXJPZmZzZXQ7CisgICAgc2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsK
ICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3RpbmF0aW9uLmdldCgpLmxlbmd0aCgpLCBjb3VudCk7
CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IGNoYW5uZWxEYXRhLT5kYXRhKCk7CkBAIC0y
MjYsNyArMjI2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlUb0NoYW5u
ZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBzb3VyY2UsIHVuc2lnbmUKICAgICBpZiAoYnVmZmVyT2Zm
c2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCi0gICAgdW5zaWdu
ZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAgIHNpemVfdCBjb3VudCA9
IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBzdGQ6Om1pbihzb3VyY2Uu
Z2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gc291
cmNlLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCA2YzFjOTQ0MDIyZWQuLmQ1M2I5ZTY0NGViNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlz
ZXIuY3BwCkBAIC0xOTYsOCArMTk2LDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRl
RnJlcXVlbmN5RGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogICAgIGRvRkZUQW5h
bHlzaXNJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBsaW5lYXIgbWFn
bml0dWRlIHRvIHVuc2lnbmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5zaWduZWQgc291cmNlTGVu
Z3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6
Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVf
dCBzb3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7CisgICAgc2l6ZV90IGRl
c3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3Qg
bGVuZ3RoID0gc3RkOjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAg
aWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgY29uc3QgZG91YmxlIHJhbmdlU2NhbGVGYWN0b3Ig
PSBtX21heERlY2liZWxzID09IG1fbWluRGVjaWJlbHMgPyAxIDogMSAvIChtX21heERlY2liZWxz
IC0gbV9taW5EZWNpYmVscyk7CiAgICAgICAgIGNvbnN0IGRvdWJsZSBtaW5EZWNpYmVscyA9IG1f
bWluRGVjaWJlbHM7CkBAIC0yMjcsOCArMjI4LDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpn
ZXRGbG9hdFRpbWVEb21haW5EYXRhKEZsb2F0MzJBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIHVuc2lnbmVkIGZmdFNpemUg
PSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUs
IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0
aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlz
LT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3Rp
bmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5w
dXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYm
IG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRC
dWZmZXJHb29kKTsKQEAgLTI1MSw4ICsyNTMsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6Omdl
dEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0gdGhpcy0+
ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5h
dGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0
aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6
ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5hdGlvbkxl
bmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0QnVmZmVy
R29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBtX2lucHV0
QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lucHV0QnVmZmVyR29v
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjE4MjIxZTM1YWE2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2FzbU1vZHVsZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1lhcnJGbGFncy5oPgogI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CkBAIC0zNDIsOCArMzQzLDkgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50VXNh
Z2VzKENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKICAqIFZlcnNpb24gNy4gYWRkZWQgc3Vw
cG9ydCBmb3IgRmlsZSdzIGxhc3RNb2RpZmllZCBhdHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDguIGFk
ZGVkIHN1cHBvcnQgZm9yIEltYWdlRGF0YSdzIGNvbG9yU3BhY2UgYXR0cmlidXRlLgogICogVmVy
c2lvbiA5LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZUJpdG1hcCBjb2xvciBzcGFjZS4KKyAqIFZl
cnNpb24gMTAuIGNoYW5nZWQgdGhlIGxlbmd0aCAoYW5kIG9mZnNldHMpIG9mIEFycmF5QnVmZmVy
cyAoYW5kIEFycmF5QnVmZmVyVmlld3MpIGZyb20gMzIgdG8gNjQgYml0cwogICovCi1zdGF0aWMg
Y29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSA5Oworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEN1cnJlbnRWZXJzaW9uID0gMTA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgVGVybWluYXRvclRh
ZyA9IDB4RkZGRkZGRkY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nUG9vbFRhZyA9IDB4
RkZGRkZGRkU7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9uSW5kZXhQcm9wZXJ0aWVzVGFnID0g
MHhGRkZGRkZGRDsKQEAgLTM5OSw3ICs0MDEsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBPYmplY3RSZWZlcmVuY2UK
ICAqICAgIHwgTWVzc2FnZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAg
fCBBcnJheUJ1ZmZlcgotICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3
U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmd0aDp1aW50MzJfdD4gKEFycmF5
QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQorICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJy
YXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQ2NF90PiA8Ynl0ZUxlbmd0aDp1aW50
NjRfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQogICogICAgfCBDcnlwdG9LZXlU
YWcgPHdyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXt3cmFwcGVkS2V5TGVu
Z3RofT4KICAqICAgIHwgRE9NUG9pbnQKICAqICAgIHwgRE9NUmVjdApAQCAtNDYzLDcgKzQ2NSw3
IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAw
MDA7CiAgKiAgICBPYmplY3RSZWZlcmVuY2VUYWcgPG9wSW5kZXg6SW5kZXhUeXBlPgogICoKICAq
IEFycmF5QnVmZmVyIDotCi0gKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQzMl90PiA8
Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgorICogICAgQXJyYXlCdWZmZXJUYWcgPGxlbmd0aDp1aW50
NjRfdD4gPGNvbnRlbnRzOmJ5dGV7bGVuZ3RofT4KICAqICAgIEFycmF5QnVmZmVyVHJhbnNmZXJU
YWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgU2hhcmVkQXJyYXlCdWZmZXJUYWcgPHZhbHVlOnVp
bnQzMl90PgogICoKQEAgLTk5OCw4ICsxMDAwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYXJyYXlCdWZm
ZXJWaWV3ID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyVmlldyh2bSwgb2JqKTsKLSAgICAg
ICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZU9mZnNl
dCgpKSk7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlclZp
ZXctPmJ5dGVMZW5ndGgoKSkpOworICAgICAgICB1aW50NjRfdCBieXRlT2Zmc2V0ID0gYXJyYXlC
dWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCk7CisgICAgICAgIHdyaXRlKGJ5dGVPZmZzZXQpOworICAg
ICAgICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCk7
CisgICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gYXJyYXlCdWZmZXJWaWV3LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwog
ICAgICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXph
dGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKQEAgLTExMzEsOCArMTEzNSwxMyBAQCBw
cml2YXRlOgogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGJ1ZmZlci0+cmVzb2x1
dGlvblNjYWxlKCkpKTsKICAgICAgICAgd3JpdGUoYnVmZmVyLT5jb2xvclNwYWNlKCkpOwogCi0g
ICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKSk7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIENoZWNr
ZWRVaW50MzIgYnl0ZUxlbmd0aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAg
IGlmIChieXRlTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgY29kZSA9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CisgICAgICAgIHdyaXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxl
bmd0aCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykK
QEAgLTEyNjMsOCArMTI3MiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdyaXRlKElt
YWdlRGF0YVRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7CiAgICAg
ICAgICAgICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0
YSgpLmRhdGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVj
a2VkVWludDMyIGRhdGFMZW5ndGggPSBkYXRhLT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGRhdGFMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB3cml0ZShkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5k
YXRhKCkuZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5j
b2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQpAQCAtMTMxMSw4ICsxMzI1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgd3JpdGUoQXJyYXlCdWZmZXJUYWcpOwotICAg
ICAgICAgICAgICAgIHdyaXRlKGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAg
ICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0
YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgdWludDY0
X3QgYnl0ZUxlbmd0aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgICAgICAg
ICAgd3JpdGUoYnl0ZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChv
YmotPmluaGVyaXRzPEpTQXJyYXlCdWZmZXJWaWV3Pih2bSkpIHsKQEAgLTE1MDIsNyArMTUxNyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsKICAg
ICB9CiAKLSAgICB2b2lkIHdyaXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQorICAgIHZvaWQgd3Jp
dGUodWludDY0X3QgaSkKICAgICB7CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVy
LCBpKTsKICAgICB9CkBAIC0yMzkxLDcgKzI0MDYsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWQodW5zaWduZWQgbG9uZyBsb25nJiBpKQor
ICAgIGJvb2wgcmVhZCh1aW50NjRfdCYgaSkKICAgICB7CiAgICAgICAgIHJldHVybiByZWFkTGl0
dGxlRW5kaWFuKGkpOwogICAgIH0KQEAgLTI1NTUsOSArMjU3MCwxMCBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlcihSZWZQ
dHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMZW5n
dGhUeXBlPgorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVySW1wbChSZWZQdHI8QXJyYXlCdWZmZXI+
JiBhcnJheUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aDsKKyAgICAgICAg
TGVuZ3RoVHlwZSBsZW5ndGg7CiAgICAgICAgIGlmICghcmVhZChsZW5ndGgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAobV9wdHIgKyBsZW5ndGggPiBtX2VuZCkKQEAg
LTI1NjksMTUgKzI1ODUsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlC
dWZmZXJWaWV3KQorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
IGFycmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAg
ICAgICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5QnVmZmVyKTsK
KyAgICAgICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlckltcGw8dWludDY0X3Q+KGFycmF5QnVmZmVy
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGVuZ3RoVHlwZT4KKyAgICBib29s
IHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsKFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3
KQogICAgIHsKICAgICAgICAgQXJyYXlCdWZmZXJWaWV3U3VidGFnIGFycmF5QnVmZmVyVmlld1N1
YnRhZzsKICAgICAgICAgaWYgKCFyZWFkQXJyYXlCdWZmZXJWaWV3U3VidGFnKGFycmF5QnVmZmVy
Vmlld1N1YnRhZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90
IGJ5dGVPZmZzZXQ7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZU9mZnNldDsKICAgICAgICAgaWYg
KCFyZWFkKGJ5dGVPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1
aW50MzJfdCBieXRlTGVuZ3RoOworICAgICAgICBMZW5ndGhUeXBlIGJ5dGVMZW5ndGg7CiAgICAg
ICAgIGlmICghcmVhZChieXRlTGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyT2JqID0gYXNPYmplY3QocmVhZFRlcm1pbmFsKCkp
OwpAQCAtMjU4Nyw3ICsyNjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgZWxlbWVu
dFNpemUgPSB0eXBlZEFycmF5RWxlbWVudFNpemUoYXJyYXlCdWZmZXJWaWV3U3VidGFnKTsKICAg
ICAgICAgaWYgKCFlbGVtZW50U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOworICAgICAgICBM
ZW5ndGhUeXBlIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYg
KGxlbmd0aCAqIGVsZW1lbnRTaXplICE9IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTI2MzQsNiArMjY1OCwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
fQogCisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlC
dWZmZXJWaWV3KQorICAgIHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAgICAg
ICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQzMl90Pih2bSwgYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICAgICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQ2NF90
Pih2bSwgYXJyYXlCdWZmZXJWaWV3KTsKKyAgICB9CisKICAgICBib29sIHJlYWQoVmVjdG9yPHVp
bnQ4X3Q+JiByZXN1bHQpCiAgICAgewogICAgICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7
CkBAIC0zMzQ1LDcgKzMzNzYsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGNvbG9yU3BhY2Ug
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBhcnJheUJ1ZmZlcjsKIAotICAgICAgICBpZiAoIXJlYWQoc2VyaWFsaXphdGlvblN0YXRl
KSB8fCAhcmVhZChsb2dpY2FsV2lkdGgpIHx8ICFyZWFkKGxvZ2ljYWxIZWlnaHQpIHx8ICFyZWFk
KHJlc29sdXRpb25TY2FsZSkgfHwgKG1fdmVyc2lvbiA+IDggJiYgIXJlYWQoY29sb3JTcGFjZSkp
IHx8ICFyZWFkQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpKSB7CisgICAgICAgIGlmICghcmVhZChz
ZXJpYWxpemF0aW9uU3RhdGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNh
bEhlaWdodCkgfHwgIXJlYWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAh
cmVhZChjb2xvclNwYWNlKSkgfHwgIXJlYWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5
QnVmZmVyKSkgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBmYjc1N2E0ZDc0ZjYuLjdlNDlhOWU3MzIyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgaWYgKGhhc0FycmF5KSB7CiAgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
LT5zaXplKCkpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmFycmF5QnVmZmVyQ29udGVudHMg
OiAqbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwg
YXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpOworICAgICAgICAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygp
KTsKICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlckNvbnRlbnRzLmRhdGEoKSksIGFycmF5QnVmZmVy
Q29udGVudHMuc2l6ZUluQnl0ZXMoKSwgMSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTksOSAr
MTk5LDEyIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICAgICAgYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAg
ICAgIHdoaWxlIChhcnJheUxlbmd0aC0tKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBidWZmZXJT
aXplOworICAgICAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6ZTsKICAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkQnVmZmVyU2l6ZSA9IGJ1ZmZlclNp
emU7CisgICAgICAgICAgICBpZiAoY2hlY2tlZEJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6
ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxMiw3ICsyMTUsNyBA
QCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkt
PmFwcGVuZCh7IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2Fj
YWdlRGVzdHJ1Y3RvcigpIH0pOworICAgICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
LT5hcHBlbmQoeyBidWZmZXIsIGNoZWNrZWRCdWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFkNjg2ZC4u
NTU5ZWJjYzQ4YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5jcHAKQEAgLTY4LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKFdl
YkNvcmU6OkJsb2ImIGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNpemUoKTsK
ICAgICBpZiAoIWJ5dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVy
OjpjcmVhdGUoMFUsIDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mgd2VpcmQs
IGJ1dCBpcyByZXF1aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8gc3VjY2Vl
ZC4KKyAgICAgICAgLy8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdoZXJlIEFy
cmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkg
Y291bGQgYmUgY2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHNpemVfdD4oMFUpLCAxKSwgMCwgMCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxCbG9iTG9h
ZGVyPihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAppbmRleCAyNWJmZjE1M2QxMmMuLjc1NDNmNDc1YTI3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
LmNwcApAQCAtNzQsNiArNzQsOCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1
ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8g
YnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1
ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGlmIChidWZmZXJTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAg
aWYgKCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IDg3MGJkYzgwZjM1
NS4uZDgzZTRhNDA0MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT0JveC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJGb3VyQ0MuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjMsNyArNjQs
MTAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFImIHJldHVyblZh
bHVlLCBWJiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5lc3MpCiAg
ICAgewogICAgICAgICBib29sIHJlYWRTdGF0dXMgPSBmYWxzZTsKLSAgICAgICAgVCB2YWx1ZSA9
IHZpZXcudGVtcGxhdGUgcmVhZDxUPihvZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFu
LCAmcmVhZFN0YXR1cyk7CisgICAgICAgIHNpemVfdCBhY3R1YWxPZmZzZXQgPSBvZmZzZXQ7Cisg
ICAgICAgIFQgdmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4oYWN0dWFsT2Zmc2V0LCBlbmRp
YW5uZXNzID09IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0luQm91bmRzPHVpbnQzMl90PihhY3R1YWxPZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0
ID0gYWN0dWFsT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWRTdGF0dXMpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441392</attachid>
            <date>2021-10-15 10:03:45 -0700</date>
            <delta_ts>2021-10-15 14:51:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>273670</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjI2MmNkYTM4M2Q1Li5lYzZiYjNjMWQ4NTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
NSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFr
IHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxseS1v
b2IuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1MzliNTBkMmU1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQorewor
ICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7Citm
dW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4
XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVl
OworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICog
MTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdl
dEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAg
ICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9m
IHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwor
ICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAg
ICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisg
ICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2Yt
Ym91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNz
L3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIu
anMKaW5kZXggNzdkNTBjMzUwYjQ2Li5lZDBlN2FmMDkxM2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JV
RkZFUl9TSVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVx
dWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2
LDEzIEBAIGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewog
ICAgIHZhciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRk
TWVtb3J5KDMyNzY4KTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KCgyKioxNikgKyAxKTsKICAgICBt
b2R1bGUuaW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwog
fQogCi1pZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikgeworaWYg
KGV4Y2VwdGlvbiAhPSAiQ29tcGlsZUVycm9yOiBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDE1OiBNZW1vcnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgNjU1MzcgaXMg
aW52YWxpZCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0aGlzLnRvQnVmZmVy
KCkpJykiKSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1t
b3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMK
aW5kZXggYmE2MmQ5MTQ3NmFhLi4wMWYwNmQyZjQ5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2
YXIgZXhjZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0
aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXI7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMDEsIG1heGltdW06IDB4MTAwMDEgfSkuYnVmZmVy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24g
IT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQotICAgIHRocm93ICJGQUlMRUQiOworaWYg
KGV4Y2VwdGlvbiAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCisgICAgdGhyb3cgIkZBSUxFRCwgZXhjZXB0aW9uIHdh
czogIiArIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDEzYWFkNjZjNTEuLjQ1OWZiOTNiNzk1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtNzAsNiArNzAsMjIgQEAKICAgICAgICAgKiBmYXN0L2lubGluZS93b3JkYnJlYWstYXQt
aW5saW5lLWJveC1ib3VuZGFyeS1leHBlY3RlZC5odG1sOiBBZGRlZC4KICAgICAgICAgKiBmYXN0
L2lubGluZS93b3JkYnJlYWstYXQtaW5saW5lLWJveC1ib3VuZGFyeS5odG1sOiBBZGRlZC4KIAor
MjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgUmViYXNlbGlu
ZWQgdGhyZWUgZm9sbG93aW5nIHRlc3RzIGFzIGRpZmZlcmVudCBvciBmZXdlciBlcnJvciBtZXNz
YWdlcyBhcHBlYXIgb24gdGhlIGNvbnNvbGUuCisgICAgICAgIEFsc28gY2hhbmdlZCBjdXJyZW50
VmVyc2lvbiBpbiBzZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGZyb20gOSB0byAxMC4KKwor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3N0b3JhZ2Uvc2VyaWFs
aXplZC1zY3JpcHQtdmFsdWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAy
MDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2Ug
aXQgYnJlYWsgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJp
YWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3Nlcmlh
bGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12
YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0
PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9
IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50
dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZm
ZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1i
dWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9C
dWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVu
Z3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2gu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxl
bmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZl
ci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVm
ZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0
aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9m
ZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5k
ZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkNzYwNDY4MTEyY2YuLmQyNDcwMTJhNzdhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8g
NEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkz
NTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0la
RSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVx
dWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2Vu
dGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZm
ZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBzaXplX3QuCisgICAgICAgIC0gVGhpcyBhbHNv
IHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5l
L0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0
aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlw
ZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3Ry
aWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFy
Z2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUg
REZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFk
IHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3Qg
YWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAg
LSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwv
RGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGlu
ZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11
bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEg
Im1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQ
cm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBp
bmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0
aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBk
YXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3Jy
ZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRp
bWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMu
CisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93
LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0
IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdl
IGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1v
cnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFz
dCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0
QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBj
dXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBl
cmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9V
SW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlz
IHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxs
cHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDAp
CisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3Vu
ZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hp
Y2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2ls
aXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0
eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBi
dXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBv
aW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFz
SW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1Q
dHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0
cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxl
bmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQ
dHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5C
bGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29k
ZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxh
cmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5
cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5s
aW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlD
bGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
R2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlv
bi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNT
dG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGls
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlw
ZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93
ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFu
ZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3Vu
ZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5
cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Z2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAg
IChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJh
eUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVj
a0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRM
T3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6
CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6
CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJ
bmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5
QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3
KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9E
YXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3
OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICog
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6
CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlH
ZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5k
ZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhp
bmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25z
Lmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dh
c21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCkBAIC0yNTQsNyArNTI2LDcgQEAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KIAogICAgICAgICBXaGlsZSBpbmNyZWFz
aW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVt
b3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKLSAgICAg
ICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2Vk
IGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BV
UmVnaXN0ZXIuCisgICAgICAgIC0gNEdCIGlzIG5vdCByZXByZXNlbnRhYmxlIGluIGEgdWludDMy
X3QsIHNvIEkgY2hhbmdlZCBhbGwgbGVuZ3RoIG9mIEFycmF5QnVmZmVyL1R5cGVkQXJyYXkvZXRj
Li4gdG8gYmVpbmcgc2l6ZV90LgogICAgICAgICAtIFRoaXMgYWxzbyByZXF1aXJlZCBjaGFuZ2lu
ZyBOZXdUeXBlZEFycmF5IGluIGFsbCBvZiBMTEludC9CYXNlbGluZS9ERkcvRlRMIHRvIGFjY2Vw
dCBhIG5vbi1pbnQzMiBzaXplLgogICAgICAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgcGVyZm9y
bWFuY2UgcmVncmVzc2lvbnMsIEkgaGFkIHRvIGFkZCBzcGVjdWxhdGlvbiBpbiB0aGUgREZHL0ZU
TCwgd2hpY2ggbm93IGhhdmUgdHdvIHZlcnNpb25zIG9mIE5ld1R5cGVkQXJyYXkgKG9uZSB0aGF0
IHRha2VzIGFuIEludDMyIGFuZCBvbmUgdGhhdCB0YWtlcyBhIFN0cmljdEludDUyKQogICAgICAg
ICAtIFNpbWlsYXJseSwgR2V0QXJyYXlMZW5ndGggYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
IG5vdyBjYW4gZWl0aGVyIHJldHVybiBhbiBJbnQzMiBvciBhIGxhcmdlciBudW1iZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdhYTBiN2JjOWFjLi45M2ViM2JmZTIwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yNjUsOSArMjY1LDkgQEAgcHVibGljOgogICAgIC8vIGlu
IGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZm
ZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3Nl
cyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGlj
IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg
VHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0yNzgsMjEgKzI3OCwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
c3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRy
KHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNp
dCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRw
dHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAg
ICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzAyLDEyICszMDIs
MTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0
cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAg
ICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTMyNSw3ICszMjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzM2LDE3ICsz
MzYsMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJ
bW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQot
ICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25z
dCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0K
KyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM1NywxNSArMzU3LDE1
IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZy
b20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMu
CiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVk
SW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAg
ICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzc2LDE3ICszNzYsMTcgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7
Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
NjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAg
ICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMK
QEAgLTEwNTMsOSArMTA1Myw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAg
IHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQg
Y2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDAxZTQ4YTExYmJiMC4uNDEzMjMwMmY4YTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBA
IC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4
Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Omxz
aGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAm
JiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwg
QWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsK
ICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMg
ZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlv
biwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUu
CisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJl
Y2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwg
ZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVt
cCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1t
NjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAg
ICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50
KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2Ny
YXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAg
Ly8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBu
b3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQor
ICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9Cisj
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCA1Zjk4ZmY5ZTMzN2MuLjg1NzQwNTVjOWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBp
bXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNv
bnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0g
MHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYg
KzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBB
ZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMjQ3MGMx
MTk2NjFiLi4wNzRhMzk4Zjg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRh
Z0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29s
IHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0
aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgp
CiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsK
KyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNo
ID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIs
IHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
aW5kZXggZTY2MTAwYmEyZTQ3Li4zZmFiYzRkODkxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAg
LTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpl
YnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgw
MGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVn
ZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMzk3OTkyYTNhNzUwLi4xMzI1MGVjNDg0
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5z
aWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVl
ZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3Rv
cmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxl
bmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIg
cmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTE4NCwxMiArMTE4NSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKLSAg
ICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxs
VGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0
eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwot
ICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90
LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVy
czo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisg
ICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRp
ZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxs
b2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkgKzEyMDMsMTMgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJl
dXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRj
aDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwot
CiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewpAQCAtMTU5NSw5ICsxNjA1LDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9
CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
Ly8gT3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3Bl
cmF0aW9uIGZ1bmN0aW9uLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRj
aEdQUikpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0g
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUg
bGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRp
bmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBh
ZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3Rh
dGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNjA1
LDkgKzE2MjAsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAg
ICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0
ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAg
ICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0
cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9h
ZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9h
ZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uMzZmZWIxNDRiYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVz
IHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0
eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBB
cnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3
aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAg
IH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7
IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVz
c09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7
IH0KQEAgLTI0NCw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9
OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNw
ZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFz
IGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFz
aWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3Jh
Z2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBp
bXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9
OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAg
ICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NCwxMyBAQCBzdGF0aWNf
YXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJh
eVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVM
YXJnZVR5cGVkQXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE0
LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5r
ZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCAyYjJmNWUwMzAxOWYuLmExY2Q2OTk0NGFiMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMzQ2Myw3ICszNDYzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7Cisg
ICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkpKSB7
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0NzEsNiArMzQ3MSwxNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlm
ICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5s
ZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzk2LDgg
KzM4MDcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKICAg
ICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5
dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVP
ZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAo
Ynl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MDYsNiArMzgxNywxOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5
KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
IHsKQEAgLTQxMDksNiArNDEzMywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjogeworICAgICAgICAvLyBT
ZWUgdGhlIENoZWNrSW5Cb3VuZHMgY2FzZSwgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlciB3aGF0
IHdlIHB1dCBoZXJlLgorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0lu
dDMyT25seSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CiAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRl
eCA2ZTI3NTMxMDRiZDMuLmEzYjkzNDBmNjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0z
MjUsNiArMzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUo
bm9kZS0+Y2hpbGQxKCksIG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBz
aG91bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDog
ewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZl
Y3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4
IDZlNGZlOWFmYTNlYi4uNzI1OGUzNzE1ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6cmVmaW5lKAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFj
dGlvbigpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgp
KQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSkKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9u
KCkpOwogICAgIAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMg
b2JqZWN0IGJlaGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYg
KzI5NCw4IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFy
cmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9u
bHkgcHJlc2VydmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBh
bmQgbm90IEdldEJ5VmFsIGFzIHdlbGwuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWwpIHsKICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMsIE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAg
IHJldHVybiB0eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3Vu
ZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGEwMjZh
YWQxODkzYi4uZGY3NWM3ODkwZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5z
cGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNp
b24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0
ZTsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNv
bnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlv
bjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJy
YXlDbGFzcywgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBAQCBwdWJs
aWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAg
ICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5
dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFy
cmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBl
LCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9u
LCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKKyAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
biwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxz
ZSkKICAgICB7CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAgdS5hc0J5
dGVzLmFycmF5Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRp
b24gPSBzcGVjdWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJz
aW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAg
ICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNs
YXNzLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikK
QEAgLTE2Myw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlv
biA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252
ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFz
Qnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJy
YXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpUeXBlPih1
LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgQXJyYXk6
OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OlNwZWN1bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpD
b252ZXJzaW9uPih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0aW9uIGFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUuYXNCeXRl
cy5hY3Rpb24pOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVuc2lnbmVk
IGFzV29yZCgpIGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzksMzUgKzE4
NSw1MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9i
c2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpB
Y3Rpb24sIGJvb2wgbWFrZVNhZmUpOwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFy
cmF5OjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVj
dWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwg
Y29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlC
ZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhBcnJh
eUNsYXNzKEFycmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdp
dGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBt
YXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBBcnJheU1v
ZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRoQXJyYXlD
bGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNsYXNzIGFy
cmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNw
ZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywg
c3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5
KTsKKyAgICB9CiAKKyAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2FmZSkKLSAg
ICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAgICAgICAg
ICByZXR1cm4gQXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5t
YXlTdG9yZVRvSG9sZShsb2NrZXIpKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5
OjpUb0hvbGU7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gQXJyYXk6OkluQm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFycmF5TW9k
ZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFBy
b2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBt
eUFycmF5Q2xhc3M7Ci0KICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAgICAgICBp
ZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZp
dHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJh
eU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0yMjEsMjMg
KzI0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6
OkFycmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5
Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5
Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlw
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9Ci0gICAg
Ci0gICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNp
b24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAgfQotICAg
IAotICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwg
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
LCBhY3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uID0g
c3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKworICAg
ICAgICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBlZEFycmF5
KGxvY2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25B
bmRNYXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBsYXJnZVR5
cGVkQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTI2LDcg
KzUzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkK
ICAgICAgICAgICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkKICAgICAg
ICAgICAgICYmIHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAgICAgICAg
ICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAgICAgICYm
IGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYmIG1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgPT0gb3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIpIGNvbnN0
CkBAIC01NzksNyArNTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlD
bGFzczsKICAgICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAgICB1aW50
OF90IGNvbnZlcnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0OworICAg
ICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOworICAgICAgICAgICAgdWludDhfdCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA6IDE7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5zaWduZWQg
YXNXb3JkOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggYzg4ZGU0YjIzOWM3Li5hMDBjODUzNzAxMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zODA3
LDggKzM4MDcsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHN0YXRpY19h
c3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRy
aW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAg
ICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIVVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIyLDI2ICszODMxLDMwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7CisgICAgICAg
IE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAg
ICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAo
KnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5
U3RvcmFnZVR5cGU7CkBAIC0zODUzLDEzICszODY2LDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0
aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRo
aXNOb2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7
CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJy
YXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJp
bnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBl
ID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uOWFkNWMy
NzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVu
dW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjM5
LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNl
IENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVl
UmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEzMzksMTEgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9m
ZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAg
ICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5
cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwg
TGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAg
ICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFy
cmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAg
ICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9u
RW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5l
IGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUzNGUuLmZhMTdiZjExNDE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjQwMjg0Y2ZhMjJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdy
aXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgor
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9p
bnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk3LDEw
ICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdD
b2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4u
NTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAg
ICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAg
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXgg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0
dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQx
NkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENs
YW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNw
ZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1Nw
ZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxh
cmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRT
aXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcx
NywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCku
cmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5
TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJy
YXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUt
PmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwor
CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiArMjIxNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBBc3Nl
cnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpA
QCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9k
ZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAgICBOb2RlKiBwcmVw
ZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1v
ZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXko
YXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwot
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAotICAg
ICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2Vs
bFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5k
ZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4uMmQ4NmViNzU3Mzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBA
IC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMg
Y2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMg
ZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRv
IHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNo
LAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmls
ZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZv
cm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBi
dXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFj
a3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKKy8vIGRldGFp
bHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRp
bmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2
YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0
CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggMmJiOWQ0YmVhODAw
Li4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVk
QXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVHlwZWRB
cnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZWRBcnJh
eUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1
MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAg
ICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggMjY5MTcxY2IzNDFkLi40
MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVh
cExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9j
LAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAgICBU
eXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVkQXJyYXlMZW5ndGhJbnQ1Mkxv
YywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9j
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjZkZWRhMDM3
ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTEzMzUsNyArMTMzNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2YWxpZGF0
ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRz
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwgbm9kZS0+
Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUtcHJvZHVjaW5nIG5vZGUuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5
NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAg
ICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5k
ZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2
LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkg
YXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZp
dCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5k
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2UgdG8gcmV0dXJuaW5nIEludDUy
IGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlkYXRpb24gZmFpbHVyZXMuICov
IFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNy
byhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8o
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hl
Y2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRo
IHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tK
U0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1
dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1MDdmMWU4MGFjMC4uOTQ1
MzUzNTZkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAg
IGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5
KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNr
bHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAog
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUs
NyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6
ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90
IHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDE0IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50cHRyX3Q+OjptYXgoKSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0
VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQ
dHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1
bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyAr
MTkwOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcg
KzE5MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Nyw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NzIsNyArMTk3Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg5LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjAwNCw3ICsyMDA1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIxLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDM2LDcgKzIwMzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTMsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIw
NjgsNyArMjA2OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJ
bnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjRmZDU3OTVkMmQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5Kikp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsx
MzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgog
ICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcApp
bmRleCBlM2EyMzlhMzNlMzAuLmQ5ZGFlM2E4MzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwyMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVk
QXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgs
IG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJh
eU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3Ro
LCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkgfHwg
bV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55
LCBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgSW50NTJSZXBVc2UpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSk7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3LDEyICsxNDcsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBP
cEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtu
b3duQ2VsbFVzZSksIHN0b3JhZ2UpOwotICAgICAgICBOb2RlKiBjaGVja0luQm91bmRzID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIGluZGV4
LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworICAgICAgICBOb2RlKiBjaGVja0luQm91
bmRzOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICgob3AgPT0gR2V0
QXJyYXlMZW5ndGgpICYmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5
KCkgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZs
b3cpKSkgeworICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55LCBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93
bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGxlbmd0aC0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgYSBkdW1teSBz
aW5jZSB0aGlzIG5vZGUgZG9lcyBub3QgYWN0dWFsbHkgcmV0dXJuIGFueXRoaW5nLgorICAgICAg
ICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHNJbnQ1Miwg
bV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBJbnQ1
MlJlcFVzZSkpOworICAgICAgICB9IGVsc2UgeworI2VuZGlmCisgICAgICAgICAgICBOb2RlKiBs
ZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgp
LCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgICAgICB9CisjZW5kaWYKKwogCiAgICAgICAgIEFkamFjZW5jeUxp
c3QgYWRqYWNlbmN5TGlzdCA9IG1fZ3JhcGguY29weVZhcmFyZ0NoaWxkcmVuKG1fbm9kZSk7CiAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGVja0luQm91bmRz
LCBVbnR5cGVkVXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uMmU3ZjU2YWExMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjg4LDYgKzI4OCw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAg
Y2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM3Myw2ICszNzQsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI1ZjZhY2E2N2M0OC4uNzQ5ZWY1NDZhYmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzIzOCwyOCArMzIzOCw0MyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUQ29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNvdQogCiB9CiAK
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5k
cyhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUikKIHsKICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQogICAgICAg
ICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmll
dyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZv
ck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlN
b2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXct
Pmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAg
ICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgp
OwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUt
PmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29u
c3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgp
KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKICAgICAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyNlbmRpZgog
ICAgIH0KKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5k
ZXhHUFIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBpbmRl
eEdQUiwgc2NyYXRjaEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBqdW1wKTsKQEAgLTMzODAsMTAgKzMzOTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBz
dG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwog
ICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9y
YWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcDsKICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTMzOTcsNyArMzQxNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBu
b2RlLCBUeXBlZEFycmF5VHlwZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9
IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9ybWF0ID09
IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxvYWRGcm9tSW50VHlwZWRB
cnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIHR5
cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50
VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3BlY3VsYXRl
LCBzaG91bGRCb3gsIHJlc3VsdEZQUik7CkBAIC0zNTU1LDYgKzM1NzIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFn
ZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMp
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJl
ZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMik7CkBAIC0zNTg3LDcgKzM2MDUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHBy
b3BlcnR5KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVl
R1BSICE9IHN0b3JhZ2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0g
anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAo
ZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1LDEwICszNjYzLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5v
ZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7
CiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBi
YXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5n
cHIoKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
czsKICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQ
UlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dp
dGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9h
ZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzY5MCwxMCArMzcx
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1
ZUZQUiA9IHZhbHVlT3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRP
ZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVy
dHksIHNjcmF0Y2hHUFIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsK
ICAgICBjYXNlIDQ6IHsKQEAgLTc5NjcsNyArNzk4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcs
IGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUp
Ci0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3Jh
Z2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VS
ZWcpOwpAQCAtODAzOSw5ICs4MDYxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BS
UmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQ
Uik7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQ
UiAhPSBkYXRhR1BSKTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAK
QEAgLTgwODMsNiArODEwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0
KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBBSSBwcm9t
aXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJ
bnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJS
ZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiArODM3MywxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBtX2ppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
MTExMTksMTAgKzExMTQ5LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9k
ZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5
U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBh
IGludHB0cl90LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXpl
SW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzY3JhdGNoR1BSKTsK
KyNlbHNlCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKyAgICBlbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0
dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXpl
R1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5
IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEz
Niw4ICsxMTE4MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZh
c3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNz
ZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQp
KTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkgKzEx
MjQ0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgbV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkpOworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBU
cnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAt
MTQxNjcsNiArMTQyMjQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXkoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDA3YjU2M2IzNDgzYS4uMDQ5YmNmN2U2ZmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5
ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUq
KTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQ
Uik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2Vu
ZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzMSwxMCArMTQzOCwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhNaW5NYXgoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JU
eXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJZk91
dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5k
c0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSop
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJl
ZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdz
LCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAt
MjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9
OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNw
ZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9h
ZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCku
CisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhl
IGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4uMjJmNmY3Mjc0YWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgp
LmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0g
bm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5
cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5
cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJH
QiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBj
b21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjog
eworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQ
cm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzk4LDYgKzQ0MDksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQ1MkNv
bnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCAzYjM5M2Y1Mjc1ZjcuLmI1YzQ4NDk4M2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
ZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6
ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5
TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5
cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkg
dmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3By
KCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5
QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9m
ZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVk
QXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIp
OworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRh
R1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRh
dGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0
YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShB
Uk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5
dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxs
cHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJN
NjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7Cisg
ICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVz
dWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYgLy8gVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5v
ZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjQsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOworICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
aW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgICAgICBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoLmdwcigpKTsK
ICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwogICAgICAgICAKQEAgLTQz
ODEsNiArNDQ2MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorI2lmIFVTRShBRERSRVNTNjQp
CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNl
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAg
YnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5
SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTg4LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJl
YWs7CkBAIC01NTg5LDcgKzU2ODcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQy
KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRk
NjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFs
dWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgbV9qaXQu
bG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNoZWNrIGFnYWluc3QgMCBoZXJlLCBuZWdhdGl2ZSBpbmRpY2VzIGFy
ZSBjYXVnaHQgYnkgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggcmlnaHQgYWZ0ZXIKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbmRpZgogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQx
KSk7CiAKQEAgLTU3OTAsNyArNTg5NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwg
dDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBtX2pp
dC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVl
ZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMg
YXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0Miwg
dDEpKTsKIApAQCAtNjA0Miw2ICs2MTU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBB
c3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0lu
Qm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zm
c2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFm
MjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAg
ICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIz
YmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApA
QCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9u
OgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYg
KzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1
cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBA
IC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
IGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2Ug
Q2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1
bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNh
OGY1Y2ZjNzk1ZS4uNDhkNGUxYmZmNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNr
SW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5v
ZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29t
cGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
b3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGlu
Z1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAg
ICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVj
dG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigp
KSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25z
dEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAg
ICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw5ICs0ODc3LDMwIEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIo
bV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQs
IHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhlIHJl
c3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBtdXN0
IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorICAgICAgICBz
ZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAgICB9CisKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdt
aXNzaW5nLW5vcmV0dXJuIgorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
QXNJbnQ1MigpCisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBS
RUxFQVNFX0FTU0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVu
dC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2
NF90KSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldFN0cmljdEludDUyKHJlc3VsdCk7
CisgICAgfQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCiAgICAgdm9pZCBjb21waWxl
R2V0UHJvdG90eXBlT2YoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTUw
NTQsOCArNTA4NiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5Vmll
dygpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUo
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxs
cHRyLCBtX291dC5hYm92ZShsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQu
Y2FzdFRvSW50MzIobGVuZ3RoKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIHNldEludDMyKG1f
b3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUwNjQsNiArNTEwMSwxNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIK
KyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlW
aWV3KCkpOworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNFX0FT
U0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7Cisg
ICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAg
fQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCiAgICAgdm9pZCBjb21waWxlR2V0VmVj
dG9yTGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkpIHsKQEAgLTUxMDgsNyArNTE1NiwyMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBkZXBl
bmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50YWlu
IHRoYXQKICAgICAgICAgLy8gd2UgZG9taW5hdGUgdGhlbS4KICAgICB9Ci0gICAgCisKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1
MigpCisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNF
X0FTU0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7
CisgICAgICAgIC8vIFNpZ24tZXh0ZW5kZWQgdG8gYWxzbyBjYXRjaCBuZWdhdGl2ZSBpbmRpY2Vz
CisgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9u
b2RlLT5jaGlsZDEoKSkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbG93U3RyaWN0SW50NTIo
bV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1
ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworICAgICAg
ICAvLyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBubyB1c2Vy
IG9mIHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0
aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2UgZG9taW5h
dGUgdGhlbS4KKyAgICB9CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICBMVmFs
dWUgY29tcGlsZUdldEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwpAQCAtNjAwOCwxMSArNjA3MiwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAg
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2goCi0gICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxv
d0ludDMyKGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZC
b3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAg
ICAgICAgICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0Vf
QVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzQ29u
ZGl0aW9uID0gbV9vdXQuYWJvdmVPckVxdWFsKG1fb3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpLCBs
b3dTdHJpY3RJbnQ1MihjaGlsZDUpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZDUudXNlS2luZCgpID09IEludDMyVXNl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291
dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91bmRzQ29u
ZGl0aW9uLCB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7CisKICAg
ICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhp
c0luQm91bmRzLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmUodmFsdWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUodHlwZSkpOwogICAgICAgICAgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC04MTY5LDk1ICs4MjQwLDE4IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsK
IAotICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsK
LQotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9
IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKAotICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIo
SlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJl
bHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xv
d0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAg
IG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0Vs
ZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0
LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5j
b25zdEludFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5z
dGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAg
c3RvcmFnZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAg
ICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQ
dHIoMykpKSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAg
ICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4
dFB0cihzaXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0
ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0
aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAg
YXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6
U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5n
cHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5
UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAg
fQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9v
dXQuYW5jaG9yKHN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWdu
RXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTFZh
bHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVk
QXJyYXlUeXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAg
ICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRW
YWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5p
bnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9B
UlJBWV9UWVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAg
ICBjYXNlIFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBh
bGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNs
b3dDYXNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIo
c3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rv
cik7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUz
MihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBt
dXRhdG9yRmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBt
X291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRB
cnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwg
Y29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5w
aGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgIGNhc2Ug
SW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1
Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5
U2xvd1BhdGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlv
bj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUo
dHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXpl
ID0gbG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAg
ICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTgyNzcsNyArODI3MSwxMDQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRz
KQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5p
bnRQdHJaZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5h
Ym92ZShzaXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0
U2l6ZUxpbWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxs
RW5vdWdoQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0
aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJp
dCBudW1iZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0Fy
cmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6
ZSA9CisgICAgICAgICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihs
b2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0
QW5kKAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQ
dHIoNykpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxp
bnRwdHJfdD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBh
bGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0
ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBD
ZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAg
ICAgICBzdG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAg
bV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIo
MykpKSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMu
dHlwZWRBcnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAg
ICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50
KHBvaW50ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVn
aXN0ZXIoc3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRC
aXRzLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwor
ICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9
IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVl
ID0gbnVsbHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBU
WVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTog
XAorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUj
I0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5H
X0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQ
RV9DQVNFCisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3Vs
dFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQ
dHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RS
ZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFz
dFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKHNpemU2NEJpdHMpLCBmYXN0
UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbmRpZgor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBm
YXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAg
ICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBt
X291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAg
ICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0u
ZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RH
UFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRW
YWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CkBAIC0xNDY1Niw2ICsxNDc0Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBhcmUg
MzItYml0cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0d2Vl
biBiYXNlK2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZhbHVl
IGJhc2UsIExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBBYnN0
cmFjdEhlYXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxpbmdM
aW1pdCA9IDEwOwpAQCAtMTU1OTEsNyArMTU2ODQsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBE
YXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsK
KyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBO
byBuZWVkIGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVj
ayBhZ2FpbnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3Ro
ID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUg
aW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRl
eFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0
LDcgKzE1ODMzLDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBt
X25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxl
c3NUaGFuKGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5n
dGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGlj
aXQgY29tcGFyaXNvbiBvZiBpbmRleCB0byAwLCB0aGUgY2hlY2sgYWdhaW5zdCBsZW5ndGggY2F0
Y2hlcyB0aGF0IGNhc2UKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIo
bV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfbGVuZ3RoKSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0
Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAg
ICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25z
dEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzM0MSwxMSBAQCBwcml2
YXRlOgogICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRy
KSB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQ
cmltaXRpdmUpIHsKKyNpZiBVU0UoQUREUkVTUzY0KQorICAgICAgICAgICAgICAgIExWYWx1ZSBz
aXplID0gbV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFz
ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuaAppbmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1
ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0
cnVjdGlvbjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9p
bnRlcikgeyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5l
Z2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBs
b2FkMzIoYmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1
ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwg
ZmllbGQpOyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1
ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JbnRyaW5zaWNFbWl0dGVyLmNwcAppbmRleCA1Yzc2NWVkOTc2NTAuLjg5NTY4ZDQ2MzBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtODYsMjMgKzg2LDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdElu
dHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2gg
KGludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1
ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAg
ICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQu
Ym94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0
ZUxlbmd0aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
dmFsdWVHUFIpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKQorICAgICAgICAg
ICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVl
R1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2Ny
YXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0
eXBlKSA+IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNp
bmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3Mg
YW4gaW50MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVHUFIsIEltbTMyKGxvZ0Vs
ZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBh
IGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gQUREUkVTUzMyIHBsYXRmb3JtcyBUeXBlZEFycmF5cyBj
YW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgorICAgICAgICAg
ICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVl
R1BSKTsKICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVS
ZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMzMsOCArMTQyLDEyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAg
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVlR1BSKTsKICAgICAgICAg
CiAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0
ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJ
bnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkz
Nyw4IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5k
ZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2Jq
ZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmpl
Y3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJy
YXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMo
KTsKQEAgLTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBn
ZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vi
c2NyaXB0LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7Cisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFz
VWludDMySW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBp
ZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3Ry
aW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAg
IGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNr
bHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQg
PSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRP
ZkJvdW5kcyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUo
KSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaSkgPCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAg
ICAgaWYgKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAg
ICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVy
Zmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFu
ZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0
MAogICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFs
dWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1
YnNjcmlwdC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUp
CiAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQx
YzcxYjYwMDQ0ZS4uZTc2ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAj
ZGVmaW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNl
bHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwog
I2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5k
ZXggNTY4MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3Vu
ZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAg
ICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUg
cmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJr
aW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3MCwxMyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAg
IGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAg
ICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNV
aW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlm
IChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRl
eFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlj
a2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9i
amVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlKSkKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAg
ICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI0MjFhN2ZhNDEwZS4u
NmNkYmQ4ZGUzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAog
ICAgIGNvbnN0IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJl
SURUYWJsZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lm
IExBUkdFX1RZUEVEX0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9
IGNvbnN0ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQK
KwogY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJN
NjQgb3IgQVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5
UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQog
ICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5
cGUKIGVuZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaElu
dEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBp
bmRleCBpcyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21h
Y3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZp
bmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMg
Rmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRz
IHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5
cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwx
MSArMTMyNiwyNiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlz
aEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAg
ICAgICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAg
ICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAg
ICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgaWYgTEFSR0VfVFlQRURf
QVJSQVlTCisgICAgICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFz
ZV0sIGxlbmd0aAorICAgICAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3Ro
W2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRo
CisgICAgICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJl
IGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUg
bm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBpZiBMQVJHRV9U
WVBFRF9BUlJBWVMKKyAgICAgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6
bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpYWVx
IGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAg
ICAgIGVuZAorICAgIGVuZAorCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIGJx
YmVxIGluZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFsbFR5cGVkQXJyYXkKKyAg
ICAgICAgc2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6CiAgICAgZW5kCiAK
ICAgICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFzZV0sIHQzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCmluZGV4IDUwZDVkYmRmNjAyYS4uNGU3MGY4YjE1ZmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMTYyNCw2ICsxNjI0LDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3Zh
bCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAg
IGRpc3BhdGNoKCkKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisg
ICAgICAgIGNyYXNoKCkKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBnZXQo
bV9iYXNlLCB0MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Miwg
Q2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE2NjksNyArMTY3Myw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4
ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5
VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFs
VHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZh
bCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xv
dzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQppbmRleCBkODRiNmVhZDM3ZmQuLjM1OWNlYzVjOTA4MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MTMs
NiArMTcxMywxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlW
YWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmaW5pc2hHZXRC
eVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZW5kCiAKKyAgICBtYWNybyBzZXRMYXJnZVR5
cGVkQXJyYXkoKQorICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgICAgIHN0
b3JlYiAxLCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlCZUxhcmdl
VHlwZWRBcnJheVt0NV0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3Jhc2goKQorICAgICAg
ICBlbmQKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKIAogICAgIGdldChtX2Jhc2Us
IHQyKQpAQCAtMTcyMyw2ICsxNzMxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogICAg
IGdldChtX3Byb3BlcnR5LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6
ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgIyBUaGlzIHNpZ24tZXh0ZW5zaW9uIG1h
a2VzIHRoZSBib3VuZHMtY2hlY2tpbmcgaW4gZ2V0QnlWYWxUeXBlZEFycmF5IHdvcmsgZXZlbiBv
biA0R0IgVHlwZWRBcnJheS4KICAgICBzeGkycSB0MSwgdDEKIAogICAgIGxvYWRDYWdlZEpTVmFs
dWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKQEAgLTE3NjMsNyAr
MTc3Miw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEs
IGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93
KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5p
c2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAK
IC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRf
YnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
CmluZGV4IGM5YjhmMmE3MTkxZS4uNDk3ZjQ5ZThhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBSZWY8U2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4+IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3Ry
dWN0b3IoKQogICAgIHJldHVybiBkZXN0cnVjdG9yLmdldCgpLmNvcHlSZWYoKTsKIH0KIAotU2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3Ry
dWN0b3IpCitTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkKICAgICAsIG1fZGVzdHJ1
Y3RvcihXVEZNb3ZlKGRlc3RydWN0b3IpKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplKQpAQCAt
NjgsNyArNjgsNyBAQCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKEFy
cmF5QnVmZmVyQ29udGVudHMmJiBvdGhlcikKICAgICBvdGhlci50cmFuc2ZlclRvKCp0aGlzKTsK
IH0KIAotQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBk
ZXN0cnVjdG9yKQorQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50cyh2b2lk
KiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykKICAgICAsIG1f
c2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CkBAIC0xMDksMjMgKzEwOSwyMSBAQCB2b2lkIEFy
cmF5QnVmZmVyQ29udGVudHM6OnJlc2V0KCkKICAgICBtX3NpemVJbkJ5dGVzID0gMDsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
Cit2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
CiB7Ci0gICAgLy8gRG8gbm90IGFsbG93IDMxLWJpdCBvdmVyZmxvdyBvZiB0aGUgdG90YWwgc2l6
ZS4KLSAgICBpZiAobnVtRWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0g
bnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7Ci0gICAgICAgIGlmICh0b3RhbFNpemUgLyBu
dW1FbGVtZW50cyAhPSBlbGVtZW50Qnl0ZVNpemUgfHwgdG90YWxTaXplID4gTUFYX0FSUkFZX0JV
RkZFUl9TSVpFKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgQ2hlY2tlZFNpemUgc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50czsKKyAg
ICBzaXplSW5CeXRlcyAqPSBlbGVtZW50Qnl0ZVNpemU7CisgICAgaWYgKHNpemVJbkJ5dGVzLmhh
c092ZXJmbG93ZWQoKSB8fCBzaXplSW5CeXRlcy52YWx1ZSgpID4gTUFYX0FSUkFZX0JVRkZFUl9T
SVpFKSB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2l6
ZV90IHNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1FbGVtZW50cykgKiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgc2l6ZV90IGFsbG9jYXRpb25T
aXplID0gc2l6ZUluQnl0ZXM7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5C
eXRlcy52YWx1ZSgpOwogICAgIGlmICghYWxsb2NhdGlvblNpemUpCiAgICAgICAgIGFsbG9jYXRp
b25TaXplID0gMTsgLy8gTWFrZSBzdXJlIG1hbGxvYyBhY3R1YWxseSBhbGxvY2F0ZXMgc29tZXRo
aW5nLCBidXQgbm90IHRvbyBtdWNoLiBXZSB1c2UgbnVsbCB0byBtZWFuIHRoYXQgdGhlIGJ1ZmZl
ciBpcyBkZXRhY2hlZC4KIAogICAgIHZvaWQqIGRhdGEgPSBHaWdhY2FnZTo6dHJ5TWFsbG9jKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGFsbG9jYXRpb25TaXplKTsKLSAgICBtX2RhdGEgPSBEYXRhVHlw
ZShkYXRhLCBzaXplSW5CeXRlcyk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUlu
Qnl0ZXMudmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIHJlc2V0KCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzIsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQog
ICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCiAgICAgICAgIG1lbXNldChkYXRhLCAw
LCBhbGxvY2F0aW9uU2l6ZSk7CiAKLSAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXM7Cisg
ICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogICAgIG1fZGVzdHJ1
Y3RvciA9IEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKTsKIH0KQEAg
LTE3OCw3ICsxNzYsNyBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnNoYXJlV2l0aChBcnJh
eUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVChvdGhlci5tX3NpemVJ
bkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVu
dEJ5dGVTaXplKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIGF1dG8gYnVmZmVy
ID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIGlmICghYnVm
ZmVyKQpAQCAtMTkxLDcgKzE4OSw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUo
b3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUo
c291cmNlLCBieXRlTGVuZ3RoKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIwOCw3ICsyMDYsNyBA
QCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50
cyYmIGNvbnRlbnRzKQogLy8gQ3VycmVudCB0aGlzIGlzIG9ubHkgdXNlZCBmcm9tOgogLy8gLSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldzw+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LiBCdXQgaW4g
dGhhdCBjYXNlLCB0aGUgbWVtb3J5IHNob3VsZCBoYXZlIGFscmVhZHkgY29tZQogLy8gICBmcm9t
IHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoKSB8fCAoR2lnYWNhZ2U6
OmNvbnRhaW5zKGRhdGEpICYmIEdpZ2FjYWdlOjpjb250YWlucyhzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSkgKyBieXRlTGVuZ3RoIC0gMSkpKTsKICAgICByZXR1cm4gY3JlYXRlRnJv
bUJ5dGVzKGRhdGEsIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURl
c3RydWN0b3IoKSk7CkBAIC0yMjAsNyArMjE4LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3QK
IC8vICAgbG9uZ2VyIGNhZ2VkLCBvciB3ZSBjb3VsZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIHR5
cGVkIGFycmF5IHR5cGVzIHRoYXQgYXJlIHVuY2FnZWQgYW5kIGdldCBhY2Nlc3NlZAogLy8gICBk
aWZmZXJlbnRseS4KIC8vIC0gV2ViQXNzZW1ibHkuIFdhc20gc2hvdWxkIGFsbG9jYXRlIGZyb20g
dGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiB7CiAgICAgaWYgKGRhdGEg
JiYgIUdpZ2FjYWdlOjppc0NhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGRhdGEpKQogICAgICAg
ICBHaWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0yMjksNyArMjI3LDcg
QEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW4KICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoY29u
dGVudHMpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1FbGVt
ZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpaZXJvSW5pdGlhbGl6
ZSk7CiB9CkBAIC0yMzksNyArMjM3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gdHJ5Q3JlYXRlKG90
aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29u
dGVudHMgY29udGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwg
QXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwpAQCAtMjQ4LDE3ICsyNDYsMTcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmcKICAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoV1RG
TW92ZShjb250ZW50cyksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7CiAgICAgcmV0dXJuIHRyeUNyZWF0ZShudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlh
bGl6ZSk7CiB9CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXpl
LCBwb2xpY3kpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjY2LDE1ICsyNjQsMTcgQEAgUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVMKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRl
TGVuZ3RoKQorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBi
eXRlTGVuZ3RoKQogewotICAgIEFTU0VSVCghYnl0ZUxlbmd0aCB8fCBzb3VyY2UpOwogICAgIGF1
dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihXVEZNb3ZlKGNvbnRlbnRzKSkp
OwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICBp
ZiAoYnl0ZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgbWVtY3B5
KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOworICAgIH0KICAgICByZXR1cm4g
YnVmZmVyOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGlj
eSBwb2xpY3kpCiB7CiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250
ZW50cy50cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplLCBwb2xpY3kpOwpA
QCAtMjkxLDcgKzI5MSw3IEBAIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNv
bnRlbnRzJiYgY29udGVudHMpCiB7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZh
bHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKK3NpemVfdCBBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCkK
IHsKICAgICBBU1NFUlQobGVmdCA8PSByaWdodCk7CiAgICAgaWYgKHggPCBsZWZ0KQpAQCAtMzAx
LDkgKzMwMSw5IEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCB1
bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCkKICAgICByZXR1cm4geDsKIH0KIAotdW5zaWdu
ZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAorc2l6ZV90IEFy
cmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25l
ZCBjdXJyZW50TGVuZ3RoID0gYnl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBjdXJyZW50TGVuZ3Ro
ID0gYnl0ZUxlbmd0aCgpOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gY3Vy
cmVudExlbmd0aCArIGluZGV4OwogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJy
ZW50TGVuZ3RoKTsKQEAgLTMxOSw5ICszMTksOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiAgICAgcmV0dXJuIHNsaWNlV2l0aENs
YW1wZWRJbmRleChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVk
IGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25z
dAogewotICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7
CisgICAgc2l6ZV90IHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAg
YXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJl
c3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCA2OGZmOTBlMTNlYmEuLmVhY2NhMmMyMzNh
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzMsMTMgKzMzLDIyIEBACiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5j
bHVkZSA8d3RmL1BhY2tlZFJlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorc3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0
X3QpKTsKKyNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFICgxdWxsIDw8IDMyKQorI2Vsc2UK
K3N0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQzMl90KSk7CisvLyBC
ZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNpemVfdCB0byBzdG9yZSB0aGUgc2l6ZSBpbiBieXRlcyBv
ZiBhcnJheSBidWZmZXJzLCB3ZSBjYW5ub3Qgc3VwcG9ydCA0R0Igb24gMzItYml0IHBsYXRmb3Jt
cy4KKy8vIFNvIHdlIGFyZSBzdGlja2luZyB3aXRoIDJHQi4gSXQgc2hvdWxkIGluIHRoZW9yeSBi
ZSBwb3NzaWJsZSB0byBzdXBwb3J0IHVwIHRvICg0R0IgLSAxQikgaWYgYW55b25lIGNhcmVzLgog
I2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgMHg3ZmZmZmZmZnUKKyNlbmRpZgogCiBjbGFz
cyBWTTsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNTEsNyArNjAsNyBAQCB1c2luZyBQYWNrZWRB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQodm9pZCopPgogCiBjbGFzcyBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoK
LSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHModm9pZCogZGF0YSwgc2l6ZV90LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlv
biYmKTsKICAgICB+U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cygpOwogICAgIAogICAgIHZvaWQq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKG1fc2l6ZUluQnl0ZXMp
OyB9CkBAIC02MCwxNCArNjksMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEYXRhVHlwZSA9IENh
Z2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICBEYXRh
VHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9k
ZXN0cnVjdG9yOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAgc2l6ZV90IG1fc2l6
ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlckNvbnRlbnRzIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBcnJheUJ1ZmZlckNvbnRlbnRzKTsKIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJy
YXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFy
cmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oQXJyYXlCdWZmZXJDb250ZW50
cyYmKTsKQEAgLTc5LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQogICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9Ci0gICAgdW5zaWdu
ZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CisgICAgc2l6
ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIAog
ICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQogICAgIApAQCAt
OTQsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9udEluaXRpYWxpemUKICAgICB9Owog
Ci0gICAgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgdm9pZCB0cnlBbGxvY2F0
ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6
YXRpb25Qb2xpY3kpOwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgdHJh
bnNmZXJUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJik7CkBAIC0xMDUsMjggKzExNCwyOCBAQCBwcml2
YXRlOgogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICAgUGFja2VkUmVmUHRyPFNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHM+IG1fc2hhcmVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7CisgICAg
c2l6ZV90IG1fc2l6ZUluQnl0ZXM7CiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBH
Q0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogcHVibGljOgotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZm
ZXJDb250ZW50cyYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUZy
b21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
UHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0
aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRl
RnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZl
ckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
UHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRl
TGVuZ3RoKTsKIAogICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGlu
ZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdDsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsKICAgICAK
ICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5QnVm
ZmVyU2hhcmluZ01vZGUpOwpAQCAtMTM3LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3Vi
bGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+
IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRy
PEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2ln
bmVkIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVy
PiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kKSBjb25zdDsK
ICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpA
QCAtMTYxLDEyICsxNzAsMTIgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4+IHByaW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3Rv
cigpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5z
aWduZWQpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CisgICAgc3RhdGljIFJlZjxB
cnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2
b2lkKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUo
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVy
Q29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1
ZmZlckNvbnRlbnRzJiYpOwotICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJsZSBp
bmRleCkgY29uc3Q7Ci0gICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRvdWJs
ZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CisgICAgaW5saW5lIHNpemVfdCBj
bGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CisgICAgc3RhdGljIGlubGluZSBzaXplX3Qg
Y2xhbXBWYWx1ZShkb3VibGUgeCwgc2l6ZV90IGxlZnQsIHNpemVfdCByaWdodCk7CiAKICAgICB2
b2lkIG5vdGlmeURldGFjaGluZyhWTSYpOwogCkBAIC0xOTIsNyArMjAxLDcgQEAgY29uc3Qgdm9p
ZCogQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzLmRhdGEo
KTsKIH0KIAotdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAorc2l6ZV90
IEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZW50
cy5zaXplSW5CeXRlcygpOwogfQpAQCAtMjA1LDcgKzIxNCw3IEBAIGJvb2wgQXJyYXlCdWZmZXI6
OmlzU2hhcmVkKCkgY29uc3QKIHNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJbkJ5
dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBzY2FsZSB0
aGlzIGJ5IHRoZSBzaGFyZWQgcmVmIGNvdW50IG9yIHNvbWV0aGluZy4KLSAgICByZXR1cm4gc2l6
ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsKKyAg
ICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIGJ5dGVMZW5ndGgoKTsKIH0KIAogdm9pZCBB
cnJheUJ1ZmZlcjo6cGluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDc2OGZlYTkwOWJhYi4uNDczNzIyNzQ1MzRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsMTggKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJheUJ1
ZmZlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KAotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogICAgICAgICA6IG1fYnl0ZU9mZnNldChieXRlT2Zm
c2V0KQogICAgICAgICAsIG1faXNEZXRhY2hhYmxlKHRydWUpCiAgICAgICAgICwgbV9ieXRlTGVu
Z3RoKGJ5dGVMZW5ndGgpCiAgICAgICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewot
ICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZzZXQp
OworICAgIENoZWNrZWQ8c2l6ZV90LCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zmc2V0
KTsKICAgICBsZW5ndGggKz0gYnl0ZUxlbmd0aDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGxlbmd0aCA8PSBtX2J1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBpZiAobV9idWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyVmlldy5oCmluZGV4IDdlMzk2MDc3NzhhOS4uMDk5OTU0Yjg2NTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IApAQCAtNzcsMTQgKzc4LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CiAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29u
c3QKKyAgICBzaXplX3QgYnl0ZU9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNE
ZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J5dGVP
ZmZzZXQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fYnl0ZUxlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlTGVuZ3RoOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERldGFjaGFi
bGUoYm9vbCk7CiAgICAgYm9vbCBpc0RldGFjaGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRGV0
YWNoYWJsZTsgfQpAQCAtOTIsMTkgKzkzLDE4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICAgIC8vIEhlbHBlciB0byB2ZXJp
ZnkgYnl0ZSBvZmZzZXQgaXMgc2l6ZSBhbGlnbmVkLgotICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5
dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpCisgICAg
c3RhdGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IGVsZW1lbnRTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAm
IChzaXplIC0gMSkpOworICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKGVsZW1lbnRTaXpl
IC0gMSkpOwogICAgIH0KIAotICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1
Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwotICAgIC8vIHdpdGhpbiByYW5nZS4KLSAgICBz
dGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUp
CisgICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFy
cmF5QnVmZmVyIGlzIHdpdGhpbiByYW5nZS4KKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5n
ZUxlbmd0aChjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6
ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOworICAgICAgICBzaXplX3Qg
Ynl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRlT2Zmc2V0
ID4gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWdu
ZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6ZTsK
KyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zm
c2V0KSAvIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwogICAgICAgICBpZiAobnVt
RWxlbWVudHMgPiByZW1haW5pbmdFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTMsNDMgKzExMyw0OCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFs
T2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEFy
cmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVy
VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0
ZUxlbmd0aCk7CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVu
c2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJW
aWV3Kiwgc2l6ZV90IGJ5dGVPZmZzZXQpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBs
KGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9m
ZnNldCk7Ci0gICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBi
b29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgs
IHNpemVfdCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpOwog
Ci0gICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXpl
X3QgcmFuZ2VCeXRlTGVuZ3RoKTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjYWxjdWxhdGVP
ZmZzZXRBbmRMZW5ndGgoCi0gICAgICAgIGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJy
YXlTaXplLAotICAgICAgICB1bnNpZ25lZCogb2Zmc2V0LCB1bnNpZ25lZCogbGVuZ3RoKTsKKyAg
ICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgcmFu
Z2VCeXRlTGVuZ3RoKTsKIAogICAgIC8vIElucHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgZWxl
bWVudHMgZnJvbSB0aGlzIGFycmF5J3MgdmlldzsKICAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGlu
IG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cygKICAgICAgICAgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwKLSAgICAgICAgdW5z
aWduZWQgYXJyYXlCeXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCAqb2Zmc2V0LAotICAgICAg
ICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCisgICAgICAgIHNpemVfdCBhcnJheUJ5dGVPZmZzZXQs
CisgICAgICAgIHNpemVfdCAqb2Zmc2V0LAorICAgICAgICBzaXplX3QgKm51bUVsZW1lbnRzKQog
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRl
T2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgc2l6ZV90IG1heE9mZnNldCA9IChzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihU
KTsKICAgICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKICAgICAgICAgICAgICpvZmZz
ZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqb2Zmc2V0ID0gYXJyYXlC
eXRlT2Zmc2V0ICsgKm9mZnNldCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6
bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1h
aW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2Yo
VCk7CisgICAgICAgIENoZWNrZWRTaXplIGFkanVzdGVkT2Zmc2V0ID0gKm9mZnNldDsKKyAgICAg
ICAgYWRqdXN0ZWRPZmZzZXQgKj0gc2l6ZW9mKFQpOworICAgICAgICBhZGp1c3RlZE9mZnNldCAr
PSBhcnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIGlmIChhZGp1c3RlZE9mZnNldC5oYXNPdmVyZmxv
d2VkKCkgfHwgYWRqdXN0ZWRPZmZzZXQudmFsdWUoKSA+IGJ1ZmZlci5ieXRlTGVuZ3RoKCkpCisg
ICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgKm9mZnNldCA9IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCk7CisgICAgICAgIHNp
emVfdCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkg
LyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0Vs
ZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNl
dCA6IDMxOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdWludDY0X3QgbV9ieXRl
T2Zmc2V0IDogNjM7CisjZWxzZQorICAgIHVpbnQzMl90IG1fYnl0ZU9mZnNldCA6IDMxOworI2Vu
ZGlmCiAgICAgYm9vbCBtX2lzRGV0YWNoYWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9ieXRlTGVu
Z3RoOworICAgIFVDUFVSZWdpc3RlciBtX2J5dGVMZW5ndGg7CiAKICAgICB1c2luZyBCYXNlQWRk
cmVzcyA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsK
ICAgICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2Us
IHBsdXMgdGhlIGJ5dGUgb2Zmc2V0LgpAQCAtMTYwLDgxICsxNjUsNDYgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBBcnJheUJ1ZmZlclZp
ZXc6OnNldEltcGwoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwgdW5zaWduZWQgYnl0ZU9mZnNldCkK
K2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHNp
emVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0g
ICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0aCgpIDwgYnl0ZU9mZnNl
dCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYg
KCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgp
LCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAg
ICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsK
ICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0LCBhcnJheS0+YmFzZUFkZHJlc3MoKSwgYXJy
YXktPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZm
ZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdl
SW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRl
T2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8
IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBi
eXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91
dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5P
ckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3RoKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBtZW1tb3ZlKGJhc2UgKyBieXRlT2Zmc2V0
LCBkYXRhLCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJy
YXlCdWZmZXJWaWV3OjpnZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRh
Qnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3Ojpn
ZXRSYW5nZUltcGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgc2l6
ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAg
ICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHsKLSAgICAg
ICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICghaXNTdW1TbWFs
bGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBiYXNl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1v
dmUoZGVzdGluYXRpb24sIGJhc2UgKyBieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCitib29sIEFycmF5QnVm
ZmVyVmlldzo6emVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0
ZUxlbmd0aCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0aCgpCi0gICAgICAgIHx8
IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8v
IE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRo
YW5PckVxdWFsKGJ5dGVPZmZzZXQsIHJhbmdlQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtc2V0KGJhc2UgKyBi
eXRlT2Zmc2V0LCAwLCByYW5nZUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIEFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgIGludCBz
dGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYXlTaXplLCB1bnNpZ25lZCogb2Zmc2V0LCB1bnNp
Z25lZCogbGVuZ3RoKQotewotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0YXJ0ICs9IGFy
cmF5U2l6ZTsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCA9IDA7Ci0gICAgaWYg
KGVuZCA8IDApCi0gICAgICAgIGVuZCArPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IDApCi0g
ICAgICAgIGVuZCA9IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpID4gYXJy
YXlTaXplKQotICAgICAgICBlbmQgPSBhcnJheVNpemU7Ci0gICAgaWYgKGVuZCA8IHN0YXJ0KQot
ICAgICAgICBlbmQgPSBzdGFydDsKLSAgICAqb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0YXJ0KTsKLSAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIHVzaW5nIEpTQzo6QXJyYXlCdWZmZXJWaWV3
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApp
bmRleCA2ODgzYTE3YzQ3MmQuLmQzNjI0NTBhMmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBzdGF0
aWMgdW5zaWduZWQgdmFsaWRhdGVBdG9taWNBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBKU0FycgogICAgICAgICBhY2Nlc3NJbmRleCA9IGFjY2Vzc0luZGV4VmFs
dWUudG9JbmRleChnbG9iYWxPYmplY3QsICJhY2Nlc3NJbmRleCIpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHR5cGVkQXJy
YXlWaWV3LT5sZW5ndGgoKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOworCiAg
ICAgaWYgKGFjY2Vzc0luZGV4ID49IHR5cGVkQXJyYXlWaWV3LT5sZW5ndGgoKSkgewogICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBvdXQg
b2YgYm91bmRzIGZvciBhdG9taWMgYWNjZXNzLiJfcyk7CiAgICAgICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGRjYzJmNTA2NGFm
Mi4uZmJjOTg0N2QyZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDIwICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZp
ZXc6OkRhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitEYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3Ro
KQogICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0
ZUxlbmd0aCkKIHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwogfQog
CiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7
CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1
cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCmluZGV4IGRhMDZiNGJiMjE0NC4uMzQwMjY1
NDEwMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmll
dy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmlldyBmaW5hbCA6IHB1
YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5
cGUoKSBjb25zdCBmaW5hbApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5zaWduZWQgb2Zmc2V0
LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBUIGdldChz
aXplX3Qgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikK
ICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlmIChvZmZzZXQgKyBz
aXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAg
IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgcmVhZCh1bnNpZ25lZCYg
b2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICBU
IHJlYWQoc2l6ZV90JiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4o
b2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpz
dGF0dXMpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJv
b2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQorICAgIHZvaWQgc2V0KHNp
emVfdCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9m
ZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtODMsNyArODMsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZp
ZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVM
ZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGJlN2U2YzA1
MzRmYS4uNWJlODE2NWY3MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywyNCArMzMsMjQgQEAgbmFtZXNwYWNl
IEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVkQXJy
YXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0
aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNU
eXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiB0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7
CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQog
ICAgIAotICAgIGJvb2wgc2V0KEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJyYXks
IHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4qIGFycmF5LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldElt
cGwoYXJyYXksIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAg
fQogICAgIAotICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSog
ZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXRSYW5nZShj
b25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHNpemVfdCBv
ZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksCkBAIC01OCwzOSArNTgsMzkgQEAg
cHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCB6ZXJvUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCBz
aXplX3QgY291bnQpCisgICAgYm9vbCB6ZXJvUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNv
dW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIHplcm9SYW5nZUltcGwob2Zmc2V0ICogc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpLCBjb3VudCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgemVyb0ZpbGwoKSB7IHplcm9SYW5nZSgw
LCBsZW5ndGgoKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIHNp
emVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gYnl0ZUxlbmd0aCgpIC8gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlIGl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIHJl
dHVybiBkYXRhKClbaW5kZXhdOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBp
bmRleCwgZG91YmxlIHZhbHVlKSBjb25zdAorICAgIHZvaWQgc2V0KHNpemVfdCBpbmRleCwgZG91
YmxlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgICAgIGRhdGEoKVtpbmRleF0g
PSBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQg
c2V0TmF0aXZlKHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBj
b25zdAorICAgIHZvaWQgc2V0TmF0aXZlKHNpemVfdCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5kZXhd
ID0gdmFsdWU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkKKyAgICBib29sIGdldFJh
bmdlKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgc2l6ZV90IG9m
ZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRSYW5nZUltcGwoCiAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSwKQEAgLTk4LDE4ICs5OCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwog
ICAgIH0KIAotICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHNpemVf
dCBjb3VudCkgY29uc3QKKyAgICBib29sIGNoZWNrSW5ib3VuZERhdGEoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGNvdW50KSBjb25zdAogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhp
cy0+bGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0IDw9IGxlbmd0aAotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgY291bnQgPD0gbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVy
ZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgY291bnQgPj0gb2Zmc2V0KTsKKyAgICAgICAg
cmV0dXJuIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKG9mZnNldCwgY291bnQsIHRoaXMtPmxlbmd0
aCgpKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3Vi
YXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKLSAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwotICAgIAogICAgIFR5cGVkQXJy
YXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0
b3I6OnR5cGVWYWx1ZTsKQEAgLTExOCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopIGZpbmFsOwog
CiBwcml2YXRlOgotICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKaW5kZXggYWU1YmRkOGM2YTMxLi5mMWE3NmRmZDNiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5l
cmljVHlwZWRBcnJheVZpZXcoCi1SZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVy
VmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCAqIHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKSkKIHsKKyAgICBBU1NFUlQoKGxlbmd0aCAvIHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKSkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2ln
bmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0
byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OwpAQCAtNDcsNyArNDgsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIHJlc3Vs
dCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OwpAQCAtNTYsNyArNTcsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0
aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTY0LDcgKzY1
LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnRyeUNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAg
ICAgaWYgKCFidWZmZXIpCkBAIC03NCw3ICs3NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRl
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgK
LSAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3Ro
KQogewogICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0
ZShsZW5ndGgpOwogICAgIGlmICghcmVzdWx0KQpAQCAtODUsNyArODYsNyBAQCBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMCw3ICsxMDEsNyBAQCBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICBSRUxF
QVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtMTA5LDcgKzExMCw3IEBAIEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PgotR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKQogewogICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwpAQCAtMTE4LDI1
ICsxMTksNiBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnlDcmVhdGUoV1RGTW92ZShi
dWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdAotewotICAgIHJldHVybiBzdWJh
cnJheShzdGFydCwgbGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotewotICAg
IHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwotICAgIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aChz
dGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgQXJyYXlC
dWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAgQVNTRVJUKGJ1ZmZl
cik7Ci0gICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVy
LCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiB0cnlDcmVhdGUo
YnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBKU0FycmF5QnVmZmVyVmlldyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp3cmFw
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDg5ZWFlYmQzYzJjYy4uM2Q4ZTQ3NDUwNjY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyVmlldzo6
c19pbmZvID0gewogfTsKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6
OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90
IGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qg
bGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAg
LCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTU0
LDcgKzU0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0
cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsCisgICAgVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUs
CiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1vZGUpCiAgICAgOiBtX3N0cnVjdHVyZShudWxscHRy
KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtODEsMTggKzgxLDE4IEBAIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgYWxsb3cgYSB0eXBlZCBhcnJheSB0byB1
c2UgbW9yZSB0aGFuIDJHQi4KLSAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KElOVF9NQVgpIC8gZWxlbWVudFNpemUpCisgICAgQ2hlY2tlZFNpemUgc2l6ZSA9IGxlbmd0aDsK
KyAgICBzaXplICo9IGVsZW1lbnRTaXplOworICAgIGlmIChzaXplLmhhc092ZXJmbG93ZWQoKSB8
fCBzaXplID4gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKQogICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKLSAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNh
Z2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplKSwgbGVuZ3RoKTsKKworICAg
IG1fdmVjdG9yID0gVmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIHNpemUudmFsdWUoKSksIGxlbmd0aCk7CiAgICAgaWYgKCFtX3ZlY3RvcikKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmIChtb2RlID09IFplcm9GaWxsKQogICAgICAgICBtZW1zZXQodmVj
dG9yKCksIDAsIHNpemUpOwogICAgIAotICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxv
Y2F0ZWQoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUpOworICAgIHZt
LmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZS52YWx1ZSgpKTsKICAgICAKICAg
ICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX21vZGUgPSBPdmVyc2l6ZVR5cGVkQXJy
YXk7CkBAIC0xMDAsNyArMTAwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1
Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBsZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoV2FzdGVmdWxUeXBlZEFycmF5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6
Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBs
ZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwg
bV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKQEAgLTIzOCw5ICsy
MzgsMTYgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoSlNUeXBlIHR5cGUpCiAg
ICAgcmV0dXJuIEVsZW1lbnRTaXplRGF0YVt0eXBlIC0gSW50OEFycmF5VHlwZV07CiB9CiAKLXVu
c2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKK3NpemVfdCBKU0Fy
cmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoKCk7CisgICAgcmVzdWx0ICo9IGVs
ZW1lbnRTaXplKHR5cGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOworI2Vsc2UKKyAg
ICAvLyBUaGUgYWJzZW5jZSBvZiBvdmVyZmxvdyBpcyBhbHJlYWR5IGNoZWNrZWQgaW4gdGhlIGNv
bnN0cnVjdG9yLCBzbyBJIG9ubHkgYWRkIHRoZSBleHRyYSBzYW5pdHkgY2hlY2sgd2hlbiBhc3Nl
cnRzIGFyZSBlbmFibGVkLgogICAgIHJldHVybiBsZW5ndGgoKSAqIGVsZW1lbnRTaXplKHR5cGUo
KSk7CisjZW5kaWYKIH0KIAogQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93
bkFuZFdhc3RlTWVtb3J5KCkKQEAgLTI2Nyw3ICsyNzQsNyBAQCBBcnJheUJ1ZmZlciogSlNBcnJh
eUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyOwotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7Cisg
ICAgc2l6ZV90IGJ5dGVMZW5ndGggPSB0aGlzLT5ieXRlTGVuZ3RoKCk7CiAKICAgICBzd2l0Y2gg
KG1fbW9kZSkgewogICAgIGNhc2UgRmFzdFR5cGVkQXJyYXk6IHsKQEAgLTMxNSw4ICszMjIsOCBA
QCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFy
ZWRJbXBsKCkKICAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIo
KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0aGlzLT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IHRoaXMtPmJ5dGVPZmZz
ZXQoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgc3dpdGNoICh0
eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMjIEFycmF5
VHlwZTogXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmgKaW5kZXggZGQwMWY3ZjgyYTUzLi4xNGZhNWJiYTVhMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTA4LDcg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZhc3RTaXplTGltaXQgPSAx
MDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGZhc3RTaXplTGltaXQgPSAxMDAwOwog
ICAgIHVzaW5nIFZlY3RvclB0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZl
LCB2b2lkLCB0YWdDYWdlZFB0cj47CiAKICAgICBzdGF0aWMgdm9pZCogbnVsbFZlY3RvclB0cigp
CkBAIC0xMTcsMTAgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxsLnJhd0Jp
dHMoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBzaXplT2YodWludDMyX3QgbGVu
Z3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkKKyAgICBzdGF0aWMgc2l6ZV90IHNpemVPZihzaXpl
X3QgbGVuZ3RoLCB1bnNpZ25lZCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAo
c3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpIC0gMSkKLSAgICAgICAgICAgICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0g
MSk7CisgICAgICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1bHQgPSBsZW5ndGg7CisgICAgICAgIHJl
c3VsdCAqPSBlbGVtZW50U2l6ZTsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgLSAxOworICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCkgJiB+KHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgLSAxKTsKICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25T
aXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKQEAgLTEzNiwyNSArMTM4LDI1IEBA
IHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gSW5pdGlhbGl6YXRpb25Nb2Rl
IHsgWmVyb0ZpbGwsIERvbnRJbml0aWFsaXplIH07CiAgICAgICAgIAotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3Qg
bGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0Zp
bGwpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwg
U3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUsIEluaXRpYWxp
emF0aW9uTW9kZSA9IFplcm9GaWxsKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMgb25s
eSBmb3IgY29uc3RydWN0aW5nIGZhc3QgdHlwZWQgYXJyYXlzLiBJdCdzIHVzZWQgYnkgdGhlIEpJ
VCdzIHNsb3cgcGF0aC4KLSAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCB1
aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQoU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKICAgICAgICAgCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgICAgICAg
ICBWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAgICAgICBzaXplX3Qg
Ynl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgICAgIAogICAgICAgICBlbnVtIERhdGFW
aWV3VGFnIHsgRGF0YVZpZXcgfTsKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dCgKICAgICAg
ICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwKLSAgICAgICAgICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpOworICAgICAg
ICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAg
ICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0
dXJlOyB9CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RydWN0dXJlOyB9CiAgICAgICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChtX2xlbmd0aCk7IH0KLSAgICAgICAgdWludDMyX3Qg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgc2l6ZV90IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgIFR5cGVkQXJyYXlNb2RlIG1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkoKSBjb25zdCB7IHJldHVybiBtX2J1dHRlcmZseTsgfQogICAgICAgICAKQEAgLTE2Miw3ICsx
NjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAg
ICAgIHVzaW5nIFZlY3RvclR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lk
LCB0YWdDYWdlZFB0cj47CiAgICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7Ci0gICAgICAgIHVp
bnQzMl90IG1fbGVuZ3RoOworICAgICAgICBzaXplX3QgbV9sZW5ndGg7CiAgICAgICAgIFR5cGVk
QXJyYXlNb2RlIG1fbW9kZTsKICAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsKICAgICB9
OwpAQCAtMTkwLDExICsxOTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChsZW5ndGgoKSk7IH0KICAgICB2b2lkKiB2
ZWN0b3JXaXRob3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldFVu
c2FmZSgpOyB9CiAgICAgCi0gICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXQoKTsKLSAgICBp
bmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwor
ICAgIGlubGluZSBzaXplX3QgYnl0ZU9mZnNldCgpOworICAgIGlubGluZSBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkg
Y29uc3Q7CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Cisg
ICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CiAgICAgCkBAIC0yMTksNyArMjIxLDcgQEAgcHJvdGVjdGVkOgogICAgIEFycmF5QnVmZmVyKiBl
eGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCk7CiAKICAgICBWZWN0b3JQdHIgbV92ZWN0b3I7Ci0g
ICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgIFR5cGVkQXJy
YXlNb2RlIG1fbW9kZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKaW5kZXggMWQwNzJiNzFhY2I3Li5k
ODViMzI4MzA3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCkBAIC05OSw3ICs5OSw3IEBAIGlubGluZSBS
ZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0SW1wbCgpCiAgICAgcHRyZGlm
Zl90IGRlbHRhID0KICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih2ZWN0b3JXaXRob3V0
UEFDVmFsaWRhdGlvbigpKSAtIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSk7
CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVsdGEpOwor
ICAgIHNpemVfdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGRlbHRhKTsKICAgICBpZiAo
cmVxdWVzdGVyID09IE11dGF0b3IpCiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxwdHJkaWZm
X3Q+KHJlc3VsdCkgPT0gZGVsdGEpOwogICAgIGVsc2UgewpAQCAtMTEwLDE0ICsxMTAsMTQgQEAg
aW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVPZmZzZXQoKQoraW5saW5lIHNpemVfdCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNl
dCgpCiB7Ci0gICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2lnbmVkPigpOwor
ICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCBzaXplX3Q+KCk7CiB9CiAKLWlubGlu
ZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENv
bmN1cnJlbnRseSgpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNldElt
cGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+KCk7CisgICAgcmV0
dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
Pj4oKTsKIH0KIAogaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJW
aWV3Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDA4NjdkY2JlYWQ4MS4uZThhNGU3YTYyMzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTWVk
aWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
SW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9UcmlTdGF0ZS5oPgogCkBAIC0yOTgsNiArMjk5LDcgQEAgcHVibGljOgogICAgIGludDMyX3Qg
dG9JbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvVUludDMyKEpT
R2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDMyX3QgdG9JbmRleChKU0dsb2JhbE9iamVj
dCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3Q7CisgICAgc2l6ZV90IHRvVHlwZWRBcnJh
eUluZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKICAg
ICBkb3VibGUgdG9MZW5ndGgoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4
IGY3YTllNzBlZDZlMC4uOGY1YzA3MTk4ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTY5LDE0ICs2OSw0NyBAQCBpbmxp
bmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBjaGFyKiBlcnJvcgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5h
bWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQot
ICAgIGlmIChkID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CisKKyAg
ICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworCisgICAgaWYgKGQg
PiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJn
ZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsKK30KKworaW5saW5lIHNpemVfdCBKU1ZhbHVlOjp0
b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBjaGFy
KiBlcnJvck5hbWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUg
ZCA9IHRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgMCk7CisgICAgaWYgKGQgPD0gLTEpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmco
ZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKwogICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworCisgICAgaWYg
KGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KE1BWF9BUlJBWV9CVUZGRVJfU0laRSkpIHsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJyb3JOYW1lLCAiIHRvbyBsYXJnZSIpKSk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIEFsbCBvZiB0aGlzIG1vbnN0cm9zaXR5IGlz
IGp1c3QgdG8gZ2l2ZSB0aGUgY29ycmVjdCByZXN1bHQgb24gMTw8MzIuCisgICAgc2l6ZV90IG91
dHB1dE9mZnNldCA9IDA7CisgICAgZG91YmxlIGlucHV0T2Zmc2V0ID0gMDsKKyAgICBzaXplX3Qg
aW50MzJNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKTsKKyAgICBpZiAo
ZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oaW50MzJNYXgpKSB7CisgICAgICAgIG91dHB1dE9mZnNl
dCA9IGludDMyTWF4OworICAgICAgICBpbnB1dE9mZnNldCA9IGludDMyTWF4OworICAgIH0KKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG91dHB1dE9mZnNldCArIHN0YXRpY19jYXN0PHNp
emVfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQzo6dG9JbnQzMihkIC0gaW5wdXRPZmZzZXQp
KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5m
aW5pdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5k
ZXggNmZhYjQ2NWRkM2I5Li5kZmQ2YTUxMWQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCBKU0RhdGFWaWV3OjpK
U0RhdGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlCdWZm
ZXIqIGJ1ZmZlcgogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcwLDI1ICs3MCwyNSBAQCBKU0RhdGFWaWV3KiBKU0RhdGFW
aWV3OjpjcmVhdGUoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRh
Vmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVu
c2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNEYXRhVmlldyogSlNEYXRh
Vmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0Rh
dGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBz
aXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQsIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkKQorYm9vbCBKU0RhdGFWaWV3OjpzZXQo
SlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QpCiB7CiAg
ICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFs
dWUpCitib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBK
U1ZhbHVlKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCAy
Yzc4NWU0NzYxMWEuLmE1ZTc4YzQ2OWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDE1ICs0NiwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAgICAg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgICAgICBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKTsKICAgICAKICAgICAvLyBEdW1teSBtZXRo
b2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3b3JrOyB0aGVzZSBhcmUganVzdCBpbiBwbGFjZSB0
bwogICAgIC8vIHBsYWNhdGUgc29tZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3ZSBkbyBlbHNl
d2hlcmUuCi0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0Rh
dGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0Kiwg
dW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRl
VW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgp
OworICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHNpemVf
dCwgSlNPYmplY3QqLCBzaXplX3QsIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCBzaXplX3QsIEpTVmFsdWUpOwogICAgIAogICAgIEFycmF5QnVmZmVy
KiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAg
QXJyYXlCdWZmZXIqIHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKaW5kZXggOTQ5MDYy
NDdlYTY1Li5lMGZiYzUyZjg3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDExICsxMzYsMTEgQEAg
RW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcg
bWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRl
T2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5k
aWFuID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE0OSw3ICsx
NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9z
KTsKIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAg
c2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRT
aXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXpl
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ik91dCBvZiBib3VuZHMgYWNjZXNzIl9zKTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBt
dXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIp
OworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4
KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0g
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIHNldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgCiAgICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25l
ZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXpl
X3QgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYg
KGVsZW1lbnRTaXplID4gMSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAg
ICAgICAgIGxpdHRsZUVuZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMikudG9C
b29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNl
dERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhh
cyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxl
bmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFW
aWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVP
ZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3Mp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAppbmRleCBjMjJjNTVhMGQ4MWQuLmVhMWVmOWMxM2ZhNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUu
aCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTU1LDEwICs1NiwxMCBAQCBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBDbGFzc0luZm8q
IGdldEJpZ1VpbnQ2NEFycmF5Q2xhc3NJbmZvKCk7CiAvLyAgICAgU3RydWN0dXJlKiBTICAgICAv
LyBmcm9tIEpTQ2VsbAogLy8gICAgIEJ1dHRlcmZseSogQiAgICAgLy8gZnJvbSBKU09iamVjdAog
Ly8gICAgIEVsZW1lbnRUeXBlKiBWCi0vLyAgICAgdWludDMyX3QgTAorLy8gICAgIHNpemVfdCBM
CiAvLyAgICAgVHlwZWRBcnJheU1vZGUgTQogLy8KLS8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEg
dG90YWwgb2YgZm91ciBwb2ludGVyLXdpZHRoIHdvcmRzLiBGSVhNRTogTWFrZQorLy8gVGhlc2Ug
ZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmaXZlIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1F
OiBNYWtlCiAvLyBpdCB0YWtlIGxlc3Mgd29yZHMhCiAvLwogLy8gQiBpcyB1c3VhbGx5IHVudXNl
ZCBidXQgbWF5IHN0b3JlZCBzb21lIGFkZGl0aW9uYWwgIm92ZXJmbG93IiBkYXRhIGZvcgpAQCAt
MTAzLDE0ICsxMDQsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKIAotICAgIHN0
YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
dW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNy
ZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxl
bmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZp
ZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQor
ICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2Yo
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KICAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25zdCB7
IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
IH0KICAgICAKICAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiB0eXBlZFZlY3Rvcigp
IGNvbnN0CkBAIC0xMjIsNDYgKzEyMyw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KHZlY3RvcigpKTsKICAgICB9CiAKLSAg
ICBib29sIGluQm91bmRzKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBpbkJvdW5kcyhzaXpl
X3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGg7CiAgICAgfQog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbWVhbnQgdG8gbWF0Y2ggaW5kZXhlZCBhY2Nlc3Mg
bWV0aG9kcyB0aGF0IEpTT2JqZWN0CiAgICAgLy8gc3VwcG9ydHMgLSBoZW5jZSB0aGUgc2xpZ2h0
IHJlZHVuZGFuY3kuCi0gICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29u
c3QKKyAgICBib29sIGNhbkdldEluZGV4UXVpY2tseShzaXplX3QgaSkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBpbkJvdW5kcyhpKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0VG9KU1F1aWNr
bHk7CiAgICAgfQotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFs
dWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkoc2l6ZV90IGksIEpT
VmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoICYm
IHZhbHVlLmlzTnVtYmVyKCkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNRdWlja2x5OwogICAg
IH0KICAgICAKLSAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdldEluZGV4UXVpY2tseUFzTmF0
aXZlVmFsdWUodW5zaWduZWQgaSkgY29uc3QKKyAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGdl
dEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHR5cGVkVmVjdG9yKClbaV07
CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNv
bnN0CisgICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKG51bGxwdHIsIGdldEluZGV4UXVpY2ts
eUFzTmF0aXZlVmFsdWUoaSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldEluZGV4UXVpY2ts
eVRvTmF0aXZlVmFsdWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkK
KyAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoc2l6ZV90IGksIHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fbGVuZ3Ro
KTsKICAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVlOwogICAgIH0KICAgICAKLSAgICB2
b2lkIHNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQg
c2V0SW5kZXhRdWlja2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRp
dmVWYWx1ZShpLCB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPih2YWx1ZSkpOwogICAgIH0KICAg
ICAKLSAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIGksIEpTVmFsdWUganNWYWx1ZSkKKyAgICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHNpemVfdCBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzYsOSArMTc3LDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRv
ck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpz
VmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwg
anNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZh
bHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUganNWYWx1ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3Qs
IGpzVmFsdWUpOworICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBl
PiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVl
KSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1Zh
bHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JO
YXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpz
VmFsdWUpOworICAgIH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpAQCAtMTk4LDIxICsyMDUs
MTggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBjYW5BY2Nlc3NSYW5n
ZVF1aWNrbHkodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgYm9vbCBjYW5B
Y2Nlc3NSYW5nZVF1aWNrbHkoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCAr
IGxlbmd0aCA8PSBtX2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAg
ICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA+PSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGxlbmd0aCwgbV9sZW5ndGgpOwogICAgIH0KICAg
ICAKICAgICAvLyBMaWtlIGNhblNldFF1aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxz
ZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAgICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCi0gICAg
Ym9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1
Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaWYgaXQgcmV0dXJucyBmYWxzZQogICAgIC8v
IHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uCi0gICAgYm9vbCBzZXQoSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNl
cnZhYmxlKTsKKyAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpT
T2JqZWN0Kiwgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgPSBD
b3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAgICAKICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRv
cjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CiAgICAgUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwpAQCAtMzE4LDggKzMy
Miw4IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBm
YWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJvdyBvbiBlcnJvci4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdGhlckFkYXB0b3I+CiAgICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAgICAg
ICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8T3RoZXJBZGFwdG9yPiosCi0gICAgICAgIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBDb3B5VHlwZSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9m
ZnNldCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosCisgICAgICAgIHNp
emVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBlKTsKIAogICAgIC8vIFRo
ZSBFQ01BIDYgc3BlYyBzdGF0ZXMgdGhhdCBmbG9hdGluZyBwb2ludCBUeXBlZCBBcnJheXMgc2hv
dWxkIGhhdmUgdGhlIGZvbGxvd2luZyBvcmRlcmluZzoKICAgICAvLwpAQCAtMzQ5LDcgKzM1Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXJpZnlBcnJheSgpCiAgICAgewogICAgICAgICBFbGVt
ZW50VHlwZSogYXJyYXkgPSB0eXBlZFZlY3RvcigpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2xlbmd0aDsgaSsrKQogICAgICAgICAgICAgYXJyYXlbaV0gPSBwdXJpZnlOYU4oYXJyYXlbaV0p
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmgKaW5kZXggZDI1ODQwNjdlODNmLi4zMzZmMWFlZTNmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIGlubGlu
ZSBKU0FycmF5QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLWlu
bGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5j
b2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBsZW5ndGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHNpemVf
dCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGhPcHQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSAwOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGxlbmd0
aE9wdCkKICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBl
bHNlIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIC8v
IC0gQSBwcmltaXRpdmUuIFRoaXMgY3JlYXRlcyBhIG5ldyB0eXBlZCBhcnJheSBvZiB0aGF0IGxl
bmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBpdC4KIAogICAgIGlmIChKU09iamVjdCogb2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBmaXJzdFZhbHVlKSkgewotICAgICAgICB1
bnNpZ25lZCBsZW5ndGg7CisgICAgICAgIHNpemVfdCBsZW5ndGg7CiAgICAgICAgIEpTQXJyYXlC
dWZmZXIqIGN1c3RvbUJ1ZmZlciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKGlzVHlwZWRWaWV3
KG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkgewpAQCAtMjUw
LDcgKzI1MCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gZmlyc3RWYWx1ZS50b0luZGV4KGds
b2JhbE9iamVjdCwgImxlbmd0aCIpOworICAgIHNpemVfdCBsZW5ndGggPSBmaXJzdFZhbHVlLnRv
VHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgImxlbmd0aCIpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
Vmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCkpOwogfQpA
QCAtMjc1LDggKzI3NSw4IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICB9CiAKICAgICBK
U1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAg
IHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3Ro
ID0gc3RkOjpudWxsb3B0OworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAg
ICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGdsb2Jh
bE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODUsNyArMjg1LDcgQEAgQUxXQVlTX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFs
T2JqZWN0KgogICAgICAgICAgICAgLy8gSWYgdGhlIGxlbmd0aCB2YWx1ZSBpcyBwcmVzZW50IGJ1
dCB1bmRlZmluZWQsIHRyZWF0IGl0IGFzIG1pc3NpbmcuCiAgICAgICAgICAgICBKU1ZhbHVlIGxl
bmd0aFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICAgICAgICAg
IGlmICghbGVuZ3RoVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgICAgIGxlbmd0
aCA9IGxlbmd0aFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJy
YXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7
CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9UeXBlZEFycmF5SW5kZXgo
Z2xvYmFsT2JqZWN0LCBWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0
YVZpZXcgPyAiYnl0ZUxlbmd0aCIgOiAibGVuZ3RoIik7CiAgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNDUwMjM4NzkyZDEwLi5h
M2RkYzFmODM2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIKICNpbmNsdWRlICJUeXBl
RXJyb3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVy
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KAogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjUsNyArNjYsNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlV2l0aEZhc3RWZWN0b3IoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKQorICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChzdHJ1Y3R1cmUsIGxlbmd0aCwg
dmVjdG9yKTsKQEAgLTc4LDcgKzc5LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5z
aWduZWQgbGVuZ3RoKQorSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05OSwxNyArMTAwLDE3IEBAIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUo
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgc2l6ZV90IHNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOwogICAgIEFTU0VSVChidWZmZXIpOwotICAgIGlmICghQXJyYXlCdWZm
ZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgs
IHNpemUpKSB7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3Ro
KCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgZWxlbWVudFNpemUpKSB7CiAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9m
ZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZmZXJW
aWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIGVsZW1lbnRTaXplKSkg
ewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkJ5dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNDUsNyArMTQ2LDcgQEAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKAotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE1OSw4ICsxNjAsOCBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKLSAgICB1bnNpZ25lZCBvdGhlck9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVy
QWRhcHRvcj4qIG90aGVyLAorICAgIHNpemVfdCBvdGhlck9mZnNldCwgc2l6ZV90IGxlbmd0aCwg
Q29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjE4LDcgKzIxOSw3IEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5
cGUoCiAgICAgICAgIHx8IGV4aXN0aW5nQnVmZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5nQnVmZmVy
KCkKICAgICAgICAgfHwgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUgJiYgdmVjdG9y
KCkgPD0gb3RoZXItPnZlY3RvcigpKQogICAgICAgICB8fCB0eXBlID09IENvcHlUeXBlOjpMZWZ0
VG9SaWdodCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAgICAgICAgICAgICAgICBvZmZz
ZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAg
ICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUoaSArIG90
aGVyT2Zmc2V0KSkpOwpAQCAtMjI4LDcgKzIyOSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKICAgICAvLyBOb3cgd2UgZWl0
aGVyIGhhdmUgKDJCKSBvciAoMykgLSBzbyBmaXJzdCB3ZSB0cnkgdG8gY292ZXIgKDJCKS4KICAg
ICBpZiAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVtZW50U2l6ZSkgewotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBsZW5ndGg7IGktLTspIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0
aDsgaS0tOykgewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSgKICAg
ICAgICAgICAgICAgICBvZmZzZXQgKyBpLCBPdGhlckFkYXB0b3I6OnRlbXBsYXRlIGNvbnZlcnRU
bzxBZGFwdG9yPigKICAgICAgICAgICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSkpOwpAQCAtMjM4LDExICsyMzksMTEgQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgK
ICAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGludGVybWVkaWF0ZSB0cmFuc2ZlciBidWZm
ZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIFZlY3Rvcjx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlLCAz
Mj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7
IGktLTspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgIHRy
YW5zZmVyQnVmZmVyW2ldID0gT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRv
cj4oCiAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsg
b3RoZXJPZmZzZXQpKTsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07
KQorICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGktLTspCiAgICAgICAgIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsgaSwgdHJhbnNmZXJCdWZmZXJbaV0pOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtMjUwLDE0ICsyNTEsMTQgQEAgYm9vbCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNl
dCgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIEpT
T2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBD
b3B5VHlwZSB0eXBlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBv
ZmZzZXQsIEpTT2JqZWN0KiBvYmplY3QsIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5n
dGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGNvbnN0IENs
YXNzSW5mbyogY2kgPSBvYmplY3QtPmNsYXNzSW5mbyh2bSk7CiAgICAgaWYgKGNpLT50eXBlZEFy
cmF5U3RvcmFnZVR5cGUgPT0gQWRhcHRvcjo6dHlwZVZhbHVlKSB7Ci0gICAgICAgIC8vIFRoZSBz
dXBlciBmYXN0IGNhc2U6IHdlIGNhbiBqdXN0IG1lbWNweSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0
eXBlLgorICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1tb3Zl
IHNpbmNlIHdlJ3JlIHRoZSBzYW1lIHR5cGUuCiAgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBvdGhlciA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAg
ICAgICAgIGxlbmd0aCA9IHN0ZDo6bWluKGxlbmd0aCwgb3RoZXItPmxlbmd0aCgpKTsKICAgICAg
ICAgCkBAIC0zMTIsOSArMzEzLDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnNldCgKICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIHdvbid0IGV2ZXIgY2FsbCBvYmplY3Qt
PmdldCgpIHdpdGggYW4gaW5kZXggb2YgVUlOVF9NQVggb3IgbW9yZQorICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVu
Z3RoKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9iamVjdE9mZnNldCksIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7CiAgICAgICAg
IC8vIFdlIGNvdWxkIG9wdGltaXplIHRoaXMgY2FzZS4gQnV0IHJpZ2h0IG5vdywgd2UgZG9uJ3Qu
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgaSArIG9iamVj
dE9mZnNldCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpICsgb2JqZWN0T2Zmc2V0KSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICBib29sIHN1Y2Nlc3Mg
PSBzZXRJbmRleChnbG9iYWxPYmplY3QsIG9mZnNldCArIGksIHZhbHVlKTsKICAgICAgICAgICAg
IEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzdWNjZXNzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGI2M2I2OGEyNWI0NS4uMTk4
NjM5MGQ4YmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAg
LTYwLDYgKzYwLDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVl
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCitjbGFzcyBBcnJheVByb2ZpbGU7CiBjbGFzcyBF
eGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOwpA
QCAtMjExLDEwICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIHB1dEJ5
SW5kZXhJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogICAgIHsKICAgICAgICAg
Vk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKGNhblNldEluZGV4UXVp
Y2tseShwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHRyeVNldEluZGV4UXVpY2ts
eSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXMs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0K
IApAQCAtMjg5LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGNhbkdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OwotICAgIEpTVmFsdWUgZ2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7CisgICAgSlNWYWx1ZSBn
ZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBBcnJheVByb2ZpbGUqID0gbnVs
bHB0cikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQg
aSkgY29uc3QKICAgICB7CkBAIC0zNDUsMTQgKzM0NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKLSAgICBKU1Zh
bHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAorCisgICAgLy8gVXNlcyB0
aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdlVHlwZWRB
cnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikgY29uc3QKICAg
ICB7CiAgICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5
KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExf
QkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBpZiAoY2FuR2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheShpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheShpLCBhcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDExLDM1ICs0MTEsNzMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0KGdsb2Jh
bE9iamVjdCwgaSk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKSBjb25zdDsKICAgICB2b2lkIHNldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpOwotICAgICAgICAKLSAgICBib29sIGNh
blNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0
SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiwgdW5zaWduZWQsIEpT
VmFsdWUpOworCisgICAgLy8gUmV0dXJuIHRydWUgdG8gaW5kaWNhdGUgc3VjY2VzcworICAgIC8v
IFVzZSB0aGUgKG9wdGlvbmFsKSBhcnJheSBwcm9maWxlIHRvIHNldCB0aGUgbV9tYXlCZUxhcmdl
VHlwZWRBcnJheSBiaXQgd2hlbiByZWxldmFudAorICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CisgICAgYm9v
bCB0cnlTZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEJ1dHRlcmZs
eSogYnV0dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhp
bmdNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAg
ICAgICAgICByZXR1cm4gY2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2YWx1ZSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheShpLCB2
LCBhcnJheVByb2ZpbGUpOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxF
X0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVf
SU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0lOVDMyX0lOREVYSU5HX1RZ
UEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc0ludDMy
KCkpIHsKKyAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZU9yQ29udGlndW91c1do
aWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9
CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsK
KyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3Vz
KCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgICAgIGlm
IChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnV0dGVy
Zmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJh
cnJpZXIodGhpcywgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEFMTF9XUklUQUJMRV9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAg
ICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF2LmlzTnVtYmVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgo
dm0sIGksIHYpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOworICAgICAgICAgICAgaWYg
KHZhbHVlICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGln
dW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGln
dW91c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gdmFsdWU7CisgICAgICAgICAgICBpZiAoaSA+PSBi
dXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0
UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CiAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFy
cmF5V2l0aEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVu
Z3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0
b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAg
ICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3Ro
KCkKLSAgICAgICAgICAgICAgICAmJiAhIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVj
dG9yW2ldOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUo
aW5kZXhpbmdNb2RlKCkpKQorICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5hcnJheVN0
b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgfHwgIWJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1f
dmVjdG9yW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlG
b3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0sIGksIHYpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0Nv
cHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVk0m
IHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewogICAgICAgICBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA4ZmZjNWY5MzgyMmYuLjc2MGE5YTllMmVj
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgKQEAgLTQ2NSwyMSArNDY1LDE1IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpjYW5HZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgfQogfQogCi1pbmxp
bmUgYm9vbCBKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSNkZWZpbmUgQ0FTRV9UWVBF
RF9BUlJBWV9UWVBFKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDpcCi0gICAg
ICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKS0+Y2Fu
U2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlf
VFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENBU0VfVFlQRURfQVJSQVlfVFlQRSkKLSN1bmRlZiBD
QVNFX1RZUEVEX0FSUkFZX1RZUEUKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotfQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgaWYgKGkgPiBBcnJh
eVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoICYmIGFycmF5UHJvZmlsZSkKKyAg
ICAgICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTsKKyNlbmRpZgogCi1pbmxpbmUgSlNWYWx1ZSBK
U09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAot
ewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShu
YW1lKSBcCiAgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHtcCkBAIC01MTIsNyArNTA2LDUw
IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiB9Ci0gICAg
CisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJ
bmRleGluZ1R5cGUoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCit7CisgICAgQXJyYXlT
dG9yYWdlKiBzdG9yYWdlID0gdGhpcy0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOworICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgIEpT
VmFsdWUgb2xkID0geC5nZXQoKTsKKyAgICB4LnNldCh2bSwgdGhpcywgdik7CisgICAgaWYgKCFv
bGQpIHsKKyAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOworICAgICAgICBp
ZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0
aChpICsgMSk7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBKU09iamVjdDo6dHJ5U2V0SW5kZXhR
dWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7CisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxl
KSBkbyB7IFwKKyAgICAgICAgaWYgKChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJh
eU1heExlbmd0aCkgJiYgYXJyYXlQcm9maWxlKVwKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+
c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisjZWxzZQor
I2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpIGRvIHsgXAorICAg
IFVOVVNFRF9QQVJBTShhcnJheVByb2ZpbGUpO1wKKyAgICB9IHdoaWxlIChmYWxzZSkKKyNlbmRp
ZgorI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAorICAgIGNhc2UgbmFtZSAj
IyBBcnJheVR5cGUgOiB7IFwKKyAgICAgICAgYXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKUyAj
IyBuYW1lICMjIEFycmF5ICo+KHRoaXMpO1wKKyAgICAgICAgaWYgKCF0eXBlZEFycmF5LT5jYW5T
ZXRJbmRleFF1aWNrbHkoaSwgdikpXAorICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1wKKyAgICAg
ICAgdHlwZWRBcnJheS0+c2V0SW5kZXhRdWlja2x5KGksIHYpO1wKKyAgICAgICAgVVBEQVRFX0FS
UkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKTtcCisgICAgICAgIHJldHVybiB0cnVlO1wKKyAg
ICB9CisgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKENB
U0VfVFlQRURfQVJSQVlfVFlQRSkKKyN1bmRlZiBDQVNFX1RZUEVEX0FSUkFZX1RZUEUKKyN1bmRl
ZiBVUERBVEVfQVJSQVlfUFJPRklMRQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRhdGFQ
cm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUp
CiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAppbmRleCBjZTczMGYzYmY5NjUuLjA5MTllNzIxODZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtODk4LDggKzg5OCw4IEBAIEFM
V0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAgaWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsKICAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2UpOwotICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4UXVpY2tseShpbmRleCkpOworICAgICAgICBpZiAo
SlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpbmRleCkpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYg
KGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmcoYmFzZSktPmNhbkdldEluZGV4KGluZGV4KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAppbmRleCBlOGRjMWEz
MGFlZGQuLmI3ZDhjOWZjZjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Q
YWdlQ291bnQuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKwogI2luY2x1ZGUgPGxpbWl0cy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTk2LDcgKzk4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50MzJfdCBwYWdlU2l6ZSA9IDY0ICogS0I7CiBwcml2YXRlOgotICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgx
dWxsIDw8IDMyKSAvIHBhZ2VTaXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1h
eFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihNQVhfQVJSQVlfQlVGRkVSX1NJWkUg
LyBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFnZVNpemUpKTsKIAogICAgIHVpbnQzMl90IG1fcGFn
ZUNvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggN2NkNTk2Zjg3MmVjLi4yMGE2ODBmYzQyMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC04LDYg
KzgsMjEgQEAKICAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVi
dWcueWFtbDoKICAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgogCisyMDIxLTEw
LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBNYWRlIHNvbWUgb2YgQ2hl
Y2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQgaXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3QgaW4gQXJyYXlCdWZmZXIgYW5kIGVh
c3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93LgorCisgICAgICAgICogd3RmL0No
ZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6OmlzSW5Cb3VuZHMpOgorICAgICAgICAo
V1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1
YWwpOgorCiAyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1
aWxkIG1ha2UgaXQgYnJlYWsgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRBcml0aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCmluZGV4
IGZmMTU2NWYxMWRlZC4uZWZhYjRhZDNiYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGlj
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJl
bW92ZUNoZWNrZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5
cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9IHNpemVvZihUYXJnZXQpID49IHNp
emVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFy
Z2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0
LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0
eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0
eXBlLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+
OjptYXgoKTsKICAgICB9CiB9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUs
IHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdh
eXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSBzdGQ6
Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwg
ZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisg
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIC8vIFdoZW4gY29udmVydGluZyB2YWx1ZSB0byB1bnNpZ25lZCBTb3VyY2UsIHZhbHVl
IHdpbGwgYmVjb21lIGEgYmlnIHZhbHVlIGlmIHZhbHVlIGlzIG5lZ2F0aXZlLgogICAgICAgICAv
LyBDYXN0ZWQgdmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2VyIHRoYW4gVGFyZ2V0OjptYXggYXMgU291
cmNlIGlzIGJpZ2dlciB0aGFuIFRhcmdldC4KQEAgLTE2OCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRh
cmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUs
IGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBUaGUgdW5zaWduZWQgU291cmNlIHR5cGUgaGFzIGdyZWF0ZXIgcHJlY2lzaW9uIHRoYW4g
dGhlIHRhcmdldCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3VyY2Ugd2lsbCB3aWRlbi4KICAgICAgICAg
cmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4oc3RkOjpudW1lcmljX2xpbWl0czxU
YXJnZXQ+OjptYXgoKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3Ry
dWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCBmYWxzZT4gewot
ICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVy
IG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4NCw3ICsxODQs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkK
KyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAg
ICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0
aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyBzaWdu
ZWQgd2l0aCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLiBJZiBzdHJpY3RseSBncmVhdGVyLCBp
dCBpcyBhbHdheXMgc2FmZS4KICAgICAgICAgaWYgKHNpemVvZihUYXJnZXQpID4gc2l6ZW9mKFNv
dXJjZSkpCkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0
aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHBy
IGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdldCBpcyB1bnNp
Z25lZCB3aXRoIGdyZWF0ZXIgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdmFsdWUgPj0gMDsK
ICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIg
Ym9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVlKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFNh
ZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQordGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGNvbnZl
cnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKIHsKICAgICBpZiAoIWlzSW5C
b3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk5Niw2ICs5
OTYsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gYm9vbCBwcm9k
dWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKICAgICByZXR1cm4gY2hlY2tlZFByb2R1Y3Q8VD4o
YXJncy4uLikuaGFzT3ZlcmZsb3dlZCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29s
IGlzU3VtU21hbGxlclRoYW5PckVxdWFsKFQgYSwgVCBiLCBUIGJvdW5kKQoreworICAgIENoZWNr
ZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+IHN1bSA9IGE7CisgICAgc3VtICs9IGI7CisgICAgcmV0dXJu
ICFzdW0uaGFzT3ZlcmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDw9IGJvdW5kOworfQorCiB9CiAK
IHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsKQEAgLTEwMTcsMyArMTAyNCw0IEBAIHVzaW5n
IFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVzaW5nIFdURjo6aXNJbkJvdW5kczsKIHVzaW5n
IFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5nIFdURjo6c3VtT3ZlcmZsb3dzOwordXNpbmcg
V1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDljOWY4
MGUzZmQxYi4uNjQ2ZTliZWE1OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTE0MSw2ICsxNDEs
MTUgQEAKICNkZWZpbmUgVVNFX0pTVkFMVUUzMl82NCAxCiAjZW5kaWYKIAorLy8gRklYTUU6IHRo
aXMgc2hvdWxkIGluc3RlYWQgYmUgYmFzZWQgb24gU0laRV9NQVggPT0gVUlOVDY0X01BWAorLy8g
QnV0IHRoaXMgcmVxdWlyZXMgaW5jbHVkaW5nIDxjc3RkaW50PiBhbmQgUGxhdGZvcm0uaCBpcyBp
bmNsdWRlZCBpbiBhbGwga2luZCBvZiB3ZWlyZCBwbGFjZXMsIGluY2x1ZGluZyBub24tY3BwIGZp
bGVzCisvLyBBbmQgaW4gcHJhY3RpY2UgQ1BVKEFERFJFU1M2NCkgaXMgZXF1aXZhbGVudCBvbiBh
bGwgcGxhdGZvcm1zIHdlIHN1cHBvcnQgKHZlcmlmaWVkIGJ5IHN0YXRpY19hc3NlcnRzIGluIEFy
cmF5QnVmZmVyLmgpCisjaWYgQ1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVE
X0FSUkFZUyAxCisjZWxzZQorI2RlZmluZSBVU0VfTEFSR0VfVFlQRURfQVJSQVlTIDAKKyNlbmRp
ZgorCiAjaWYgVVNFKEpTVkFMVUU2NCkKIC8qIEZJWE1FOiBFbmFibGUgQklHSU5UMzIgb3B0aW1p
emF0aW9uIGFnYWluIGFmdGVyIHdlIGVuc3VyZSBTcGVlZG9tZXRlcjIgYW5kIEpldFN0cmVhbTIg
cmVncmVzc2lvbnMgYXJlIGZpeGVkLiAqLwogLyogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDc3NyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdmYWFkYzdhM2M3Zi4uYWJhZTNj
MDNmYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xNTUsNiArMTU1LDQ2IEBACiAgICAgICAgICogcGxhdGZv
cm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OmJ1aWxkVXNlckFn
ZW50U3RyaW5nKToKIAorMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJk
YXI6Ly84MTYwMzQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAg
ICAgICAgU29tZSBwYXJ0cyBvZiBXZWJDb3JlIHVzZSBUeXBlZEFycmF5cywgYW5kIHdvdWxkIG5v
dCBidWlsZCBhZnRlciBJIG1hZGUgdGhlIGxlbmd0aCgpIGZ1bmN0aW9uIG9uIHR5cGVkIGFycmF5
cyByZXR1cm4gVUNQVVJlZ2lzdGVyIGluc3RlYWQgb2YgdWludDMyX3QuCisgICAgICAgIE1vc3Qg
Zml4ZXMgd2VyZSB0cml2aWFsLCB0aGUgb25seSBleGNlcHRpb24gaXMgU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCwgd2hlcmUgSSBoYWQgdG8gaW5jcmVtZW50IHRoZSB2ZXJzaW9uIG51bWJlciwg
YXMgQXJyYXlCdWZmZXIgKGFuZCBBcnJheUJ1ZmZlclZpZXdzKSBub3cgd3JpdGUvcmVhZCB0aGVp
ciBsZW5ndGggaW4gYSA2NC1iaXQgZmllbGQgKGFuZCBzYW1lIGZvciB0aGUgYnl0ZU9mZnNldCBv
ZiBBcnJheUJ1ZmZlclZpZXcpLgorCisgICAgICAgIEkgYWxzbyBoYWQgdG8gYWRkIGEgdGVzdCBp
biBQaXhlbEJ1ZmZlci5jcHAgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgQXJyYXlCdWZmZXIgaXQgd2ls
bCB0cnkgdG8gYWxsb2NhdGUgaXMgPCBJTlQzMl9NQVguCisgICAgICAgIE90aGVyd2lzZSwgdGhl
IHRlc3QgTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUt
b3V0c2lkZS1pbWFnZWRhdGEtb3ZlcmZsb3cuaHRtbCB3aGljaCBjaGVja3MgdGhhdCB2ZXJ5IGxh
cmdlIGltYWdlcyBhcmUgcHJvcGVybHkgcmVqZWN0ZWQgd2l0aG91dCBjcmFzaGluZywgd291bGQg
dGltZW91dC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZSBjb2RlIGlzIGFscmVhZHkg
ZXh0ZW5zaXZlbHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgYW5kIEkgaW1wbGVtZW50ZWQg
bm8gbmV3IGZlYXR1cmVzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVsKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRUaW1lRG9tYWluRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVySW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlldyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZSk6CisgICAgICAgICogZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6
OmVucXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNz
ZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBs
YXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IGNiN2U4
NGQ0NTM4My4uYjE4ZDhmZDZhMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF1ZGlvQnVmZmVyOjpjb3B5RnJvbUNoYW5uZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBkZXN0
aW5hdGlvbiwKICAgICBpZiAoYnVmZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVy
T2Zmc2V0OworICAgIHNpemVfdCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAg
ICAgY291bnQgPSBzdGQ6Om1pbihkZXN0aW5hdGlvbi5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwog
ICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBjaGFubmVsRGF0YS0+ZGF0YSgpOwpAQCAtMjI2
LDcgKzIyNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyOjpjb3B5VG9DaGFubmVs
KFJlZjxGbG9hdDMyQXJyYXk+JiYgc291cmNlLCB1bnNpZ25lCiAgICAgaWYgKGJ1ZmZlck9mZnNl
dCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVk
IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3QgY291bnQgPSBk
YXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oc291cmNlLmdl
dCgpLmxlbmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IHNvdXJj
ZS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5jcHAKaW5kZXggNmMxYzk0NDAyMmVkLi5kNTNiOWU2NDRlYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
LmNwcApAQCAtMTk2LDggKzE5Niw5IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZy
ZXF1ZW5jeURhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAgICBkb0ZGVEFuYWx5
c2lzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGZyb20gbGluZWFyIG1hZ25p
dHVkZSB0byB1bnNpZ25lZC1ieXRlIGRlY2liZWxzLgotICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0
aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjpt
aW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3Qg
c291cmNlTGVuZ3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpOworICAgIHNpemVfdCBkZXN0
aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGxl
bmd0aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlm
IChsZW5ndGggPiAwKSB7CiAgICAgICAgIGNvbnN0IGRvdWJsZSByYW5nZVNjYWxlRmFjdG9yID0g
bV9tYXhEZWNpYmVscyA9PSBtX21pbkRlY2liZWxzID8gMSA6IDEgLyAobV9tYXhEZWNpYmVscyAt
IG1fbWluRGVjaWJlbHMpOwogICAgICAgICBjb25zdCBkb3VibGUgbWluRGVjaWJlbHMgPSBtX21p
bkRlY2liZWxzOwpAQCAtMjI3LDggKzIyOCw5IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0
RmxvYXRUaW1lRG9tYWluRGF0YShGbG9hdDMyQXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKLSAgICB1bnNpZ25lZCBmZnRTaXplID0g
dGhpcy0+ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBk
ZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGgg
PSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+
ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXplLCBkZXN0aW5h
dGlvbkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9vbCBpc0lucHV0
QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVyU2l6ZSAmJiBt
X2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChpc0lucHV0QnVm
ZmVyR29vZCk7CkBAIC0yNTEsOCArMjUzLDkgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRC
eXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZm
dFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRp
b25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGlu
YXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUo
KTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5n
dGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdv
b2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1
ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggYTFhOGZhMjkyOWNhLi4xODIyMWUzNWFhNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAt
OTQsNiArOTQsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dhc21Nb2R1bGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ZYXJyRmxhZ3MuaD4KICNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgpAQCAtMzQyLDggKzM0Myw5IEBAIHN0YXRpYyB1bnNpZ25lZCBjb3VudFVzYWdl
cyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiAgKiBWZXJzaW9uIDcuIGFkZGVkIHN1cHBv
cnQgZm9yIEZpbGUncyBsYXN0TW9kaWZpZWQgYXR0cmlidXRlLgogICogVmVyc2lvbiA4LiBhZGRl
ZCBzdXBwb3J0IGZvciBJbWFnZURhdGEncyBjb2xvclNwYWNlIGF0dHJpYnV0ZS4KICAqIFZlcnNp
b24gOS4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VCaXRtYXAgY29sb3Igc3BhY2UuCisgKiBWZXJz
aW9uIDEwLiBjaGFuZ2VkIHRoZSBsZW5ndGggKGFuZCBvZmZzZXRzKSBvZiBBcnJheUJ1ZmZlcnMg
KGFuZCBBcnJheUJ1ZmZlclZpZXdzKSBmcm9tIDMyIHRvIDY0IGJpdHMKICAqLwotc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0gOTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBD
dXJyZW50VmVyc2lvbiA9IDEwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFRlcm1pbmF0b3JUYWcg
PSAweEZGRkZGRkZGOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ1Bvb2xUYWcgPSAweEZG
RkZGRkZFOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vbkluZGV4UHJvcGVydGllc1RhZyA9IDB4
RkZGRkZGRkQ7CkBAIC0zOTksNyArNDAxLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmlu
Z0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIHwgT2JqZWN0UmVmZXJlbmNlCiAg
KiAgICB8IE1lc3NhZ2VQb3J0UmVmZXJlbmNlVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwg
QXJyYXlCdWZmZXIKLSAqICAgIHwgQXJyYXlCdWZmZXJWaWV3VGFnIEFycmF5QnVmZmVyVmlld1N1
YnRhZyA8Ynl0ZU9mZnNldDp1aW50MzJfdD4gPGJ5dGVMZW5ndGg6dWludDMyX3Q+IChBcnJheUJ1
ZmZlciB8IE9iamVjdFJlZmVyZW5jZSkKKyAqICAgIHwgQXJyYXlCdWZmZXJWaWV3VGFnIEFycmF5
QnVmZmVyVmlld1N1YnRhZyA8Ynl0ZU9mZnNldDp1aW50NjRfdD4gPGJ5dGVMZW5ndGg6dWludDY0
X3Q+IChBcnJheUJ1ZmZlciB8IE9iamVjdFJlZmVyZW5jZSkKICAqICAgIHwgQ3J5cHRvS2V5VGFn
IDx3cmFwcGVkS2V5TGVuZ3RoOnVpbnQzMl90PiA8ZmFjdG9yOmJ5dGV7d3JhcHBlZEtleUxlbmd0
aH0+CiAgKiAgICB8IERPTVBvaW50CiAgKiAgICB8IERPTVJlY3QKQEAgLTQ2Myw3ICs0NjUsNyBA
QCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAw
OwogICogICAgT2JqZWN0UmVmZXJlbmNlVGFnIDxvcEluZGV4OkluZGV4VHlwZT4KICAqCiAgKiBB
cnJheUJ1ZmZlciA6LQotICogICAgQXJyYXlCdWZmZXJUYWcgPGxlbmd0aDp1aW50MzJfdD4gPGNv
bnRlbnRzOmJ5dGV7bGVuZ3RofT4KKyAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDY0
X3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CiAgKiAgICBBcnJheUJ1ZmZlclRyYW5zZmVyVGFn
IDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIFNoYXJlZEFycmF5QnVmZmVyVGFnIDx2YWx1ZTp1aW50
MzJfdD4KICAqCkBAIC05OTgsOCArMTAwMCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVy
VmlldyA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlclZpZXcodm0sIG9iaik7Ci0gICAgICAg
IHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQo
KSkpOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3
LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgdWludDY0X3QgYnl0ZU9mZnNldCA9IGFycmF5QnVm
ZmVyVmlldy0+Ynl0ZU9mZnNldCgpOworICAgICAgICB3cml0ZShieXRlT2Zmc2V0KTsKKyAgICAg
ICAgdWludDY0X3QgYnl0ZUxlbmd0aCA9IGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlciA9IGFycmF5QnVmZmVyVmlldy0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAg
ICAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CkBAIC0xMTMxLDggKzExMzUsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihidWZmZXItPnJlc29sdXRp
b25TY2FsZSgpKSk7CiAgICAgICAgIHdyaXRlKGJ1ZmZlci0+Y29sb3JTcGFjZSgpKTsKIAotICAg
ICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSkpOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZm
ZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBDaGVja2Vk
VWludDMyIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBp
ZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgIGNvZGUgPSBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICB3cml0ZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5n
dGgpOwogICAgIH0KIAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCkBA
IC0xMjYzLDggKzEyNzIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB3cml0ZShJbWFn
ZURhdGFUYWcpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPndpZHRoKCkpOwogICAgICAg
ICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShk
YXRhLT5kYXRhKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEo
KS5kYXRhKCksIGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQ2hlY2tl
ZFVpbnQzMiBkYXRhTGVuZ3RoID0gZGF0YS0+ZGF0YSgpLmxlbmd0aCgpOworICAgICAgICAgICAg
ICAgIGlmIChkYXRhTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgICAgICAg
ICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgd3JpdGUoZGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0
YSgpLmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+Y29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
QEAgLTEzMTEsOCArMTMyNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIHdyaXRlKEFycmF5QnVmZmVyVGFnKTsKLSAgICAg
ICAgICAgICAgICB3cml0ZShhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAg
ICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEo
KSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90
IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICAgICAgICAg
IHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob2Jq
LT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CkBAIC0xNTAyLDcgKzE1MTcsNyBA
QCBwcml2YXRlOgogICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihtX2J1ZmZlciwgaSk7CiAgICAg
fQogCi0gICAgdm9pZCB3cml0ZSh1bnNpZ25lZCBsb25nIGxvbmcgaSkKKyAgICB2b2lkIHdyaXRl
KHVpbnQ2NF90IGkpCiAgICAgewogICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihtX2J1ZmZlciwg
aSk7CiAgICAgfQpAQCAtMjM5MSw3ICsyNDA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgYm9vbCByZWFkKHVuc2lnbmVkIGxvbmcgbG9uZyYgaSkKKyAg
ICBib29sIHJlYWQodWludDY0X3QmIGkpCiAgICAgewogICAgICAgICByZXR1cm4gcmVhZExpdHRs
ZUVuZGlhbihpKTsKICAgICB9CkBAIC0yNTU1LDkgKzI1NzAsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVmUHRy
PEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGVuZ3Ro
VHlwZT4KKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlckltcGwoUmVmUHRyPEFycmF5QnVmZmVyPiYg
YXJyYXlCdWZmZXIpCiAgICAgewotICAgICAgICB1aW50MzJfdCBsZW5ndGg7CisgICAgICAgIExl
bmd0aFR5cGUgbGVuZ3RoOwogICAgICAgICBpZiAoIXJlYWQobGVuZ3RoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fcHRyICsgbGVuZ3RoID4gbV9lbmQpCkBAIC0y
NTY5LDE1ICsyNTg1LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlldyhWTSYgdm0sIEpTVmFsdWUmIGFycmF5QnVm
ZmVyVmlldykKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiBh
cnJheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmIChtX3ZlcnNpb24gPCAxMCkKKyAgICAgICAg
ICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBsPHVpbnQzMl90PihhcnJheUJ1ZmZlcik7Cisg
ICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBsPHVpbnQ2NF90PihhcnJheUJ1ZmZlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExlbmd0aFR5cGU+CisgICAgYm9vbCBy
ZWFkQXJyYXlCdWZmZXJWaWV3SW1wbChWTSYgdm0sIEpTVmFsdWUmIGFycmF5QnVmZmVyVmlldykK
ICAgICB7CiAgICAgICAgIEFycmF5QnVmZmVyVmlld1N1YnRhZyBhcnJheUJ1ZmZlclZpZXdTdWJ0
YWc7CiAgICAgICAgIGlmICghcmVhZEFycmF5QnVmZmVyVmlld1N1YnRhZyhhcnJheUJ1ZmZlclZp
ZXdTdWJ0YWcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50MzJfdCBi
eXRlT2Zmc2V0OworICAgICAgICBMZW5ndGhUeXBlIGJ5dGVPZmZzZXQ7CiAgICAgICAgIGlmICgh
cmVhZChieXRlT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdWlu
dDMyX3QgYnl0ZUxlbmd0aDsKKyAgICAgICAgTGVuZ3RoVHlwZSBieXRlTGVuZ3RoOwogICAgICAg
ICBpZiAoIXJlYWQoYnl0ZUxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlck9iaiA9IGFzT2JqZWN0KHJlYWRUZXJtaW5hbCgpKTsK
QEAgLTI1ODcsNyArMjYxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGVsZW1lbnRT
aXplID0gdHlwZWRBcnJheUVsZW1lbnRTaXplKGFycmF5QnVmZmVyVmlld1N1YnRhZyk7CiAgICAg
ICAgIGlmICghZWxlbWVudFNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBlbGVtZW50U2l6ZTsKKyAgICAgICAgTGVu
Z3RoVHlwZSBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNpemU7CiAgICAgICAgIGlmIChs
ZW5ndGggKiBlbGVtZW50U2l6ZSAhPSBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0yNjM0LDYgKzI2NTgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0K
IAorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlldyhWTSYgdm0sIEpTVmFsdWUmIGFycmF5QnVm
ZmVyVmlldykKKyAgICB7CisgICAgICAgIGlmIChtX3ZlcnNpb24gPCAxMCkKKyAgICAgICAgICAg
IHJldHVybiByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbDx1aW50MzJfdD4odm0sIGFycmF5QnVmZmVy
Vmlldyk7CisgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbDx1aW50NjRfdD4o
dm0sIGFycmF5QnVmZmVyVmlldyk7CisgICAgfQorCiAgICAgYm9vbCByZWFkKFZlY3Rvcjx1aW50
OF90PiYgcmVzdWx0KQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlc3VsdC5pc0VtcHR5KCkpOwpA
QCAtMzM0NSw3ICszMzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBjb2xvclNwYWNlID0g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXI7CiAKLSAgICAgICAgaWYgKCFyZWFkKHNlcmlhbGl6YXRpb25TdGF0ZSkg
fHwgIXJlYWQobG9naWNhbFdpZHRoKSB8fCAhcmVhZChsb2dpY2FsSGVpZ2h0KSB8fCAhcmVhZChy
ZXNvbHV0aW9uU2NhbGUpIHx8IChtX3ZlcnNpb24gPiA4ICYmICFyZWFkKGNvbG9yU3BhY2UpKSB8
fCAhcmVhZEFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSkgeworICAgICAgICBpZiAoIXJlYWQoc2Vy
aWFsaXphdGlvblN0YXRlKSB8fCAhcmVhZChsb2dpY2FsV2lkdGgpIHx8ICFyZWFkKGxvZ2ljYWxI
ZWlnaHQpIHx8ICFyZWFkKHJlc29sdXRpb25TY2FsZSkgfHwgKG1fdmVyc2lvbiA+IDggJiYgIXJl
YWQoY29sb3JTcGFjZSkpIHx8ICFyZWFkQXJyYXlCdWZmZXJJbXBsPHVpbnQzMl90PihhcnJheUJ1
ZmZlcikpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKaW5kZXggZmI3NTdhNGQ3NGY2Li43ZTQ5YTllNzMyMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmIChoYXNBcnJheSkgewogICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheS0+
c2l6ZSgpKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvICZhcnJheUJ1ZmZlckNvbnRlbnRzIDog
Km1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSB7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IGFy
cmF5QnVmZmVyQ29udGVudHMuc2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFycmF5QnVmZmVyQ29udGVudHMuc2l6ZUluQnl0ZXMoKSk7
CiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJDb250ZW50cy5kYXRhKCkpLCBhcnJheUJ1ZmZlckNv
bnRlbnRzLnNpemVJbkJ5dGVzKCksIDEpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTk5LDkgKzE5
OSwxMiBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgICAgIGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgICAg
ICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkgewotICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVyU2l6
ZTsKKyAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNpemU7CiAgICAgICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZEJ1ZmZlclNpemUgPSBidWZmZXJTaXpl
OworICAgICAgICAgICAgaWYgKGNoZWNrZWRCdWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci50
ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUp
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMTIsNyArMjE1LDcgQEAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZShHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBidWZmZXIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5h
cHBlbmQoeyBidWZmZXIsIGJ1ZmZlclNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2Fn
ZURlc3RydWN0b3IoKSB9KTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+
YXBwZW5kKHsgYnVmZmVyLCBjaGVja2VkQnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2
ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpIH0pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCBhNjZiMTkxZDY4NmQuLjU1
OWViY2M0OGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2Vu
ZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
Y3BwCkBAIC02OCw3ICs2OCw5IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZShXZWJD
b3JlOjpCbG9iJiBibG9iKQogCiAgICAgYXV0byBieXRlTGVuZ3RoID0gYmxvYi5zaXplKCk7CiAg
ICAgaWYgKCFieXRlTGVuZ3RoKSB7Ci0gICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6
Y3JlYXRlKDBVLCAxKSwgMCwgMCk7CisgICAgICAgIC8vIFRoZSBjYXN0IGxvb2tzIHdlaXJkLCBi
dXQgaXMgcmVxdWlyZWQgZm9yIHRoZSBvdmVybG9hZGluZyByZXNvbHV0aW9uIHRvIHN1Y2NlZWQu
CisgICAgICAgIC8vIFdpdGhvdXQgaXQsIHRoZXJlIGlzIGFuIGFtYmlndWl0eSB3aGVyZSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpIGNv
dWxkIGJlIGNhbGxlZCBpbnN0ZWFkLgorICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KDBVKSwgMSksIDAsIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGF1dG8gYmxvYkxvYWRlciA9IG1ha2VVbmlxdWVSZWY8QmxvYkxvYWRl
cj4oW3RoaXNdKEJsb2JMb2FkZXImKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKaW5kZXggMjViZmYxNTNkMTJjLi43NTQzZjQ3NWEyN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5j
cHAKQEAgLTc0LDYgKzc0LDggQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZm
ZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWEKICAgICBhdXRvIGJ1
ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOwogICAgIGlmIChidWZm
ZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICBpZiAoYnVmZmVyU2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4
Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlclNpemUpOwogICAgIGlm
ICghcGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCA4NzBiZGM4MGYzNTUu
LmQ4M2U0YTQwNDBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Cb3guaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYzLDcgKzY0LDEw
IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBjaGVja2VkUmVhZChSJiByZXR1cm5WYWx1
ZSwgViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFubmVzcyBlbmRpYW5uZXNzKQogICAg
IHsKICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIFQgdmFsdWUgPSB2
aWV3LnRlbXBsYXRlIHJlYWQ8VD4ob2Zmc2V0LCBlbmRpYW5uZXNzID09IExpdHRsZUVuZGlhbiwg
JnJlYWRTdGF0dXMpOworICAgICAgICBzaXplX3QgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0OworICAg
ICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KGFjdHVhbE9mZnNldCwgZW5kaWFu
bmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNJbkJvdW5kczx1aW50MzJfdD4oYWN0dWFsT2Zmc2V0KSk7CisgICAgICAgIG9mZnNldCA9
IGFjdHVhbE9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkU3RhdHVzKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCg==
</data>
<flag name="commit-queue"
          id="465635"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441431</attachid>
            <date>2021-10-15 14:51:21 -0700</date>
            <delta_ts>2021-10-15 15:09:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>273686</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjI2MmNkYTM4M2Q1Li5lYzZiYjNjMWQ4NTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
NSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFr
IHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxseS1v
b2IuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1MzliNTBkMmU1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQorewor
ICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7Citm
dW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4
XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVl
OworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICog
MTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdl
dEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAg
ICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9m
IHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwor
ICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAg
ICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisg
ICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2Yt
Ym91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNz
L3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIu
anMKaW5kZXggNzdkNTBjMzUwYjQ2Li5lZDBlN2FmMDkxM2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JV
RkZFUl9TSVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVx
dWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2
LDEzIEBAIGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewog
ICAgIHZhciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRk
TWVtb3J5KDMyNzY4KTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KCgyKioxNikgKyAxKTsKICAgICBt
b2R1bGUuaW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwog
fQogCi1pZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikgeworaWYg
KGV4Y2VwdGlvbiAhPSAiQ29tcGlsZUVycm9yOiBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDE1OiBNZW1vcnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgNjU1MzcgaXMg
aW52YWxpZCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0aGlzLnRvQnVmZmVy
KCkpJykiKSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1t
b3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMK
aW5kZXggYmE2MmQ5MTQ3NmFhLi4wMWYwNmQyZjQ5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2
YXIgZXhjZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0
aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXI7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMDEsIG1heGltdW06IDB4MTAwMDEgfSkuYnVmZmVy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24g
IT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQotICAgIHRocm93ICJGQUlMRUQiOworaWYg
KGV4Y2VwdGlvbiAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCisgICAgdGhyb3cgIkZBSUxFRCwgZXhjZXB0aW9uIHdh
czogIiArIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDEzYWFkNjZjNTEuLjQ1OWZiOTNiNzk1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtNzAsNiArNzAsMjIgQEAKICAgICAgICAgKiBmYXN0L2lubGluZS93b3JkYnJlYWstYXQt
aW5saW5lLWJveC1ib3VuZGFyeS1leHBlY3RlZC5odG1sOiBBZGRlZC4KICAgICAgICAgKiBmYXN0
L2lubGluZS93b3JkYnJlYWstYXQtaW5saW5lLWJveC1ib3VuZGFyeS5odG1sOiBBZGRlZC4KIAor
MjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgUmViYXNlbGlu
ZWQgdGhyZWUgZm9sbG93aW5nIHRlc3RzIGFzIGRpZmZlcmVudCBvciBmZXdlciBlcnJvciBtZXNz
YWdlcyBhcHBlYXIgb24gdGhlIGNvbnNvbGUuCisgICAgICAgIEFsc28gY2hhbmdlZCBjdXJyZW50
VmVyc2lvbiBpbiBzZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGZyb20gOSB0byAxMC4KKwor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3N0b3JhZ2Uvc2VyaWFs
aXplZC1zY3JpcHQtdmFsdWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAy
MDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2Ug
aXQgYnJlYWsgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJp
YWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3Nlcmlh
bGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12
YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0
PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9
IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50
dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZm
ZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1i
dWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9C
dWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVu
Z3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2gu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxl
bmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZl
ci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVm
ZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0
aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9m
ZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5k
ZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkNzYwNDY4MTEyY2YuLmQyNDcwMTJhNzdhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8g
NEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkz
NTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0la
RSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVx
dWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2Vu
dGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZm
ZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBzaXplX3QuCisgICAgICAgIC0gVGhpcyBhbHNv
IHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5l
L0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0
aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlw
ZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3Ry
aWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFy
Z2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUg
REZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFk
IHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3Qg
YWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAg
LSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwv
RGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGlu
ZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11
bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEg
Im1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQ
cm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBp
bmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0
aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBk
YXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3Jy
ZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRp
bWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMu
CisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93
LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0
IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdl
IGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1v
cnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFz
dCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0
QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBj
dXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBl
cmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9V
SW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlz
IHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxs
cHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDAp
CisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3Vu
ZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hp
Y2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2ls
aXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0
eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBi
dXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBv
aW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFz
SW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1Q
dHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0
cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxl
bmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQ
dHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5C
bGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29k
ZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxh
cmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5
cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5s
aW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlD
bGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
R2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlv
bi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNT
dG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGls
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlw
ZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93
ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFu
ZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3Vu
ZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5
cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Z2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAg
IChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJh
eUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVj
a0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRM
T3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6
CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6
CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJ
bmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5
QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3
KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9E
YXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3
OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICog
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6
CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlH
ZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5k
ZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhp
bmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25z
Lmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dh
c21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCkBAIC0yNTQsNyArNTI2LDcgQEAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KIAogICAgICAgICBXaGlsZSBpbmNyZWFz
aW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVt
b3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKLSAgICAg
ICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2Vk
IGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BV
UmVnaXN0ZXIuCisgICAgICAgIC0gNEdCIGlzIG5vdCByZXByZXNlbnRhYmxlIGluIGEgdWludDMy
X3QsIHNvIEkgY2hhbmdlZCBhbGwgbGVuZ3RoIG9mIEFycmF5QnVmZmVyL1R5cGVkQXJyYXkvZXRj
Li4gdG8gYmVpbmcgc2l6ZV90LgogICAgICAgICAtIFRoaXMgYWxzbyByZXF1aXJlZCBjaGFuZ2lu
ZyBOZXdUeXBlZEFycmF5IGluIGFsbCBvZiBMTEludC9CYXNlbGluZS9ERkcvRlRMIHRvIGFjY2Vw
dCBhIG5vbi1pbnQzMiBzaXplLgogICAgICAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgcGVyZm9y
bWFuY2UgcmVncmVzc2lvbnMsIEkgaGFkIHRvIGFkZCBzcGVjdWxhdGlvbiBpbiB0aGUgREZHL0ZU
TCwgd2hpY2ggbm93IGhhdmUgdHdvIHZlcnNpb25zIG9mIE5ld1R5cGVkQXJyYXkgKG9uZSB0aGF0
IHRha2VzIGFuIEludDMyIGFuZCBvbmUgdGhhdCB0YWtlcyBhIFN0cmljdEludDUyKQogICAgICAg
ICAtIFNpbWlsYXJseSwgR2V0QXJyYXlMZW5ndGggYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
IG5vdyBjYW4gZWl0aGVyIHJldHVybiBhbiBJbnQzMiBvciBhIGxhcmdlciBudW1iZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdhYTBiN2JjOWFjLi45M2ViM2JmZTIwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yNjUsOSArMjY1LDkgQEAgcHVibGljOgogICAgIC8vIGlu
IGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZm
ZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3Nl
cyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGlj
IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg
VHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0yNzgsMjEgKzI3OCwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
c3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRy
KHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNp
dCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRw
dHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAg
ICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzAyLDEyICszMDIs
MTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0
cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAg
ICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTMyNSw3ICszMjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzM2LDE3ICsz
MzYsMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJ
bW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQot
ICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25z
dCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0K
KyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM1NywxNSArMzU3LDE1
IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZy
b20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMu
CiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVk
SW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAg
ICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzc2LDE3ICszNzYsMTcgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7
Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
NjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAg
ICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMK
QEAgLTEwNTMsOSArMTA1Myw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAg
IHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQg
Y2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDAxZTQ4YTExYmJiMC4uNDEzMjMwMmY4YTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBA
IC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4
Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Omxz
aGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAm
JiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwg
QWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsK
ICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMg
ZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlv
biwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUu
CisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJl
Y2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwg
ZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVt
cCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1t
NjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAg
ICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50
KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2Ny
YXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAg
Ly8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBu
b3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQor
ICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9Cisj
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCA1Zjk4ZmY5ZTMzN2MuLjg1NzQwNTVjOWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBp
bXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNv
bnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0g
MHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYg
KzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBB
ZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMjQ3MGMx
MTk2NjFiLi4wNzRhMzk4Zjg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRh
Z0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29s
IHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0
aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgp
CiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsK
KyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNo
ID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIs
IHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
aW5kZXggZTY2MTAwYmEyZTQ3Li4zZmFiYzRkODkxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAg
LTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpl
YnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgw
MGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVn
ZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMzk3OTkyYTNhNzUwLi4xMzI1MGVjNDg0
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5z
aWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVl
ZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3Rv
cmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxl
bmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIg
cmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTE4NCwxMiArMTE4NSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKLSAg
ICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxs
VGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0
eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwot
ICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90
LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVy
czo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisg
ICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRp
ZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxs
b2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkgKzEyMDMsMTMgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJl
dXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRj
aDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwot
CiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewpAQCAtMTU5NSw5ICsxNjA1LDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9
CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
Ly8gT3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3Bl
cmF0aW9uIGZ1bmN0aW9uLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRj
aEdQUikpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0g
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUg
bGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRp
bmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBh
ZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3Rh
dGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNjA1
LDkgKzE2MjAsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAg
ICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0
ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAg
ICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0
cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9h
ZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9h
ZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uMzZmZWIxNDRiYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVz
IHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0
eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBB
cnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3
aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAg
IH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7
IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVz
c09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7
IH0KQEAgLTI0NCw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9
OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNw
ZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFz
IGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFz
aWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3Jh
Z2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBp
bXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9
OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAg
ICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NCwxMyBAQCBzdGF0aWNf
YXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJh
eVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVM
YXJnZVR5cGVkQXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE0
LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5r
ZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCAyYjJmNWUwMzAxOWYuLmExY2Q2OTk0NGFiMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMzQ2Myw3ICszNDYzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7Cisg
ICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkpKSB7
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0NzEsNiArMzQ3MSwxNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlm
ICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5s
ZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzk2LDgg
KzM4MDcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKICAg
ICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5
dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVP
ZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAo
Ynl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MDYsNiArMzgxNywxOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5
KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
IHsKQEAgLTQxMDksNiArNDEzMywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjogeworICAgICAgICAvLyBT
ZWUgdGhlIENoZWNrSW5Cb3VuZHMgY2FzZSwgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlciB3aGF0
IHdlIHB1dCBoZXJlLgorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0lu
dDMyT25seSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CiAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRl
eCA2ZTI3NTMxMDRiZDMuLmEzYjkzNDBmNjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0z
MjUsNiArMzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUo
bm9kZS0+Y2hpbGQxKCksIG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBz
aG91bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDog
ewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZl
Y3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4
IDZlNGZlOWFmYTNlYi4uNzI1OGUzNzE1ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6cmVmaW5lKAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFj
dGlvbigpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgp
KQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSkKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9u
KCkpOwogICAgIAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMg
b2JqZWN0IGJlaGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYg
KzI5NCw4IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFy
cmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9u
bHkgcHJlc2VydmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBh
bmQgbm90IEdldEJ5VmFsIGFzIHdlbGwuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWwpIHsKICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMsIE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAg
IHJldHVybiB0eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3Vu
ZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGEwMjZh
YWQxODkzYi4uZGY3NWM3ODkwZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5z
cGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNp
b24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0
ZTsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNv
bnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlv
bjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJy
YXlDbGFzcywgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBAQCBwdWJs
aWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAg
ICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5
dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFy
cmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBl
LCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9u
LCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKKyAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
biwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxz
ZSkKICAgICB7CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAgdS5hc0J5
dGVzLmFycmF5Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRp
b24gPSBzcGVjdWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJz
aW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAg
ICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNs
YXNzLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikK
QEAgLTE2Myw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlv
biA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252
ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFz
Qnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJy
YXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpUeXBlPih1
LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgQXJyYXk6
OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OlNwZWN1bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpD
b252ZXJzaW9uPih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0aW9uIGFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUuYXNCeXRl
cy5hY3Rpb24pOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVuc2lnbmVk
IGFzV29yZCgpIGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzksMzUgKzE4
NSw1MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9i
c2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpB
Y3Rpb24sIGJvb2wgbWFrZVNhZmUpOwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFy
cmF5OjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVj
dWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwg
Y29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlC
ZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhBcnJh
eUNsYXNzKEFycmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdp
dGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBt
YXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBBcnJheU1v
ZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRoQXJyYXlD
bGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNsYXNzIGFy
cmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNw
ZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywg
c3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5
KTsKKyAgICB9CiAKKyAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2FmZSkKLSAg
ICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAgICAgICAg
ICByZXR1cm4gQXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5t
YXlTdG9yZVRvSG9sZShsb2NrZXIpKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5
OjpUb0hvbGU7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gQXJyYXk6OkluQm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFycmF5TW9k
ZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFBy
b2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBt
eUFycmF5Q2xhc3M7Ci0KICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAgICAgICBp
ZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZp
dHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJh
eU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0yMjEsMjMg
KzI0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6
OkFycmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5
Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5
Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlw
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9Ci0gICAg
Ci0gICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNp
b24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAgfQotICAg
IAotICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwg
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
LCBhY3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uID0g
c3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKworICAg
ICAgICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBlZEFycmF5
KGxvY2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25B
bmRNYXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBsYXJnZVR5
cGVkQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTI2LDcg
KzUzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkK
ICAgICAgICAgICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkKICAgICAg
ICAgICAgICYmIHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAgICAgICAg
ICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAgICAgICYm
IGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYmIG1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgPT0gb3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIpIGNvbnN0
CkBAIC01NzksNyArNTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlD
bGFzczsKICAgICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAgICB1aW50
OF90IGNvbnZlcnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0OworICAg
ICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOworICAgICAgICAgICAgdWludDhfdCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA6IDE7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5zaWduZWQg
YXNXb3JkOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggYzg4ZGU0YjIzOWM3Li5hMDBjODUzNzAxMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zODA3
LDggKzM4MDcsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHN0YXRpY19h
c3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRy
aW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAg
ICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIVVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIyLDI2ICszODMxLDMwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7CisgICAgICAg
IE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAg
ICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAo
KnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5
U3RvcmFnZVR5cGU7CkBAIC0zODUzLDEzICszODY2LDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0
aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRo
aXNOb2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7
CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJy
YXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJp
bnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBl
ID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uOWFkNWMy
NzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVu
dW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjM5
LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNl
IENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVl
UmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEzMzksMTEgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9m
ZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAg
ICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5
cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwg
TGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAg
ICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFy
cmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAg
ICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9u
RW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5l
IGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUzNGUuLmZhMTdiZjExNDE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjQwMjg0Y2ZhMjJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdy
aXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgor
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9p
bnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk3LDEw
ICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdD
b2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4u
NTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAg
ICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAg
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXgg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0
dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQx
NkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENs
YW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNw
ZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1Nw
ZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxh
cmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRT
aXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcx
NywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCku
cmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5
TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJy
YXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUt
PmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwor
CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiArMjIxNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBBc3Nl
cnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpA
QCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9k
ZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAgICBOb2RlKiBwcmVw
ZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1v
ZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXko
YXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwot
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAotICAg
ICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2Vs
bFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5k
ZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4uMmQ4NmViNzU3Mzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBA
IC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMg
Y2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMg
ZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRv
IHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNo
LAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmls
ZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZv
cm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBi
dXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFj
a3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKKy8vIGRldGFp
bHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRp
bmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2
YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0
CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggMmJiOWQ0YmVhODAw
Li4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVk
QXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVHlwZWRB
cnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZWRBcnJh
eUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1
MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAg
ICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggMjY5MTcxY2IzNDFkLi40
MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVh
cExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9j
LAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAgICBU
eXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVkQXJyYXlMZW5ndGhJbnQ1Mkxv
YywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9j
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjZkZWRhMDM3
ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTEzMzUsNyArMTMzNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2YWxpZGF0
ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRz
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwgbm9kZS0+
Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUtcHJvZHVjaW5nIG5vZGUuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5
NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAg
ICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5k
ZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2
LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkg
YXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZp
dCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5k
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2UgdG8gcmV0dXJuaW5nIEludDUy
IGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlkYXRpb24gZmFpbHVyZXMuICov
IFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNy
byhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8o
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hl
Y2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRo
IHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tK
U0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1
dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1MDdmMWU4MGFjMC4uOTQ1
MzUzNTZkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAg
IGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5
KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNr
bHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAog
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUs
NyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6
ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90
IHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDE0IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50cHRyX3Q+OjptYXgoKSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0
VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQ
dHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1
bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyAr
MTkwOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcg
KzE5MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Nyw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NzIsNyArMTk3Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg5LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjAwNCw3ICsyMDA1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIxLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDM2LDcgKzIwMzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTMsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIw
NjgsNyArMjA2OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJ
bnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjRmZDU3OTVkMmQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5Kikp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsx
MzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgog
ICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcApp
bmRleCBlM2EyMzlhMzNlMzAuLmQ5ZGFlM2E4MzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwyMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVk
QXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgs
IG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJh
eU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3Ro
LCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkgfHwg
bV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55
LCBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgSW50NTJSZXBVc2UpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSk7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3LDEyICsxNDcsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBP
cEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtu
b3duQ2VsbFVzZSksIHN0b3JhZ2UpOwotICAgICAgICBOb2RlKiBjaGVja0luQm91bmRzID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIGluZGV4
LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworICAgICAgICBOb2RlKiBjaGVja0luQm91
bmRzOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICgob3AgPT0gR2V0
QXJyYXlMZW5ndGgpICYmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5
KCkgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZs
b3cpKSkgeworICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55LCBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93
bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGxlbmd0aC0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgYSBkdW1teSBz
aW5jZSB0aGlzIG5vZGUgZG9lcyBub3QgYWN0dWFsbHkgcmV0dXJuIGFueXRoaW5nLgorICAgICAg
ICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHNJbnQ1Miwg
bV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBJbnQ1
MlJlcFVzZSkpOworICAgICAgICB9IGVsc2UgeworI2VuZGlmCisgICAgICAgICAgICBOb2RlKiBs
ZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgp
LCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgICAgICB9CisjZW5kaWYKKwogCiAgICAgICAgIEFkamFjZW5jeUxp
c3QgYWRqYWNlbmN5TGlzdCA9IG1fZ3JhcGguY29weVZhcmFyZ0NoaWxkcmVuKG1fbm9kZSk7CiAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGVja0luQm91bmRz
LCBVbnR5cGVkVXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uMmU3ZjU2YWExMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjg4LDYgKzI4OCw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAg
Y2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM3Myw2ICszNzQsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI1ZjZhY2E2N2M0OC4uNzQ5ZWY1NDZhYmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzIzOCwyOCArMzIzOCw0MyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUQ29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNvdQogCiB9CiAK
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5k
cyhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUikKIHsKICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQogICAgICAg
ICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmll
dyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZv
ck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlN
b2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXct
Pmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAg
ICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgp
OwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUt
PmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29u
c3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgp
KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKICAgICAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyNlbmRpZgog
ICAgIH0KKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5k
ZXhHUFIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBpbmRl
eEdQUiwgc2NyYXRjaEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBqdW1wKTsKQEAgLTMzODAsMTAgKzMzOTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBz
dG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwog
ICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9y
YWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcDsKICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTMzOTcsNyArMzQxNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBu
b2RlLCBUeXBlZEFycmF5VHlwZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9
IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9ybWF0ID09
IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxvYWRGcm9tSW50VHlwZWRB
cnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIHR5
cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50
VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3BlY3VsYXRl
LCBzaG91bGRCb3gsIHJlc3VsdEZQUik7CkBAIC0zNTU1LDYgKzM1NzIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFn
ZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMp
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJl
ZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMik7CkBAIC0zNTg3LDcgKzM2MDUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHBy
b3BlcnR5KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVl
R1BSICE9IHN0b3JhZ2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0g
anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAo
ZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1LDEwICszNjYzLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5v
ZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7
CiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBi
YXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5n
cHIoKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
czsKICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQ
UlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dp
dGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9h
ZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzY5MCwxMCArMzcx
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1
ZUZQUiA9IHZhbHVlT3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRP
ZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVy
dHksIHNjcmF0Y2hHUFIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsK
ICAgICBjYXNlIDQ6IHsKQEAgLTc5NjcsNyArNzk4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcs
IGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUp
Ci0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3Jh
Z2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VS
ZWcpOwpAQCAtODAzOSw5ICs4MDYxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BS
UmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQ
Uik7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQ
UiAhPSBkYXRhR1BSKTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAK
QEAgLTgwODMsNiArODEwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0
KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBBSSBwcm9t
aXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJ
bnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJS
ZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiArODM3MywxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBtX2ppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
MTExMTksMTAgKzExMTQ5LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9k
ZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5
U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBh
IGludHB0cl90LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXpl
SW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzY3JhdGNoR1BSKTsK
KyNlbHNlCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKyAgICBlbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0
dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXpl
R1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5
IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEz
Niw4ICsxMTE4MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZh
c3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNz
ZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQp
KTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkgKzEx
MjQ0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgbV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkpOworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBU
cnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAt
MTQxNjcsNiArMTQyMjQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXkoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDA3YjU2M2IzNDgzYS4uMDQ5YmNmN2U2ZmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5
ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUq
KTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQ
Uik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2Vu
ZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzMSwxMCArMTQzOCwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhNaW5NYXgoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JU
eXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJZk91
dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5k
c0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSop
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJl
ZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdz
LCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAt
MjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9
OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNw
ZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9h
ZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCku
CisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhl
IGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4uMjJmNmY3Mjc0YWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgp
LmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0g
bm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5
cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5
cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJH
QiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBj
b21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjog
eworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQ
cm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzk4LDYgKzQ0MDksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQ1MkNv
bnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCAzYjM5M2Y1Mjc1ZjcuLmI1YzQ4NDk4M2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
ZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6
ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5
TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5
cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkg
dmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3By
KCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5
QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9m
ZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVk
QXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIp
OworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRh
R1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRh
dGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0
YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShB
Uk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5
dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxs
cHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJN
NjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7Cisg
ICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVz
dWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYgLy8gVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5v
ZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjQsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOworICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
aW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgICAgICBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoLmdwcigpKTsK
ICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwogICAgICAgICAKQEAgLTQz
ODEsNiArNDQ2MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorI2lmIFVTRShBRERSRVNTNjQp
CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNl
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAg
YnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5
SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTg4LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJl
YWs7CkBAIC01NTg5LDcgKzU2ODcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQy
KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRk
NjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFs
dWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgbV9qaXQu
bG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNoZWNrIGFnYWluc3QgMCBoZXJlLCBuZWdhdGl2ZSBpbmRpY2VzIGFy
ZSBjYXVnaHQgYnkgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggcmlnaHQgYWZ0ZXIKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbmRpZgogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQx
KSk7CiAKQEAgLTU3OTAsNyArNTg5NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwg
dDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBtX2pp
dC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVl
ZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMg
YXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0Miwg
dDEpKTsKIApAQCAtNjA0Miw2ICs2MTU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBB
c3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0lu
Qm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zm
c2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFm
MjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAg
ICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIz
YmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApA
QCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9u
OgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYg
KzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1
cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBA
IC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
IGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2Ug
Q2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1
bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNh
OGY1Y2ZjNzk1ZS4uNDhkNGUxYmZmNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNr
SW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5v
ZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29t
cGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
b3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGlu
Z1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAg
ICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVj
dG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigp
KSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25z
dEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAg
ICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw5ICs0ODc3LDMwIEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIo
bV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQs
IHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhlIHJl
c3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBtdXN0
IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorICAgICAgICBz
ZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAgICB9CisKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdt
aXNzaW5nLW5vcmV0dXJuIgorICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
QXNJbnQ1MigpCisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBS
RUxFQVNFX0FTU0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVu
dC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2
NF90KSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCk7CisgICAgICAgIHNldFN0cmljdEludDUyKHJlc3VsdCk7
CisgICAgfQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCiAgICAgdm9pZCBjb21waWxl
R2V0UHJvdG90eXBlT2YoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTUw
NTQsOCArNTA4NiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5Vmll
dygpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIoCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUo
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxs
cHRyLCBtX291dC5hYm92ZShsZW5ndGgsIG1fb3V0LmNvbnN0SW50NjQoc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQu
Y2FzdFRvSW50MzIobGVuZ3RoKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIHNldEludDMyKG1f
b3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUwNjQsNiArNTEwMSwxNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIK
KyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MigpCisgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlW
aWV3KCkpOworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNFX0FT
U0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7Cisg
ICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAg
fQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCiAgICAgdm9pZCBjb21waWxlR2V0VmVj
dG9yTGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkpIHsKQEAgLTUxMDgsNyArNTE1NiwyMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBkZXBl
bmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50YWlu
IHRoYXQKICAgICAgICAgLy8gd2UgZG9taW5hdGUgdGhlbS4KICAgICB9Ci0gICAgCisKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1
MigpCisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNF
X0FTU0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7
CisgICAgICAgIC8vIFNpZ24tZXh0ZW5kZWQgdG8gYWxzbyBjYXRjaCBuZWdhdGl2ZSBpbmRpY2Vz
CisgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9u
b2RlLT5jaGlsZDEoKSkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbG93U3RyaWN0SW50NTIo
bV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1
ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworICAgICAg
ICAvLyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBubyB1c2Vy
IG9mIHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0
aGlzIG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2UgZG9taW5h
dGUgdGhlbS4KKyAgICB9CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICBMVmFs
dWUgY29tcGlsZUdldEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwpAQCAtNjAwOCwxMSArNjA3MiwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAg
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2goCi0gICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxv
d0ludDMyKGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZC
b3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAg
ICAgICAgICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0Vf
QVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzQ29u
ZGl0aW9uID0gbV9vdXQuYWJvdmVPckVxdWFsKG1fb3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpLCBs
b3dTdHJpY3RJbnQ1MihjaGlsZDUpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZDUudXNlS2luZCgpID09IEludDMyVXNl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291
dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91bmRzQ29u
ZGl0aW9uLCB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7CisKICAg
ICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhp
c0luQm91bmRzLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmUodmFsdWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUodHlwZSkpOwogICAgICAgICAgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC04MTY5LDk1ICs4MjQwLDE4IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsK
IAotICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsK
LQotICAgICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9
IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKAotICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIo
SlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJl
bHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xv
d0Nhc2UpOwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAg
IG1fb3V0LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0Vs
ZW1lbnRTaXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0
LmJpdEFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5j
b25zdEludFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5z
dGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAg
c3RvcmFnZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAg
ICAgbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQ
dHIoMykpKSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAg
ICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4
dFB0cihzaXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0
ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0
aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAg
YXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6
U29tZUxhdGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5n
cHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5
UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAg
fQotI2VuZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9v
dXQuYW5jaG9yKHN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWdu
RXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTFZh
bHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVk
QXJyYXlUeXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAg
ICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRW
YWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5p
bnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9B
UlJBWV9UWVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAg
ICBjYXNlIFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBh
bGxvY2F0ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNs
b3dDYXNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIo
c3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rv
cik7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUz
MihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBt
dXRhdG9yRmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBt
X291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRB
cnJheVR5cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwg
Y29udGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5w
aGkocG9pbnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgIGNhc2Ug
SW50NTJSZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1
Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5
U2xvd1BhdGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlv
bj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUo
dHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXpl
ID0gbG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAg
ICAgICAgICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTgyNzcsNyArODI3MSwxMDQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRz
KQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5p
bnRQdHJaZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5h
Ym92ZShzaXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0
U2l6ZUxpbWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxs
RW5vdWdoQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oc21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0
aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJp
dCBudW1iZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0Fy
cmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6
ZSA9CisgICAgICAgICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihs
b2dFbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGVkQXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0
QW5kKAorICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQ
dHIoNykpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxp
bnRwdHJfdD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBh
bGxvY2F0b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0
ZVNpemUsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBD
ZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAg
ICAgICBzdG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAg
bV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIo
MykpKSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMu
dHlwZWRBcnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAg
ICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50
KHBvaW50ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVn
aXN0ZXIoc3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRC
aXRzLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgICAgICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwor
ICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9
IG1fb3V0LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVl
ID0gbnVsbHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBU
WVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTog
XAorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUj
I0FycmF5PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5H
X0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQ
RV9DQVNFCisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3Vs
dFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQ
dHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RS
ZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworI2lmIFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFz
dFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKHNpemU2NEJpdHMpLCBmYXN0
UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbmRpZgor
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBm
YXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAg
ICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBt
X291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OworICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAg
ICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5l
d1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0u
ZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RH
UFIoKSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRW
YWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoKQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CkBAIC0xNDY1Niw2ICsxNDc0Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBhcmUg
MzItYml0cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0d2Vl
biBiYXNlK2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZhbHVl
IGJhc2UsIExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBBYnN0
cmFjdEhlYXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxpbmdM
aW1pdCA9IDEwOwpAQCAtMTU1OTEsNyArMTU2ODQsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBE
YXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsK
KyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBO
byBuZWVkIGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVj
ayBhZ2FpbnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3Ro
ID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUg
aW5kZXhUb0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRl
eFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0
LDcgKzE1ODMzLDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBt
X25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxl
c3NUaGFuKGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5n
dGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGlj
aXQgY29tcGFyaXNvbiBvZiBpbmRleCB0byAwLCB0aGUgY2hlY2sgYWdhaW5zdCBsZW5ndGggY2F0
Y2hlcyB0aGF0IGNhc2UKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIo
bV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfbGVuZ3RoKSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0
Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAg
ICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25z
dEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzM0MSwxMSBAQCBwcml2
YXRlOgogICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRy
KSB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQ
cmltaXRpdmUpIHsKKyNpZiBVU0UoQUREUkVTUzY0KQorICAgICAgICAgICAgICAgIExWYWx1ZSBz
aXplID0gbV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
KTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFz
ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuaAppbmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1
ZSBub25OZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0
cnVjdGlvbjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9p
bnRlcikgeyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5l
Z2F0aXZlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBs
b2FkMzIoYmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1
ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwg
ZmllbGQpOyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1
ZSBub3RFcXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JbnRyaW5zaWNFbWl0dGVyLmNwcAppbmRleCA1Yzc2NWVkOTc2NTAuLjg5NTY4ZDQ2MzBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtODYsMjMgKzg2LDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdElu
dHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2gg
KGludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7Cisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1
ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAg
ICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQu
Ym94SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0
ZUxlbmd0aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
dmFsdWVHUFIpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKQorICAgICAgICAg
ICAgaml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVl
R1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2Ny
YXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0
eXBlKSA+IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNp
bmNlIHdlIFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3Mg
YW4gaW50MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVHUFIsIEltbTMyKGxvZ0Vs
ZW1lbnRTaXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBh
IGJpdHNoaWZ0IGhlcmUgc2luY2Ugb24gQUREUkVTUzMyIHBsYXRmb3JtcyBUeXBlZEFycmF5cyBj
YW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgorICAgICAgICAg
ICAgaml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVl
R1BSKTsKICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVS
ZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMzMsOCArMTQyLDEyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6ZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAg
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVlR1BSKTsKICAgICAgICAg
CiAgICAgICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0
ZS5zY3JhdGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJ
bnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkz
Nyw4IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5k
ZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2Jq
ZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmpl
Y3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJy
YXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMo
KTsKQEAgLTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBn
ZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vi
c2NyaXB0LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7Cisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFz
VWludDMySW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBp
ZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3Ry
aW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAg
IGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNr
bHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQg
PSBvYmplY3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRP
ZkJvdW5kcyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUo
KSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaSkgPCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAg
ICAgaWYgKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAg
ICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVy
Zmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFu
ZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0
MAogICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFs
dWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1
YnNjcmlwdC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUp
CiAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQx
YzcxYjYwMDQ0ZS4uZTc2ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAj
ZGVmaW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNl
bHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwog
I2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5k
ZXggNTY4MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3Vu
ZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAg
ICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUg
cmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJr
aW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3MCwxMyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAg
IGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAg
ICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNV
aW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlm
IChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRl
eFF1aWNrbHkoaSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlj
a2x5KHZtLCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9i
amVjdC0+dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlKSkKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAg
ICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI0MjFhN2ZhNDEwZS4u
NmNkYmQ4ZGUzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAog
ICAgIGNvbnN0IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJl
SURUYWJsZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lm
IExBUkdFX1RZUEVEX0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9
IGNvbnN0ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQK
KwogY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJN
NjQgb3IgQVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5
UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQog
ICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5
cGUKIGVuZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaElu
dEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBp
bmRleCBpcyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21h
Y3JvIGdldEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZp
bmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMg
Rmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRz
IHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5
cGVbYmFzZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwx
MSArMTMyNiwyNiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlz
aEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAg
ICAgICBjb25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAg
ICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAg
ICAgYmlhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgaWYgTEFSR0VfVFlQRURf
QVJSQVlTCisgICAgICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFz
ZV0sIGxlbmd0aAorICAgICAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3Ro
W2Jhc2VdLCBsZW5ndGgKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRo
CisgICAgICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJl
IGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUg
bm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBpZiBMQVJHRV9U
WVBFRF9BUlJBWVMKKyAgICAgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6
bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpYWVx
IGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAg
ICAgIGVuZAorICAgIGVuZAorCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIGJx
YmVxIGluZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFsbFR5cGVkQXJyYXkKKyAg
ICAgICAgc2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6CiAgICAgZW5kCiAK
ICAgICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFzZV0sIHQzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCmluZGV4IDUwZDVkYmRmNjAyYS4uNGU3MGY4YjE1ZmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMTYyNCw2ICsxNjI0LDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3Zh
bCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAg
IGRpc3BhdGNoKCkKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisg
ICAgICAgIGNyYXNoKCkKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBnZXQo
bV9iYXNlLCB0MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Miwg
Q2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE2NjksNyArMTY3Myw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4
ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5
VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFs
VHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZh
bCwgc2V0TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xv
dzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQppbmRleCBkODRiNmVhZDM3ZmQuLjAyOTIwY2E4NDI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MTMs
NiArMTcxMywxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlW
YWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmaW5pc2hHZXRC
eVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZW5kCiAKKyAgICBtYWNybyBzZXRMYXJnZVR5
cGVkQXJyYXkoKQorICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgICAgIHN0
b3JlYiAxLCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUgKyBBcnJheVByb2Zp
bGU6Om1fbWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGNyYXNoKCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAK
ICAgICBnZXQobV9iYXNlLCB0MikKQEAgLTE3MjMsNiArMTczMSw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICMgVGhpcyBz
aWduLWV4dGVuc2lvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdldEJ5VmFsVHlwZWRB
cnJheSB3b3JrIGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAgICAgc3hpMnEgdDEsIHQxCiAKICAg
ICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJU
YWcpCkBAIC0xNzYzLDcgKzE3NzIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92
YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRp
c3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5
cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWws
IC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJ
bnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgLm9w
R2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4YTFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcg
KzQyLDcgQEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5
UmVmKCk7CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9y
RnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVk
QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUp
CiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUlu
Qnl0ZXMoc2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlC
dWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJh
bnNmZXJUbygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29u
dGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVm
ZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRl
c3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUlu
Qnl0ZXMpCiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsx
MDksMjEgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5C
eXRlcyA9IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRp
b25Qb2xpY3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShz
aXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRp
b25Qb2xpY3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cg
b2YgdGhlIHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2ln
bmVkIHRvdGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBp
ZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6
ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0g
bnVtRWxlbWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlm
IChzaXplSW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1B
WF9BUlJBWV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVt
RWxlbWVudHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90IGFsbG9jYXRp
b25TaXplID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQog
ICAgICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkg
YWxsb2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVh
biB0aGF0IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNh
Z2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAg
bV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFU
eXBlKGRhdGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAg
ICByZXNldCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAg
ICBtZW1zZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9
IHNpemVJbkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpF
KTsKICAgICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0
cnVjdG9yKCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NF
UlQob3RoZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1S
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXpl
KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+
IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAot
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVm
ZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBA
IC0yMDgsNyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFy
cmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVz
ZWQgZnJvbToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0
ZU1lbW9yeS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5
IGNvbWUKIC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1Jl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVk
KCkgfHwgKEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAg
cmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJp
bWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5z
aWduZWQgYnl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNl
IGEgbmV3IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQg
YWNjZXNzZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3Vs
ZCBhbGxvY2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qg
Ynl0ZUxlbmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQog
ewogICAgIGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZl
LCBkYXRhKSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpA
QCAtMjI5LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZy
b21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNy
ZWF0ZShXVEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVf
dCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0
cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6WmVyb0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0
dXJuIHRyeUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAg
ICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRl
KGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAg
LTI0OCwxNyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNy
ZWF0ZUludGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQog
Ci1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVu
dHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUp
OwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitS
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNp
emVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVy
biB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250
ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSBwb2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMs
IGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSAr
MjY0LDE3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJ
bnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJj
ZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCog
c291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwg
c291cmNlKTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RG
TW92ZShjb250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0
ZUxlbmd0aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7
CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkK
K1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5p
dGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29u
dGVudHM7CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRl
U2l6ZSwgcG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmln
aHQpCitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0
LCBzaXplX3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlmICh4
IDwgbGVmdCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBW
YWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0dXJu
IHg7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkg
Y29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
CiB7Ci0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBzaXpl
X3QgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAg
ICAgICBpbmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1
ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJl
dHVybiBzbGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgo
KSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1w
ZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwg
c2l6ZV90IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8g
ZW5kIC0gYmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0g
YmVnaW4gOiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVz
dWx0KQogICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEz
ZWJhLi5lYWNjYTJjMjMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
U2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVs
bCA8PCAzMikKKyNlbHNlCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3QpID09IHNpemVvZih1
aW50MzJfdCkpOworLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhl
IHNpemUgaW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9u
IDMyLWJpdCBwbGF0Zm9ybXMuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0IHNo
b3VsZCBpbiB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIpIGlm
IGFueW9uZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZmZmZ1
CisjZW5kaWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzYwLDcg
QEAgdXNpbmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQ
dHI8U2hhcmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzPiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRh
LCB1bnNpZ25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBT
aGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKTsK
ICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVs
bChtX3NpemVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHByaXZhdGU6CiAgICAgdXNp
bmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdl
ZFB0cj47CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1
Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwor
ICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50
cyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJs
aWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQg
c2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJ
bkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFy
cmF5QnVmZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lk
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygp
KTsgfQotICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5C
eXRlczsgfQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUlu
Qnl0ZXM7IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWQ7IH0KICAgICAKQEAgLTk0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0
aWFsaXplCiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAg
IHZvaWQgdHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQo
KTsKICAgICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4
ICsxMTQsMjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJy
YXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0
cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3Np
emVJbkJ5dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlC
dWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1Ymxp
YzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCog
c291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0
ZUxlbmd0aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNp
Z25lZCBieXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29u
c3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRh
dGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1
bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3Ro
KCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFy
aW5nTW9kZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBwdWJs
aWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRv
dWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVm
UHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2ln
bmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6
ZV90IGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5l
IHZvaWQgdW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVH
aWdhY2FnZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwg
Y29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0
cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwor
ICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29u
dGVudHMmJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVT
aXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJy
YXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQgY2xh
bXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOworICAg
IGlubGluZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0YXRp
YyBpbmxpbmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3Qg
cmlnaHQpOwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzIw
MSw3IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4g
bV9jb250ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3Ro
KCkgY29uc3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBAQCBi
b29sIEFycmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6Omdj
U2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5
IHdhbnQgdG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcu
Ci0gICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5
dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3Ro
KCk7CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLjQ3
MzcyMjc0NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVy
VmlldygKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5
dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAg
ICAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxl
bmd0aChieXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93PiBs
ZW5ndGgoYnl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5
dGVMZW5ndGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjA5OTk1NGI4
NjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICByZXR1cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAgICAv
LyBIZWxwZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBzdGF0
aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNp
emVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoc2l6
ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAhKGJ5dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNl
dCAmIChlbGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5
IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRo
aW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJy
YXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVu
dHMsIHNpemVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1
Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJv
b2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
IGJ5dGVPZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAg
ICAgewotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAg
ICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRl
T2Zmc2V0KSAvIHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRl
TGVuZ3RoIC0gYnl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsK
ICAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJh
eUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJ
bXBsKEFycmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBi
b29sIHNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0
KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0
UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVf
dCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQg
Ynl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5l
IHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBl
bmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWdu
ZWQqIGxlbmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9m
ZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMg
aW4gbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0
cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZm
ZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNs
YW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZm
ZXIsCi0gICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQg
Km9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBzaXplX3Qg
YXJyYXlCeXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9mZnNldCwKKyAgICAgICAgc2l6ZV90
ICpudW1FbGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5U
X01BWCAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIHNpemVfdCBtYXhP
ZmZzZXQgPSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9m
ZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAg
ICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpu
dW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
Km9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAg
ICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAg
ICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpv
ZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVja2VkU2l6ZSBhZGp1c3RlZE9mZnNldCA9
ICpvZmZzZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAgICAgICAg
YWRqdXN0ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRqdXN0ZWRP
ZmZzZXQuaGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBidWZmZXIu
Ynl0ZUxlbmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNldC52YWx1
ZSgpOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5n
dGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6
Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB1bnNp
Z25lZCBtX2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAg
IHVpbnQ2NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVP
ZmZzZXQgOiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVu
c2lnbmVkIG1fYnl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAg
ICAgdXNpbmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lk
LCB0YWdDYWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlC
dWZmZXIncyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJv
b2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2ln
bmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqIGFycmF5LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgo
KSA+IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5n
dGgoKSA8IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBv
dmVyZmxvdworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgYXJy
YXktPmJ5dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
YmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJh
c2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZm
ZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3Ro
KCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkg
ewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFp
c1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxl
bmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVpbnQ4X3QqIGJh
c2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShi
YXNlICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0
aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFy
cmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0
YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4g
Ynl0ZUxlbmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRl
T2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAg
ICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3Ro
LCBieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29u
c3QgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVz
cygpKTsKICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5
dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6
emVyb1JhbmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3Ro
KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVu
Z3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNl
dCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYg
KCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5
dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1
aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAg
IG1lbXNldChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExl
bmd0aCgKLSAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWdu
ZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAg
ICAgICBzdGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3Rh
cnQgPSAwOwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAg
IGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlm
IChlbmQgPCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihlbmQgLSBzdGFydCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6
OkFycmF5QnVmZmVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0F0b21pY3NPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRv
bWljc09iamVjdC5jcHAKaW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAs
OCArMTIwLDcgQEAgc3RhdGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXgg
PSBhY2Nlc3NJbmRleFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAg
IEFTU0VSVCh0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KElOVF9NQVgpKTsKKwogICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVu
Z3RoKCkpIHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJB
Y2Nlc3MgaW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcApp
bmRleCBkY2MyZjUwNjRhZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLURhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRh
dGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBz
aXplX3QgYnl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciks
IGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6
OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVu
Z3RoKCk7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2
YjRiYjIxNDQuLjM0MDI2NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0
YVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVm
PERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBl
ZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqKSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0
KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCisgICAgVCBnZXQoc2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0
YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAg
ICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBU
IHJlYWQodW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9
IG51bGxwdHIpCisgICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwg
Ym9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+
dGVtcGxhdGUgZ2V0PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBp
ZiAoIXN0YXR1cyB8fCAqc3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zm
c2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikK
KyAgICB2b2lkIHNldChzaXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwg
Ym9vbCogc3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAg
ICAgICAgICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgz
LDcgKzgzLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpOworICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZz
ZXQsIHNpemVfdCBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aAppbmRleCBiZTdlNmMwNTM0ZmEuLjViZTgxNjVmNzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMz
LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNz
IEdlbmVyaWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3Jl
YXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxl
bmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25z
dCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3Rh
dGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0
YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHNpemVfdCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFz
ZUFkZHJlc3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQorICAg
IGJvb2wgc2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90
IGNvdW50LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldFJhbmdlSW1w
bCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLApAQCAt
NTgsMzkgKzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgemVyb1JhbmdlKHVu
c2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wgemVyb1JhbmdlKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBjb3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBs
KG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwgY291bnQgKiBzaXplb2Yo
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHplcm9GaWxs
KCkgeyB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChp
c0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVM
ZW5ndGgoKSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAg
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3Ro
KCkpOwogICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChz
aXplX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAg
ICBkYXRhKClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAg
ICB9CiAKLSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAg
ICAgZGF0YSgpW2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQp
CisgICAgYm9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3Qg
Y291bnQsIHNpemVfdCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UmFuZ2VJbXBs
KAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBAIC05OCwxOCAr
OTgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWdu
ZWQgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0luYm91bmREYXRh
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBs
ZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAg
ICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9m
ZnNldCk7CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGNv
dW50LCB0aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAg
ICAKICAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAg
ICAgIHJldHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVibGlj
OgogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVf
dCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uZjFhNzZkZmQzYmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFy
cmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAg
ICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgg
KiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGgg
LyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVu
Z3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5z
aWcKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisg
ICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7
CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZz
ZXQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92
ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CkBAIC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KQorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1
ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXks
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJh
eSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBy
ZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2
LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyAr
MTAxLDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQor
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxl
bmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKTsKQEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5
Q3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1H
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVP
ZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5n
dGgpOwotICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwot
ICAgIEFTU0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRv
cjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICBy
ZXR1cm4gdHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjNk
OGU0NzQ1MDY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNB
cnJheUJ1ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1cmUo
c3RydWN0dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6
Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXpl
LAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHVuc2ln
bmVkIGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9z
dHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwx
OCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEg
dHlwZWQgYXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWRTaXpl
IHNpemUgPSBsZW5ndGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZS5o
YXNPdmVyZmxvd2VkKCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKICAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5n
dGgpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBW
ZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSks
IGxlbmd0aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxv
YyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwogICAgIGlmICgh
bV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkKICAg
ICAgICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJlcG9y
dEV4dHJhTWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1l
bnRTaXplKTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFs
dWUoKSk7CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0g
T3ZlcnNpemVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3
OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVm
ZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlC
dWZmZXIsCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRB
cnJheSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9u
Q29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0
cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0
cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01v
ZGUpCkBAIC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXpl
KEpTVHlwZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJh
eVR5cGVdOwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNv
bnN0CitzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lm
IEFTU0VSVF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOwor
ICAgIHJlc3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFs
dWUoKTsKKyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBj
aGVja2VkIGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5
IGNoZWNrIHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBl
bGVtZW50U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVm
ZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJy
YXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+
Ynl0ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgp
OwogCiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBA
IC0zMTUsOCArMzIyLDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZp
ZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3Np
Ymx5U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQg
PSB0aGlzLT5ieXRlT2Zmc2V0KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgp
OwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNh
c2UgdHlwZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uMTRmYTViYmE1YTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBm
YXN0U2l6ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmYXN0U2l6
ZUxpbWl0ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2ln
YWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQq
IG51bGxWZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6
ZU9mKHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIHNp
emVfdCBzaXplT2Yoc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewot
ICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXpl
ICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVu
Z3RoOworICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCArPSBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgp
ICYgfihzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGljIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBAIC0x
MzYsMjUgKzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIElu
aXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAgICAK
LSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVj
dHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0
aW9uTW9kZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0
aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1l
bnRTaXplLCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAg
ICAvLyBUaGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQn
cyB1c2VkIGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBD
b25zdHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rv
cik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250
ZXh0KAogICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
Ci0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
ICAgICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgICAgICAKICAg
ICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVjdGlv
bkNvbnRleHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
Ci0gICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFW
aWV3VGFnKTsKKyAgICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBE
YXRhVmlld1RhZyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFtX3N0cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0g
ICAgICAgIHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAg
ICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBU
eXBlZEFycmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1
dHRlcmZseSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAg
ICAgCkBAIC0xNjIsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1f
c3RydWN0dXJlOwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVj
dG9yOwotICAgICAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3Ro
OwogICAgICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9i
dXR0ZXJmbHk7CiAgICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB2b2lk
KiB2ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkp
OyB9CiAgICAgdm9pZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3ZlY3Rvci5nZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRl
T2Zmc2V0KCk7Ci0gICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRD
b25jdXJyZW50bHkoKTsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVPZmZzZXQoKTsKKyAgICBpbmxp
bmUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAg
ICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9y
UHRyIG1fdmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0
aDsKICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4
IDFkMDcyYjcxYWNiNy4uZDg1YjMyODMwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTksNyAr
OTksNyBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldElt
cGwoKQogICAgIHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90
Kj4odmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
YnVmZmVyLT5kYXRhKCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRlbHRhKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihk
ZWx0YSk7CiAgICAgaWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAgLTEx
MCwxNCArMTEwLDE0IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRl
T2Zmc2V0SW1wbCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIEpT
QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKK2lubGluZSBzaXplX3QgSlNBcnJheUJ1ZmZl
clZpZXc6OmJ5dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9y
LCB1bnNpZ25lZD4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgc2l6ZV90
PigpOwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZp
ZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0
dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+PigpOworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAwODY3ZGNiZWFk
ODEuLmU4YTRlN2E2MjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25tb3ZhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtMjk4LDYgKzI5OSw3IEBAIHB1Ymxp
YzoKICAgICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50
MzJfdCB0b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvSW5k
ZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OworICAgIHNp
emVfdCB0b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVycm9y
TmFtZSkgY29uc3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaAppbmRleCBmN2E5ZTcwZWQ2ZTAuLjhmNWMwNzE5ODg2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwx
NCArNjksNDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1h
a2VTdHJpbmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkgeworCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIo
KTsKKworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9y
TmFtZSwgIiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGluZSBz
aXplX3QgSlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdldFZN
KGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1
cm4gYXNJbnQzMigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMy
KGQpKTsKKworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJSQVlfQlVGRkVS
X1NJWkUpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28g
bGFyZ2UiKSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBBbGwgb2YgdGhp
cyBtb25zdHJvc2l0eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0IG9uIDE8PDMy
LgorICAgIHNpemVfdCBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1dE9mZnNldCA9
IDA7CisgICAgc2l6ZV90IGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCk7CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4KSkgeworICAg
ICAgICBvdXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZzZXQgPSBpbnQz
Mk1heDsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRwdXRPZmZzZXQg
KyBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0M6OnRvSW50MzIo
ZCAtIGlucHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3Nl
Yy10b2ludGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcg
QEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNv
bnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3Jl
YXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBi
eXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNE
YXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHVuc2lnbmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wg
SlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVf
dCwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9i
amVjdCosIHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5hNWU3OGM0NjliMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYsMTQgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBj
cmVhdGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAg
ICAgLy8gRHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJl
IGp1c3QgaW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6
YXRpb24gd2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmlu
aXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0
SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpT
RGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9i
YWxPYmplY3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAg
ICBib29sIHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAK
ICAgICBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCmluZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEz
NiwxMSArMTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2Vp
dmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAg
IHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xv
YmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAg
ICBib29sIGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0g
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAx
ICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5k
aWFuID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZp
ZXctPmlzRGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQg
ZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXct
Pmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwog
ICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5n
dGggLSBlbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsx
ODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBE
YXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25l
ZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVj
dCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNp
Z25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3
ICsxOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFs
c2U7Ci0gICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPj0gMykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWlu
ZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAg
IHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5
dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0
ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBi
b3VuZHMgYWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi5lYTFl
ZjljMTNmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRv
TmF0aXZlRnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgQ2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0
cnVjdHVyZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8v
IGZyb20gSlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwK
Ky8vICAgICBzaXplX3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBm
aWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6
IE1ha2UKKy8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdp
ZHRoIHdvcmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIg
aXMgdXN1YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxv
dyIgZGF0YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0
aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBl
bmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0
eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5
dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogdHlwZWRWZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3Io
KSk7CiAgICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJv
b2wgaW5Cb3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1f
bGVuZ3RoOwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNo
IGluZGV4ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0g
aGVuY2UgdGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2Fu
Q29udmVydFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1
bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlj
a2x5KHNpemVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IGkgPCBtX2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRU
b0pTUXVpY2tseTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJ
bmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0
eXBlZFZlY3RvcigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2ts
eSh1bnNpZ25lZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBp
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRy
LCBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNp
emVfdCBpLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2
YWx1ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldElu
ZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFs
dWUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRl
eChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVt
ZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9y
PihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRh
cHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRv
cj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9u
KEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50
VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNW
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2Vy
Y2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsK
QEAgLTE5OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJv
b2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KQorICAgIGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAg
ICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNr
IG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAg
ICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5ndGgsIG1fbGVu
Z3RoKTsKICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlm
IGl0IHJldHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUg
ZXhjZXB0aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNH
bG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVy
bnMgZmFsc2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgot
ICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCos
IHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0g
Q29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBz
aXplX3Qgb2Zmc2V0LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5n
dGgsIENvcHlUeXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRy
PHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwog
ICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwo
KTsKQEAgLTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBz
dWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNp
ZmljVHlwZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmpl
Y3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCosIHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRv
cj4qLAorICAgICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlw
ZSk7CiAKICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQg
VHlwZWQgQXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8K
QEAgLTM0OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAg
IHsKICAgICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVy
aWZ5TmFOKGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uMzM2ZjFhZWUzZjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0Myw3
ICsxNDMsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlCdWZm
ZXJJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaWV3Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNl
dCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJz
dEFyZ3VtZW50LCBzaXplX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoT3B0
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFs
T2JqZWN0KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAg
ICAgICAgIGlmIChsZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFs
dWUoKTsKICAgICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG8KICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQg
YXJyYXkgb2YgdGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAo
SlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1
ZSkpIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICBzaXplX3QgbGVuZ3RoOwog
ICAgICAgICBKU0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAg
IGlmIChpc1R5cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdl
VHlwZSkpIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0
VmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBzaXplX3QgbGVuZ3Ro
ID0gZmlyc3RWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBsZW5ndGgpKTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3Qq
CiAgICAgfQogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsK
KyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291
bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MSkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBA
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW1wbChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFs
dWUgaXMgcHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAg
ICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
Mik7CiAgICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAg
ICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmll
d0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5n
dGgiIDogImxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRv
VHlwZWRBcnJheUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFn
ZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4
IDQ1MDIzODc5MmQxMC4uYTNkZGMxZjgzNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmgi
CiAjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBA
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dygKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1
LDcgKzY2LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZv
aWQqIHZlY3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3Ry
dWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlV2l0aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFs
aXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksMTcgKzEwMCwxNyBA
QCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVfdCBzaXplID0g
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKLSAg
ICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoLCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJp
ZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIGVsZW1lbnRTaXpl
KSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkpIHsKKyAgICBp
ZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0
LCBlbGVtZW50U2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJCeXRlIG9mZnNldCBpcyBub3Qg
YWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTQ1LDcgKzE0
Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDgg
QEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgK
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0
b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lm
aWNUeXBlKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNl
dCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5z
aWduZWQgb3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQs
IHNpemVfdCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTIxOCw3ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
ZXRXaXRoU3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVy
LT5leGlzdGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1l
bnRTaXplICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9
PSBDb3B5VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAg
ICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88
QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05h
dGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAg
ICAgLy8gTm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRv
IGNvdmVyICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRv
TmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0
ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5n
ZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwx
MSArMjM5LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdp
dGhTcGVjaWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlh
dGUgdHJhbnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0t
OykgewogICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUg
Y29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFz
TmF0aXZlVmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQg
aSA9IGxlbmd0aDsgaS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAg
ICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVm
ZmVyW2ldKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUo
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5z
aWduZWQgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zm
c2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAg
IGlmIChjaS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewot
ICAgICAgICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ug
d2UncmUgdGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2Ug
Y2FuIGp1c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqPihvYmplY3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5s
ZW5ndGgoKSk7CiAgICAgICAgIApAQCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBl
dmVyIGNhbGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZzZXQp
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKSkpOwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdo
dCBub3csIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxP
YmplY3QsIGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1
ZSk7CiAgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAh
c3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBi
NjNiNjhhMjViNDUuLjE5ODYzOTBkOGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rp
b24oSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQ
cm9maWxlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50
ZXJuYWxGdW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykK
ICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlm
IChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAg
IHNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0
cnlTZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+
cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsK
LSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0
OworICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJy
YXlQcm9maWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhR
dWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QK
KworICAgIC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdl
dEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51
bGxwdHIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9
IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNh
bkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5k
ZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAg
ICAgCi0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1
ZSkKKyAgICB2b2lkIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShW
TSYsIHVuc2lnbmVkLCBKU1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRl
IHN1Y2Nlc3MKKyAgICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQg
dGhlIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRy
eVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJv
ZmlsZSopOworICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwg
SlNWYWx1ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewog
ICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAg
ICBzd2l0Y2ggKGluZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVY
SU5HX1RZUEVTOgotICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkoaSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZv
clR5cGVkQXJyYXkoaSwgdiwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJ
REVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBj
YXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExf
V1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJM
RV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9J
TlQzMl9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoIXYuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3Vi
bGVPckNvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhS
T1VHSDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lO
REVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRl
cmZseS0+Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7
CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZ
UEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJl
cigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVy
Zm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsK
KyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZl
cnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
dXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAg
ICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAg
ICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToK
ICAgICAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4g
aSA8IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0
ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwg
aSwgdik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdl
KCktPnZlY3Rvckxlbmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5
U3RvcmFnZSgpLT5tX3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlm
IChpc0NvcHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1
dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFy
cmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0
SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAg
ICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggOGZmYzVmOTM4
MjJmLi43NjBhOWE5ZTJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0SW5saW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAog
ICAgIH0KIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVl
IEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0j
ZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFy
cmF5VHlwZSA6XAotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJy
YXkgKj4odGhpcyktPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9F
QUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZ
X1RZUEUpCi0jdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgIGlmIChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBh
cnJheVByb2ZpbGUpCisgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJy
YXkoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7CisjZW5kaWYKIAot
aW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5z
aWduZWQgaSkgY29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZ
UEVEX0FSUkFZX1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApA
QCAtNTEyLDcgKzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5
Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47
CiAgICAgfQogfQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5
Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2
KQoreworICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJh
eVN0b3JhZ2UoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3Zl
Y3RvcltpXTsKKyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMs
IHYpOworICAgIGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZl
Y3RvcjsKKyAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBz
dG9yYWdlLT5zZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2
LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgewor
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxF
KGksIGFycmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAgIGlmICgoaSA+IEFycmF5UHJvZmlsZTo6
c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAgICAgICAg
ICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUg
KGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9m
aWxlKSBkbyB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTtcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwK
KyAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBcCisgICAgICAgIGF1dG8qIHR5cGVkQXJy
YXkgPSBqc0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICgh
dHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisg
ICAgICAgIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICBy
ZXR1cm4gdHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVE
SU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9B
UlJBWV9UWVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFs
aWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5
OCw4ICs4OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aElu
ZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5p
c09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsK
LSAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgp
KTsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNr
bHkoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgIH0KIAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5H
ZXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50
LmgKaW5kZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKICNpbmNsdWRlIDxs
aW1pdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0
ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FS
UkFZX0JVRkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAg
ICB1aW50MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdjZDU5NmY4NzJlYy4uMjBhNjgwZmM0
MjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtOCw2ICs4LDIxIEBACiAgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWw6CiAgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaDoKIAorMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84
MTYwMzQ0NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAg
TWFkZSBzb21lIG9mIENoZWNrZWRBcml0aG1ldGljIGNvbnN0ZXhwciwgYW5kIGFkZGVkIGlzU3Vt
U21hbGxlclRoYW5PckVxdWFsIHNpbmNlIGl0IGlzIGEgY29tbW9ubHkgdXNlZCB0ZXN0IGluIEFy
cmF5QnVmZmVyIGFuZCBlYXN5IHRvIGdldCB3cm9uZyBpbiB0ZXJtcyBvZiBvdmVyZmxvdy4KKwor
ICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjppc0luQm91
bmRzKToKKyAgICAgICAgKFdURjo6Y29udmVydFNhZmVseSk6CisgICAgICAgIChXVEY6OmlzU3Vt
U21hbGxlclRoYW5PckVxdWFsKToKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9y
aXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVz
IHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXpl
b2YoVGFyZ2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3Vu
ZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhw
ciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5l
c3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNp
c2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252
ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUg
JiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3
ICsxNTksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQs
IFNvdXJjZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMo
U291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWdu
ZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdh
dGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRh
cmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3Qg
Qm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVy
IHByZWNpc2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwg
d2lkZW4uCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6
bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBl
bmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBm
YWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3Rh
dGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNh
bWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBp
bkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJj
ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lv
bi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZh
bHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAv
LyBUYXJnZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3Ry
aWN0bHkgZ3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFy
Z2V0KSA+IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0
cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRp
YyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAv
LyBUYXJnZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0
dXJuIHZhbHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFs
dWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBp
bmxpbmUgY29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0
dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGlu
ZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25z
dGV4cHIgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7
CiAgICAgaWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4u
IEFyZ3M+IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNo
ZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3Vu
ZCkKK3sKKyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSAr
PSBiOworICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBi
b3VuZDsKK30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMg
KzEwMjQsNCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6Omlz
SW5Cb3VuZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92
ZXJmbG93czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1V
c2UuaAppbmRleCA5YzlmODBlM2ZkMWIuLjY0NmU5YmVhNThlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5o
CkBAIC0xNDEsNiArMTQxLDE1IEBACiAjZGVmaW5lIFVTRV9KU1ZBTFVFMzJfNjQgMQogI2VuZGlm
CiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBpbnN0ZWFkIGJlIGJhc2VkIG9uIFNJWkVfTUFYID09
IFVJTlQ2NF9NQVgKKy8vIEJ1dCB0aGlzIHJlcXVpcmVzIGluY2x1ZGluZyA8Y3N0ZGludD4gYW5k
IFBsYXRmb3JtLmggaXMgaW5jbHVkZWQgaW4gYWxsIGtpbmQgb2Ygd2VpcmQgcGxhY2VzLCBpbmNs
dWRpbmcgbm9uLWNwcCBmaWxlcworLy8gQW5kIGluIHByYWN0aWNlIENQVShBRERSRVNTNjQpIGlz
IGVxdWl2YWxlbnQgb24gYWxsIHBsYXRmb3JtcyB3ZSBzdXBwb3J0ICh2ZXJpZmllZCBieSBzdGF0
aWNfYXNzZXJ0cyBpbiBBcnJheUJ1ZmZlci5oKQorI2lmIENQVShBRERSRVNTNjQpCisjZGVmaW5l
IFVTRV9MQVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVE
X0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAvKiBGSVhNRTogRW5hYmxl
IEJJR0lOVDMyIG9wdGltaXphdGlvbiBhZ2FpbiBhZnRlciB3ZSBlbnN1cmUgU3BlZWRvbWV0ZXIy
IGFuZCBKZXRTdHJlYW0yIHJlZ3Jlc3Npb25zIGFyZSBmaXhlZC4gKi8KIC8qIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ3NzcgKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZmFh
ZGM3YTNjN2YuLmFiYWUzYzAzZmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMTU1LDYgKzE1NSw0NiBAQAog
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHA6CiAgICAgICAgIChXZWJD
b3JlOjpidWlsZFVzZXJBZ2VudFN0cmluZyk6CiAKKzIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0
ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0
byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
OTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1
a2UgU3V6dWtpLgorCisgICAgICAgIFNvbWUgcGFydHMgb2YgV2ViQ29yZSB1c2UgVHlwZWRBcnJh
eXMsIGFuZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBtYWRlIHRoZSBsZW5ndGgoKSBmdW5jdGlv
biBvbiB0eXBlZCBhcnJheXMgcmV0dXJuIFVDUFVSZWdpc3RlciBpbnN0ZWFkIG9mIHVpbnQzMl90
LgorICAgICAgICBNb3N0IGZpeGVzIHdlcmUgdHJpdmlhbCwgdGhlIG9ubHkgZXhjZXB0aW9uIGlz
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAsIHdoZXJlIEkgaGFkIHRvIGluY3JlbWVudCB0aGUg
dmVyc2lvbiBudW1iZXIsIGFzIEFycmF5QnVmZmVyIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgbm93
IHdyaXRlL3JlYWQgdGhlaXIgbGVuZ3RoIGluIGEgNjQtYml0IGZpZWxkIChhbmQgc2FtZSBmb3Ig
dGhlIGJ5dGVPZmZzZXQgb2YgQXJyYXlCdWZmZXJWaWV3KS4KKworICAgICAgICBJIGFsc28gaGFk
IHRvIGFkZCBhIHRlc3QgaW4gUGl4ZWxCdWZmZXIuY3BwIHRoYXQgdGhlIHNpemUgb2YgdGhlIEFy
cmF5QnVmZmVyIGl0IHdpbGwgdHJ5IHRvIGFsbG9jYXRlIGlzIDwgSU5UMzJfTUFYLgorICAgICAg
ICBPdGhlcndpc2UsIHRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNp
ZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2VkYXRhLW92ZXJmbG93Lmh0bWwgd2hpY2ggY2hl
Y2tzIHRoYXQgdmVyeSBsYXJnZSBpbWFnZXMgYXJlIHByb3Blcmx5IHJlamVjdGVkIHdpdGhvdXQg
Y3Jhc2hpbmcsIHdvdWxkIHRpbWVvdXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUg
Y29kZSBpcyBhbHJlYWR5IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFu
ZCBJIGltcGxlbWVudGVkIG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNv
cHlGcm9tQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hh
bm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFp
bkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVE
b21haW5EYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJW
aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEltYWdlQml0bWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlckltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmll
d0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1
ZmZlclZpZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorICAg
ICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisKIDIwMjEtMTAt
MTUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZl
cnQgcjI4NDIzMCwgbXkgbGFzdCBmaXhlcyB0byB0aGUgd2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVh
ayB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
LmNwcAppbmRleCBjYjdlODRkNDUzODMuLmIxOGQ4ZmQ2YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9h
dDMyQXJyYXk+JiYgZGVzdGluYXRpb24sCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVu
Z3RoKQogICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0
YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3QgY291bnQgPSBkYXRhTGVuZ3RoIC0g
YnVmZmVyT2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVu
Z3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEt
PmRhdGEoKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZl
cjo6Y29weVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJjZSwgdW5zaWduZQogICAg
IGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAg
c2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0
ZDo6bWluKHNvdXJjZS5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZs
b2F0KiBzcmMgPSBzb3VyY2UtPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uZDUz
YjllNjQ0ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Jl
YWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTE5Niw4ICsxOTYsOSBAQCB2b2lkIFJlYWx0aW1lQW5h
bHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkp
CiAgICAgZG9GRlRBbmFseXNpc0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBm
cm9tIGxpbmVhciBtYWduaXR1ZGUgdG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNp
Z25lZCBzb3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90
IGxlbmd0aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgo
KSk7CisgICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsK
KyAgICBzaXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgp
OworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9u
TGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUgcmFu
Z2VTY2FsZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAxIC8g
KG1fbWF4RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91YmxlIG1p
bkRlY2liZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjgsOSBAQCB2b2lkIFJlYWx0
aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0aW5h
dGlvbkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgdW5z
aWduZWQgZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3Rk
OjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRl
c3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3Qg
ZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4o
ZmZ0U2l6ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAg
ICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1
dEJ1ZmZlclNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBB
U1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Myw5IEBAIHZvaWQgUmVhbHRp
bWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9u
QXJyYXkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVkIGZm
dFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZm
dFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlv
bkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUg
PSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUs
IGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29s
IGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJT
aXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlz
SW5wdXRCdWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uMTgyMjFlMzVhYTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9X
YXNtTW9kdWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAjaW5j
bHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Miw4ICszNDMsOSBAQCBzdGF0aWMgdW5z
aWduZWQgY291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVyc2lv
biA3LiBhZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAq
IFZlcnNpb24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRy
aWJ1dGUuCiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlQml0bWFwIGNvbG9y
IHNwYWNlLgorICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVuZ3RoIChhbmQgb2Zmc2V0cykg
b2YgQXJyYXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgZnJvbSAzMiB0byA2NCBiaXRz
CiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSAxMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBUZXJtaW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJp
bmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb25JbmRleFBy
b3BlcnRpZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMzk5LDcgKzQwMSw3IEBAIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IE9i
amVjdFJlZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6dWlu
dDMyX3Q+CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBB
cnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3RoOnVp
bnQzMl90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5QnVm
ZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0X3Q+IDxi
eXRlTGVuZ3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCiAgKiAg
ICB8IENyeXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRl
e3dyYXBwZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0CkBA
IC00NjMsNyArNDY1LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRG
bGFnID0gMHg4MDAwMDAwMDsKICAqICAgIE9iamVjdFJlZmVyZW5jZVRhZyA8b3BJbmRleDpJbmRl
eFR5cGU+CiAgKgogICogQXJyYXlCdWZmZXIgOi0KLSAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5n
dGg6dWludDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRh
ZyA8bGVuZ3RoOnVpbnQ2NF90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgogICogICAgQXJyYXlC
dWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICBTaGFyZWRBcnJheUJ1ZmZl
clRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAtOTk4LDggKzEwMDAsMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiBhcnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXJWaWV3KHZt
LCBvYmopOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJW
aWV3LT5ieXRlT2Zmc2V0KCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVP
ZmZzZXQgPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKTsKKyAgICAgICAgd3JpdGUoYnl0
ZU9mZnNldCk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlclZpZXct
PmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CiAgICAgICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXctPnBvc3NpYmx5U2hh
cmVkQnVmZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgICAgIGNv
ZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwpAQCAtMTEzMSw4
ICsxMTM1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGRvdWJsZT4o
YnVmZmVyLT5yZXNvbHV0aW9uU2NhbGUoKSkpOwogICAgICAgICB3cml0ZShidWZmZXItPmNvbG9y
U3BhY2UoKSk7CiAKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
KyAgICAgICAgQ2hlY2tlZFVpbnQzMiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKTsKKyAgICAgICAgaWYgKGJ5dGVMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAg
ICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsK
KyAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBieXRlTGVuZ3RoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
U19JTl9XT1JLRVJTKQpAQCAtMTI2Myw4ICsxMjcyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgd3JpdGUoSW1hZ2VEYXRhVGFnKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53
aWR0aCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWlnaHQoKSk7Ci0gICAgICAg
ICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3
cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOworICAgICAg
ICAgICAgICAgIENoZWNrZWRVaW50MzIgZGF0YUxlbmd0aCA9IGRhdGEtPmRhdGEoKS5sZW5ndGgo
KTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xv
bmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAg
IHdyaXRlKGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAg
IHdyaXRlKGRhdGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9CkBAIC0xMzExLDggKzEzMjUsOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1
ZmZlclRhZyk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFy
cmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
ICAgICAgICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVM
ZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpAQCAt
MTUwMiw3ICsxNTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4obV9i
dWZmZXIsIGkpOwogICAgIH0KIAotICAgIHZvaWQgd3JpdGUodW5zaWduZWQgbG9uZyBsb25nIGkp
CisgICAgdm9pZCB3cml0ZSh1aW50NjRfdCBpKQogICAgIHsKICAgICAgICAgd3JpdGVMaXR0bGVF
bmRpYW4obV9idWZmZXIsIGkpOwogICAgIH0KQEAgLTIzOTEsNyArMjQwNiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZCh1bnNpZ25lZCBs
b25nIGxvbmcmIGkpCisgICAgYm9vbCByZWFkKHVpbnQ2NF90JiBpKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oaSk7CiAgICAgfQpAQCAtMjU1NSw5ICsyNTcwLDEwIEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFy
cmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIExlbmd0aFR5cGU+CisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXJJbXBsKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQogICAgIHsKLSAgICAgICAgdWludDMyX3QgbGVu
Z3RoOworICAgICAgICBMZW5ndGhUeXBlIGxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGxlbmd0
aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChtX3B0ciArIGxlbmd0
aCA+IG1fZW5kKQpAQCAtMjU2OSwxNSArMjU4NSwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBK
U1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVmUHRy
PEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9u
IDwgMTApCisgICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJfdD4o
YXJyYXlCdWZmZXIpOworICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50NjRf
dD4oYXJyYXlCdWZmZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZW5ndGhU
eXBlPgorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlld0ltcGwoVk0mIHZtLCBKU1ZhbHVlJiBh
cnJheUJ1ZmZlclZpZXcpCiAgICAgewogICAgICAgICBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgYXJy
YXlCdWZmZXJWaWV3U3VidGFnOwogICAgICAgICBpZiAoIXJlYWRBcnJheUJ1ZmZlclZpZXdTdWJ0
YWcoYXJyYXlCdWZmZXJWaWV3U3VidGFnKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgdWludDMyX3QgYnl0ZU9mZnNldDsKKyAgICAgICAgTGVuZ3RoVHlwZSBieXRlT2Zmc2V0
OwogICAgICAgICBpZiAoIXJlYWQoYnl0ZU9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5dGVMZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgYnl0
ZUxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGJ5dGVMZW5ndGgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJPYmogPSBhc09iamVjdChy
ZWFkVGVybWluYWwoKSk7CkBAIC0yNTg3LDcgKzI2MTEsNyBAQCBwcml2YXRlOgogICAgICAgICB1
bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHR5cGVkQXJyYXlFbGVtZW50U2l6ZShhcnJheUJ1ZmZlclZp
ZXdTdWJ0YWcpOwogICAgICAgICBpZiAoIWVsZW1lbnRTaXplKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNp
emU7CisgICAgICAgIExlbmd0aFR5cGUgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXpl
OwogICAgICAgICBpZiAobGVuZ3RoICogZWxlbWVudFNpemUgIT0gYnl0ZUxlbmd0aCkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjYzNCw2ICsyNjU4LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBK
U1ZhbHVlJiBhcnJheUJ1ZmZlclZpZXcpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwg
MTApCisgICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDMyX3Q+
KHZtLCBhcnJheUJ1ZmZlclZpZXcpOworICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmll
d0ltcGw8dWludDY0X3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOworICAgIH0KKwogICAgIGJvb2wg
cmVhZChWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXN1
bHQuaXNFbXB0eSgpKTsKQEAgLTMzNDUsNyArMzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1
dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogICAgICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyOwogCi0gICAgICAgIGlmICghcmVhZChzZXJp
YWxpemF0aW9uU3RhdGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNhbEhl
aWdodCkgfHwgIXJlYWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAhcmVh
ZChjb2xvclNwYWNlKSkgfHwgIXJlYWRBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikpIHsKKyAgICAg
ICAgaWYgKCFyZWFkKHNlcmlhbGl6YXRpb25TdGF0ZSkgfHwgIXJlYWQobG9naWNhbFdpZHRoKSB8
fCAhcmVhZChsb2dpY2FsSGVpZ2h0KSB8fCAhcmVhZChyZXNvbHV0aW9uU2NhbGUpIHx8IChtX3Zl
cnNpb24gPiA4ICYmICFyZWFkKGNvbG9yU3BhY2UpKSB8fCAhcmVhZEFycmF5QnVmZmVySW1wbDx1
aW50MzJfdD4oYXJyYXlCdWZmZXIpKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZiNzU3YTRkNzRmNi4uN2U0
OWE5ZTczMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBpZiAoaGFzQXJyYXkp
IHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9hcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXktPnNpemUoKSk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byAmYXJyYXlC
dWZmZXJDb250ZW50cyA6ICptX2FycmF5QnVmZmVyQ29udGVudHNBcnJheSkgewotICAgICAgICAg
ICAgZW5jb2RlciA8PCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CisgICAgICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheUJ1ZmZlckNvbnRlbnRz
LnNpemVJbkJ5dGVzKCkpOwogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyQ29udGVudHMuZGF0YSgp
KSwgYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpLCAxKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTE5OSw5ICsxOTksMTIgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAgICAgICBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNB
cnJheT4oKTsKICAgICAgICAgd2hpbGUgKGFycmF5TGVuZ3RoLS0pIHsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGJ1ZmZlclNpemU7CisgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplOwogICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRCdWZmZXJT
aXplID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGlmIChjaGVja2VkQnVmZmVyU2l6ZS5oYXNP
dmVyZmxvd2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50
OF90PihidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAt
MjEyLDcgKzIxNSw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgICAgICAgICAgR2ln
YWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVmZmVyKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFycmF5QnVmZmVy
Q29udGVudHNBcnJheS0+YXBwZW5kKHsgYnVmZmVyLCBidWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6
cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgY2hlY2tlZEJ1ZmZlclNpemUsIEFycmF5
QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSB9KTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXgg
YTY2YjE5MWQ2ODZkLi41NTllYmNjNDhjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNjgsNyArNjgsOSBAQCB2b2lkIE5ldHdvcmtTZW5kUXVl
dWU6OmVucXVldWUoV2ViQ29yZTo6QmxvYiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9
IGJsb2Iuc2l6ZSgpOwogICAgIGlmICghYnl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSgwVSwgMSksIDAsIDApOworICAgICAgICAvLyBUaGUgY2Fz
dCBsb29rcyB3ZWlyZCwgYnV0IGlzIHJlcXVpcmVkIGZvciB0aGUgb3ZlcmxvYWRpbmcgcmVzb2x1
dGlvbiB0byBzdWNjZWVkLgorICAgICAgICAvLyBXaXRob3V0IGl0LCB0aGVyZSBpcyBhbiBhbWJp
Z3VpdHkgd2hlcmUgQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVf
dCBieXRlTGVuZ3RoKSBjb3VsZCBiZSBjYWxsZWQgaW5zdGVhZC4KKyAgICAgICAgZW5xdWV1ZShK
U0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8c2l6ZV90PigwVSksIDEpLCAwLCAw
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5p
cXVlUmVmPEJsb2JMb2FkZXI+KFt0aGlzXShCbG9iTG9hZGVyJikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4IDI1YmZmMTUzZDEy
Yy4uNzU0M2Y0NzVhMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QaXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03NCw2ICs3NCw4IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZv
cm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXpl
KTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBp
eGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZm
ZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5k
ZXggODcwYmRjODBmMzU1Li5kODNlNGE0MDQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZElu
dEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC02Myw3ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgY2hlY2tlZFJl
YWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQsIEVuZGlhbm5lc3Mg
ZW5kaWFubmVzcykKICAgICB7CiAgICAgICAgIGJvb2wgcmVhZFN0YXR1cyA9IGZhbHNlOwotICAg
ICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KG9mZnNldCwgZW5kaWFubmVzcyA9
PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgc2l6ZV90IGFjdHVhbE9mZnNl
dCA9IG9mZnNldDsKKyAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihhY3R1
YWxPZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dWludDMyX3Q+KGFjdHVhbE9mZnNldCkpOwor
ICAgICAgICBvZmZzZXQgPSBhY3R1YWxPZmZzZXQ7CiAgICAgICAgIGlmICghcmVhZFN0YXR1cykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>
<flag name="commit-queue"
          id="465690"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441435</attachid>
            <date>2021-10-15 15:09:01 -0700</date>
            <delta_ts>2021-10-16 13:40:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>273566</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjI2MmNkYTM4M2Q1Li5lYzZiYjNjMWQ4NTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
NSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFr
IHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxseS1v
b2IuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1MzliNTBkMmU1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQorewor
ICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7Citm
dW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4
XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVl
OworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICog
MTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdl
dEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAg
ICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9m
IHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwor
ICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAg
ICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisg
ICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2Yt
Ym91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNz
L3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIu
anMKaW5kZXggNzdkNTBjMzUwYjQ2Li5lZDBlN2FmMDkxM2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JV
RkZFUl9TSVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVx
dWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2
LDEzIEBAIGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewog
ICAgIHZhciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRk
TWVtb3J5KDMyNzY4KTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KCgyKioxNikgKyAxKTsKICAgICBt
b2R1bGUuaW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwog
fQogCi1pZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikgeworaWYg
KGV4Y2VwdGlvbiAhPSAiQ29tcGlsZUVycm9yOiBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDE1OiBNZW1vcnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgNjU1MzcgaXMg
aW52YWxpZCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0aGlzLnRvQnVmZmVy
KCkpJykiKSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1t
b3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMK
aW5kZXggYmE2MmQ5MTQ3NmFhLi4wMWYwNmQyZjQ5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2
YXIgZXhjZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0
aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXI7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMDEsIG1heGltdW06IDB4MTAwMDEgfSkuYnVmZmVy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24g
IT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQotICAgIHRocm93ICJGQUlMRUQiOworaWYg
KGV4Y2VwdGlvbiAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCisgICAgdGhyb3cgIkZBSUxFRCwgZXhjZXB0aW9uIHdh
czogIiArIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDEzYWFkNjZjNTEuLjQ1OWZiOTNiNzk1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtNzAsNiArNzAsMjIgQEAKICAgICAgICAgKiBmYXN0L2lubGluZS93b3JkYnJlYWstYXQt
aW5saW5lLWJveC1ib3VuZGFyeS1leHBlY3RlZC5odG1sOiBBZGRlZC4KICAgICAgICAgKiBmYXN0
L2lubGluZS93b3JkYnJlYWstYXQtaW5saW5lLWJveC1ib3VuZGFyeS5odG1sOiBBZGRlZC4KIAor
MjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgUmViYXNlbGlu
ZWQgdGhyZWUgZm9sbG93aW5nIHRlc3RzIGFzIGRpZmZlcmVudCBvciBmZXdlciBlcnJvciBtZXNz
YWdlcyBhcHBlYXIgb24gdGhlIGNvbnNvbGUuCisgICAgICAgIEFsc28gY2hhbmdlZCBjdXJyZW50
VmVyc2lvbiBpbiBzZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGZyb20gOSB0byAxMC4KKwor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3N0b3JhZ2Uvc2VyaWFs
aXplZC1zY3JpcHQtdmFsdWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAy
MDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2Ug
aXQgYnJlYWsgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJp
YWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3Nlcmlh
bGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12
YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0
PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9
IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50
dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZm
ZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1i
dWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9C
dWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVu
Z3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2gu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxl
bmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZl
ci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVm
ZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0
aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9m
ZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5k
ZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkNzYwNDY4MTEyY2YuLmQyNDcwMTJhNzdhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8g
NEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkz
NTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0la
RSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVx
dWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2Vu
dGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZm
ZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBzaXplX3QuCisgICAgICAgIC0gVGhpcyBhbHNv
IHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5l
L0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0
aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlw
ZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3Ry
aWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFy
Z2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUg
REZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFk
IHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3Qg
YWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAg
LSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwv
RGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGlu
ZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11
bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEg
Im1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQ
cm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBp
bmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0
aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBk
YXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3Jy
ZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRp
bWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMu
CisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93
LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0
IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdl
IGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1v
cnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFz
dCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0
QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBj
dXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBl
cmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9V
SW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlz
IHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxs
cHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDAp
CisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3Vu
ZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hp
Y2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2ls
aXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0
eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBi
dXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBv
aW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFz
SW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1Q
dHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0
cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxl
bmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQ
dHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5C
bGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29k
ZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxh
cmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5
cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5s
aW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlD
bGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
R2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlv
bi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNT
dG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGls
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlw
ZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93
ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFu
ZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3Vu
ZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5
cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Z2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAg
IChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJh
eUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVj
a0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRM
T3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6
CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6
CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJ
bmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5
QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3
KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9E
YXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3
OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICog
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6
CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlH
ZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5k
ZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhp
bmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25z
Lmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dh
c21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCkBAIC0yNTQsNyArNTI2LDcgQEAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KIAogICAgICAgICBXaGlsZSBpbmNyZWFz
aW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVt
b3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKLSAgICAg
ICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2Vk
IGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BV
UmVnaXN0ZXIuCisgICAgICAgIC0gNEdCIGlzIG5vdCByZXByZXNlbnRhYmxlIGluIGEgdWludDMy
X3QsIHNvIEkgY2hhbmdlZCBhbGwgbGVuZ3RoIG9mIEFycmF5QnVmZmVyL1R5cGVkQXJyYXkvZXRj
Li4gdG8gYmVpbmcgc2l6ZV90LgogICAgICAgICAtIFRoaXMgYWxzbyByZXF1aXJlZCBjaGFuZ2lu
ZyBOZXdUeXBlZEFycmF5IGluIGFsbCBvZiBMTEludC9CYXNlbGluZS9ERkcvRlRMIHRvIGFjY2Vw
dCBhIG5vbi1pbnQzMiBzaXplLgogICAgICAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgcGVyZm9y
bWFuY2UgcmVncmVzc2lvbnMsIEkgaGFkIHRvIGFkZCBzcGVjdWxhdGlvbiBpbiB0aGUgREZHL0ZU
TCwgd2hpY2ggbm93IGhhdmUgdHdvIHZlcnNpb25zIG9mIE5ld1R5cGVkQXJyYXkgKG9uZSB0aGF0
IHRha2VzIGFuIEludDMyIGFuZCBvbmUgdGhhdCB0YWtlcyBhIFN0cmljdEludDUyKQogICAgICAg
ICAtIFNpbWlsYXJseSwgR2V0QXJyYXlMZW5ndGggYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
IG5vdyBjYW4gZWl0aGVyIHJldHVybiBhbiBJbnQzMiBvciBhIGxhcmdlciBudW1iZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdhYTBiN2JjOWFjLi45M2ViM2JmZTIwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yNjUsOSArMjY1LDkgQEAgcHVibGljOgogICAgIC8vIGlu
IGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZm
ZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3Nl
cyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGlj
IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg
VHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0yNzgsMjEgKzI3OCwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
c3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRy
KHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNp
dCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRw
dHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAg
ICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzAyLDEyICszMDIs
MTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0
cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAg
ICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTMyNSw3ICszMjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzM2LDE3ICsz
MzYsMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJ
bW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQot
ICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25z
dCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0K
KyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM1NywxNSArMzU3LDE1
IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZy
b20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMu
CiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVk
SW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAg
ICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzc2LDE3ICszNzYsMTcgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7
Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
NjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAg
ICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMK
QEAgLTEwNTMsOSArMTA1Myw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAg
IHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQg
Y2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDAxZTQ4YTExYmJiMC4uNDEzMjMwMmY4YTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBA
IC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4
Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Omxz
aGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAm
JiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwg
QWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsK
ICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMg
ZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlv
biwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUu
CisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJl
Y2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwg
ZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVt
cCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1t
NjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAg
ICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50
KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2Ny
YXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAg
Ly8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBu
b3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQor
ICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9Cisj
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCA1Zjk4ZmY5ZTMzN2MuLjg1NzQwNTVjOWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBp
bXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNv
bnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0g
MHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYg
KzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBB
ZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMjQ3MGMx
MTk2NjFiLi4wNzRhMzk4Zjg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRh
Z0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29s
IHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0
aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgp
CiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsK
KyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNo
ID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIs
IHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
aW5kZXggZTY2MTAwYmEyZTQ3Li4zZmFiYzRkODkxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAg
LTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpl
YnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgw
MGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVn
ZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMzk3OTkyYTNhNzUwLi4xMzI1MGVjNDg0
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5z
aWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVl
ZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3Rv
cmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxl
bmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIg
cmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTE4NCwxMiArMTE4NSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKLSAg
ICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxs
VGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0
eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwot
ICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90
LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVy
czo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisg
ICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRp
ZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxs
b2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkgKzEyMDMsMTMgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJl
dXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRj
aDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwot
CiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewpAQCAtMTU5NSw5ICsxNjA1LDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9
CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
Ly8gT3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3Bl
cmF0aW9uIGZ1bmN0aW9uLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRj
aEdQUikpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0g
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUg
bGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRp
bmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBh
ZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3Rh
dGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNjA1
LDkgKzE2MjAsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAg
ICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0
ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAg
ICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0
cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9h
ZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9h
ZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uMzZmZWIxNDRiYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVz
IHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0
eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBB
cnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3
aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAg
IH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7
IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVz
c09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7
IH0KQEAgLTI0NCw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9
OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNw
ZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFz
IGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFz
aWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3Jh
Z2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBp
bXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9
OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAg
ICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NCwxMyBAQCBzdGF0aWNf
YXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJh
eVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVM
YXJnZVR5cGVkQXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE0
LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5r
ZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCAyYjJmNWUwMzAxOWYuLmExY2Q2OTk0NGFiMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMzQ2Myw3ICszNDYzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7Cisg
ICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkpKSB7
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0NzEsNiArMzQ3MSwxNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlm
ICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5s
ZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzk2LDgg
KzM4MDcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKICAg
ICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5
dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVP
ZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAo
Ynl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MDYsNiArMzgxNywxOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5
KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
IHsKQEAgLTQxMDksNiArNDEzMywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjogeworICAgICAgICAvLyBT
ZWUgdGhlIENoZWNrSW5Cb3VuZHMgY2FzZSwgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlciB3aGF0
IHdlIHB1dCBoZXJlLgorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0lu
dDMyT25seSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CiAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRl
eCA2ZTI3NTMxMDRiZDMuLmEzYjkzNDBmNjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0z
MjUsNiArMzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUo
bm9kZS0+Y2hpbGQxKCksIG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBz
aG91bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDog
ewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZl
Y3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4
IDZlNGZlOWFmYTNlYi4uNzI1OGUzNzE1ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6cmVmaW5lKAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFj
dGlvbigpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgp
KQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSkKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9u
KCkpOwogICAgIAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMg
b2JqZWN0IGJlaGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYg
KzI5NCw4IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFy
cmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9u
bHkgcHJlc2VydmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBh
bmQgbm90IEdldEJ5VmFsIGFzIHdlbGwuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWwpIHsKICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMsIE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAg
IHJldHVybiB0eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3Vu
ZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGEwMjZh
YWQxODkzYi4uZGY3NWM3ODkwZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5z
cGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNp
b24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0
ZTsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNv
bnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlv
bjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJy
YXlDbGFzcywgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBAQCBwdWJs
aWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAg
ICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5
dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFy
cmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBl
LCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9u
LCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKKyAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
biwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxz
ZSkKICAgICB7CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAgdS5hc0J5
dGVzLmFycmF5Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRp
b24gPSBzcGVjdWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJz
aW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAg
ICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNs
YXNzLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikK
QEAgLTE2Myw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlv
biA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252
ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFz
Qnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJy
YXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpUeXBlPih1
LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgQXJyYXk6
OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OlNwZWN1bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpD
b252ZXJzaW9uPih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0aW9uIGFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUuYXNCeXRl
cy5hY3Rpb24pOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVuc2lnbmVk
IGFzV29yZCgpIGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzksMzUgKzE4
NSw1MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9i
c2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpB
Y3Rpb24sIGJvb2wgbWFrZVNhZmUpOwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFy
cmF5OjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVj
dWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwg
Y29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlC
ZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhBcnJh
eUNsYXNzKEFycmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdp
dGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBt
YXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBBcnJheU1v
ZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRoQXJyYXlD
bGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNsYXNzIGFy
cmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNw
ZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywg
c3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5
KTsKKyAgICB9CiAKKyAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2FmZSkKLSAg
ICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAgICAgICAg
ICByZXR1cm4gQXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5t
YXlTdG9yZVRvSG9sZShsb2NrZXIpKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5
OjpUb0hvbGU7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gQXJyYXk6OkluQm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFycmF5TW9k
ZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFBy
b2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBt
eUFycmF5Q2xhc3M7Ci0KICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAgICAgICBp
ZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZp
dHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJh
eU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0yMjEsMjMg
KzI0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6
OkFycmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5
Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5
Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlw
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9Ci0gICAg
Ci0gICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNp
b24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAgfQotICAg
IAotICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwg
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
LCBhY3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uID0g
c3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKworICAg
ICAgICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBlZEFycmF5
KGxvY2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25B
bmRNYXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBsYXJnZVR5
cGVkQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTI2LDcg
KzUzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkK
ICAgICAgICAgICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkKICAgICAg
ICAgICAgICYmIHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAgICAgICAg
ICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAgICAgICYm
IGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYmIG1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgPT0gb3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIpIGNvbnN0
CkBAIC01NzksNyArNTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlD
bGFzczsKICAgICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAgICB1aW50
OF90IGNvbnZlcnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0OworICAg
ICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOworICAgICAgICAgICAgdWludDhfdCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA6IDE7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5zaWduZWQg
YXNXb3JkOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggYzg4ZGU0YjIzOWM3Li5hMDBjODUzNzAxMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zODA3
LDggKzM4MDcsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHN0YXRpY19h
c3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRy
aW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAg
ICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIVVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIyLDI2ICszODMxLDMwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7CisgICAgICAg
IE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAg
ICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAo
KnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5
U3RvcmFnZVR5cGU7CkBAIC0zODUzLDEzICszODY2LDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0
aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRo
aXNOb2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7
CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJy
YXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJp
bnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBl
ID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uOWFkNWMy
NzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVu
dW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjM5
LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNl
IENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVl
UmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEzMzksMTEgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9m
ZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAg
ICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5
cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwg
TGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAg
ICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFy
cmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAg
ICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9u
RW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5l
IGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUzNGUuLmZhMTdiZjExNDE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjQwMjg0Y2ZhMjJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdy
aXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgor
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9p
bnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk3LDEw
ICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdD
b2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4u
NTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAg
ICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAg
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXgg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0
dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQx
NkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENs
YW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNw
ZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1Nw
ZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxh
cmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRT
aXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcx
NywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCku
cmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5
TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJy
YXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUt
PmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwor
CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiArMjIxNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBBc3Nl
cnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpA
QCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9k
ZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAgICBOb2RlKiBwcmVw
ZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1v
ZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXko
YXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwot
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAotICAg
ICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2Vs
bFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5k
ZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4uMmQ4NmViNzU3Mzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBA
IC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMg
Y2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMg
ZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRv
IHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNo
LAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmls
ZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZv
cm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBi
dXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFj
a3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKKy8vIGRldGFp
bHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRp
bmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2
YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0
CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggMmJiOWQ0YmVhODAw
Li4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVk
QXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVHlwZWRB
cnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZWRBcnJh
eUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1
MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAg
ICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggMjY5MTcxY2IzNDFkLi40
MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVh
cExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9j
LAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAgICBU
eXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVkQXJyYXlMZW5ndGhJbnQ1Mkxv
YywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9j
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjZkZWRhMDM3
ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTEzMzUsNyArMTMzNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2YWxpZGF0
ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRz
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwgbm9kZS0+
Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUtcHJvZHVjaW5nIG5vZGUuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5
NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAg
ICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5k
ZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2
LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkg
YXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZp
dCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5k
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2UgdG8gcmV0dXJuaW5nIEludDUy
IGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlkYXRpb24gZmFpbHVyZXMuICov
IFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNy
byhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8o
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hl
Y2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRo
IHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tK
U0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1
dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1MDdmMWU4MGFjMC4uOTQ1
MzUzNTZkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAg
IGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5
KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNr
bHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAog
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUs
NyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6
ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90
IHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDE0IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50cHRyX3Q+OjptYXgoKSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0
VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQ
dHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1
bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyAr
MTkwOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcg
KzE5MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Nyw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NzIsNyArMTk3Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg5LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjAwNCw3ICsyMDA1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIxLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDM2LDcgKzIwMzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTMsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIw
NjgsNyArMjA2OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJ
bnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjRmZDU3OTVkMmQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5Kikp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsx
MzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgog
ICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcApp
bmRleCBlM2EyMzlhMzNlMzAuLmQ5ZGFlM2E4MzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwyMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVk
QXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgs
IG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJh
eU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3Ro
LCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkgfHwg
bV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55
LCBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgSW50NTJSZXBVc2UpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSk7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3LDEyICsxNDcsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBP
cEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtu
b3duQ2VsbFVzZSksIHN0b3JhZ2UpOwotICAgICAgICBOb2RlKiBjaGVja0luQm91bmRzID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIGluZGV4
LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworICAgICAgICBOb2RlKiBjaGVja0luQm91
bmRzOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICgob3AgPT0gR2V0
QXJyYXlMZW5ndGgpICYmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5
KCkgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZs
b3cpKSkgeworICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55LCBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93
bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGxlbmd0aC0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgYSBkdW1teSBz
aW5jZSB0aGlzIG5vZGUgZG9lcyBub3QgYWN0dWFsbHkgcmV0dXJuIGFueXRoaW5nLgorICAgICAg
ICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHNJbnQ1Miwg
bV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBJbnQ1
MlJlcFVzZSkpOworICAgICAgICB9IGVsc2UgeworI2VuZGlmCisgICAgICAgICAgICBOb2RlKiBs
ZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgp
LCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgICAgICB9CisjZW5kaWYKKwogCiAgICAgICAgIEFkamFjZW5jeUxp
c3QgYWRqYWNlbmN5TGlzdCA9IG1fZ3JhcGguY29weVZhcmFyZ0NoaWxkcmVuKG1fbm9kZSk7CiAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGVja0luQm91bmRz
LCBVbnR5cGVkVXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uMmU3ZjU2YWExMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjg4LDYgKzI4OCw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAg
Y2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM3Myw2ICszNzQsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI1ZjZhY2E2N2M0OC4uNzQ5ZWY1NDZhYmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzIzOCwyOCArMzIzOCw0MyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUQ29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNvdQogCiB9CiAK
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5k
cyhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUikKIHsKICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQogICAgICAg
ICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmll
dyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZv
ck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlN
b2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXct
Pmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAg
ICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgp
OwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUt
PmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29u
c3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgp
KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKICAgICAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyNlbmRpZgog
ICAgIH0KKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5k
ZXhHUFIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBpbmRl
eEdQUiwgc2NyYXRjaEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBqdW1wKTsKQEAgLTMzODAsMTAgKzMzOTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBz
dG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwog
ICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9y
YWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcDsKICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTMzOTcsNyArMzQxNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBu
b2RlLCBUeXBlZEFycmF5VHlwZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9
IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9ybWF0ID09
IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxvYWRGcm9tSW50VHlwZWRB
cnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIHR5
cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50
VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3BlY3VsYXRl
LCBzaG91bGRCb3gsIHJlc3VsdEZQUik7CkBAIC0zNTU1LDYgKzM1NzIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFn
ZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMp
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJl
ZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMik7CkBAIC0zNTg3LDcgKzM2MDUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHBy
b3BlcnR5KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVl
R1BSICE9IHN0b3JhZ2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0g
anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAo
ZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1LDEwICszNjYzLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5v
ZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7
CiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBi
YXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5n
cHIoKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
czsKICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQ
UlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dp
dGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9h
ZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzY5MCwxMCArMzcx
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1
ZUZQUiA9IHZhbHVlT3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRP
ZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVy
dHksIHNjcmF0Y2hHUFIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsK
ICAgICBjYXNlIDQ6IHsKQEAgLTc5NjcsNyArNzk4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcs
IGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUp
Ci0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3Jh
Z2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VS
ZWcpOwpAQCAtODAzOSw5ICs4MDYxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BS
UmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQ
Uik7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQ
UiAhPSBkYXRhR1BSKTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAK
QEAgLTgwODMsNiArODEwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0
KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBBSSBwcm9t
aXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJ
bnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJS
ZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiArODM3MywxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBtX2ppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
MTExMTksMTAgKzExMTQ5LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9k
ZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5
U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBh
IGludHB0cl90LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXpl
SW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzY3JhdGNoR1BSKTsK
KyNlbHNlCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKyAgICBlbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0
dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXpl
R1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5
IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEz
Niw4ICsxMTE4MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZh
c3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNz
ZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQp
KTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkgKzEx
MjQ0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgbV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkpOworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBU
cnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAt
MTQxNjcsNiArMTQyMjQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXkoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDA3YjU2M2IzNDgzYS4uMDQ5YmNmN2U2ZmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5
ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUq
KTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQ
Uik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2Vu
ZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzMSwxMCArMTQzOCwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhNaW5NYXgoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JU
eXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJZk91
dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5k
c0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSop
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJl
ZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdz
LCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAt
MjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9
OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNw
ZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9h
ZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCku
CisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhl
IGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4uMjJmNmY3Mjc0YWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgp
LmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0g
bm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5
cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5
cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJH
QiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBj
b21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjog
eworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQ
cm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzk4LDYgKzQ0MDksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQ1MkNv
bnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCAzYjM5M2Y1Mjc1ZjcuLmI1YzQ4NDk4M2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
ZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6
ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5
TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5
cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkg
dmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3By
KCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5
QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9m
ZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVk
QXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIp
OworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRh
R1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRh
dGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0
YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShB
Uk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5
dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxs
cHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJN
NjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7Cisg
ICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVz
dWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYgLy8gVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5v
ZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjQsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOworICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
aW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgICAgICBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoLmdwcigpKTsK
ICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwogICAgICAgICAKQEAgLTQz
ODEsNiArNDQ2MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorI2lmIFVTRShBRERSRVNTNjQp
CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNl
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAg
YnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5
SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTg4LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJl
YWs7CkBAIC01NTg5LDcgKzU2ODcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQy
KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRk
NjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFs
dWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgbV9qaXQu
bG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNoZWNrIGFnYWluc3QgMCBoZXJlLCBuZWdhdGl2ZSBpbmRpY2VzIGFy
ZSBjYXVnaHQgYnkgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggcmlnaHQgYWZ0ZXIKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbmRpZgogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQx
KSk7CiAKQEAgLTU3OTAsNyArNTg5NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwg
dDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBtX2pp
dC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVl
ZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMg
YXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0Miwg
dDEpKTsKIApAQCAtNjA0Miw2ICs2MTU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBB
c3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0lu
Qm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zm
c2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFm
MjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAg
ICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIz
YmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApA
QCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9u
OgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYg
KzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1
cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBA
IC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
IGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2Ug
Q2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1
bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNh
OGY1Y2ZjNzk1ZS4uZDg2ZmE2NWU2NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNr
SW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5v
ZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29t
cGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
b3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGlu
Z1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAg
ICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVj
dG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigp
KSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25z
dEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAg
ICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw5ICs0ODc3LDI5IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIo
bV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQs
IHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhlIHJl
c3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBtdXN0
IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorICAgICAgICBz
ZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAgICB9CisKK0lHTk9SRV9DTEFO
R19XQVJOSU5HU19CRUdJTigibWlzc2luZy1ub3JldHVybiIpCisgICAgdm9pZCBjb21waWxlR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBwcmVw
cm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
KSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6
ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsKKyAgICAgICAgc2V0
U3RyaWN0SW50NTIocmVzdWx0KTsKKyAgICB9CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisK
ICAgICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4u
c2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1MDg1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlz
U29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAg
ICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5s
b2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93
LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2
NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsZW5ndGgpKTsKKyNlbHNlCisgICAgICAgICAg
ICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2
NCw2ICs1MTAwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKK0lHTk9SRV9DTEFO
R19XQVJOSU5HU19CRUdJTigibWlzc2luZy1ub3JldHVybiIpCisgICAgdm9pZCBjb21waWxlR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgLy8g
VGhlIHByZXByb2Nlc3NvciBjaG9rZXMgb24gUkVMRUFTRV9BU1NFUlQoVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykpLCB0aGlzIGlzIGVxdWl2YWxlbnQuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNp
emVvZihzaXplX3QpID09IHNpemVvZih1aW50NjRfdCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1
MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgIH0KK0lHTk9SRV9DTEFOR19XQVJO
SU5HU19FTkQKKwogICAgIHZvaWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC01MTA4LDcgKzUx
NTQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gZGVwZW5kIG9uIG91ciB2YWx1ZS4gVXNlcnMg
b2YgdGhpcyBub2RlIGp1c3QgbmVlZCB0byBtYWludGFpbiB0aGF0CiAgICAgICAgIC8vIHdlIGRv
bWluYXRlIHRoZW0uCiAgICAgfQotICAgIAorCitJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4o
Im1pc3Npbmctbm9yZXR1cm4iKQorICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1Migp
CisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNFX0FT
U0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7Cisg
ICAgICAgIC8vIFNpZ24tZXh0ZW5kZWQgdG8gYWxzbyBjYXRjaCBuZWdhdGl2ZSBpbmRpY2VzCisg
ICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2Rl
LT5jaGlsZDEoKSkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbG93U3RyaWN0SW50NTIobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgp
LCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworICAgICAgICAv
LyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBubyB1c2VyIG9m
IHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlz
IG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2UgZG9taW5hdGUg
dGhlbS4KKyAgICB9CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisKICAgICBMVmFsdWUgY29t
cGlsZUdldEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAt
NjAwOCwxMSArNjA2OSwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMy
KGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZCb3VuZHMp
LCB1bnN1cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAg
ICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJU
KFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzQ29uZGl0aW9u
ID0gbV9vdXQuYWJvdmVPckVxdWFsKG1fb3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpLCBsb3dTdHJp
Y3RJbnQ1MihjaGlsZDUpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZDUudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92
ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91bmRzQ29uZGl0aW9u
LCB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7CisKICAgICAgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0luQm91
bmRzLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFs
dWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUodHlwZSkpOwogICAgICAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC04MTY5LDk1ICs4MjM3LDE4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
LSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0
LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJh
eUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xv
d0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2Up
OwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0
LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRT
aXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVk
QXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFu
ZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdElu
dFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAg
ICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFs
dWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFn
ZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9v
dXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykp
KSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9o
ZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihz
aXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1f
b3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVu
dGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxh
dGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwg
cGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBh
cmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2Vu
ZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5j
aG9yKHN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJU
bzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTFZhbHVlIGZh
c3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlU
eXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAg
ICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9
IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJa
ZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZP
Ul9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9U
WVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNl
IFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0
ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFn
ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0g
ICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291
dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9y
RmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5
cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGlu
dWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9p
bnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgIGNhc2UgSW50NTJS
ZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1Bh
dGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxv
Y2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRB
cnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUu
Z2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93
U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAg
ICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTgyNzcsNyArODI2OCwxMDQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShU
eXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAg
IHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJa
ZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShz
aXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxp
bWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdo
Q2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
c21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdo
IHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1i
ZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVm
ZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Cisg
ICAgICAgICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVt
ZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVk
QXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAor
ICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykp
LAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJf
dD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0
b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUs
IHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFs
bG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBz
dG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwK
KyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRB
cnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50
ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIo
c3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRCaXRzLCBC
Mzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAg
ICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAg
ICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAg
ICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0
LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVs
bHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAg
ICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5
PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFf
VklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNF
CisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVl
ID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRW
YWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAg
ICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKHNpemU2NEJpdHMpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbmRpZgorICAgICAg
ICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVz
dWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAgICAgbXV0
YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAg
ICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vU3Rv
cmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAg
ICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICBb
PSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6
eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6
eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVk
QXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0
R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwK
KyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQog
ICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CkBAIC0xNDY1Niw2ICsxNDc0NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBhcmUgMzItYml0
cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0d2VlbiBiYXNl
K2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZhbHVlIGJhc2Us
IExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBBYnN0cmFjdEhl
YXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxpbmdMaW1pdCA9
IDEwOwpAQCAtMTU1OTEsNyArMTU2ODEsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmll
d0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVs
bHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsKKyAgICAg
ICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBObyBuZWVk
IGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVjayBhZ2Fp
bnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9v
dXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaW5kZXhU
b0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVT
aXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hl
Y2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0LDcgKzE1
ODMwLDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUt
PmRhdGFWaWV3RGF0YSgpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAg
c3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFu
KGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBt
X291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d19sZW5ndGgpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY29t
cGFyaXNvbiBvZiBpbmRleCB0byAwLCB0aGUgY2hlY2sgYWdhaW5zdCBsZW5ndGggY2F0Y2hlcyB0
aGF0IGNhc2UKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQu
bG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoKSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAg
ICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0
KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzMzOCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAj
aWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRp
dmUpIHsKKyNpZiBVU0UoQUREUkVTUzY0KQorICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNl
bHNlCiAgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApp
bmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBub25O
ZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlv
bjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikg
eyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZl
KExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIo
YmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNl
LCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQp
OyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RF
cXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRy
aW5zaWNFbWl0dGVyLmNwcAppbmRleCA1Yzc2NWVkOTc2NTAuLjg5NTY4ZDQ2MzBmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODYs
MjMgKzg2LDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNp
Y0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJp
bnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwg
c3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50
MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0
aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVH
UFIpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKQorICAgICAgICAgICAgaml0
LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsK
KyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQ
Uiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+
IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIHdl
IFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50
MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVHUFIsIEltbTMyKGxvZ0VsZW1lbnRT
aXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNo
aWZ0IGhlcmUgc2luY2Ugb24gQUREUkVTUzMyIHBsYXRmb3JtcyBUeXBlZEFycmF5cyBjYW5ub3Qg
aGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgorICAgICAgICAgICAgaml0
LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsK
ICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsK
KyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMzMsOCArMTQyLDEyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1p
dEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIGpp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAg
ICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3Jh
dGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJbnQzMih2
YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkzNyw4IEBA
IHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAg
ICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPnRy
eVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9m
aWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAg
LTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMy
SW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5n
KGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
KSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmpl
Y3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBB
cnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkg
PCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAgICAgICAg
ICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCkt
PnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlz
IHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAogICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlw
dC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYw
MDQ0ZS4uZTc2ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5l
IE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQ
VShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTY4
MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsK
ICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAo
b2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0
ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0
T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3MCwxMyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdl
dE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJ
bmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNr
bHkoaSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZt
LCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+
dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
KSkKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChv
YmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAg
ICBMTElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI0MjFhN2ZhNDEwZS4uNmNkYmQ4
ZGUzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNv
bnN0IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJs
ZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdF
X1RZUEVEX0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0
ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29u
c3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3Ig
QVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5UHJvZmls
ZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxv
YWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVu
ZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5
VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBpbmRleCBp
cyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21hY3JvIGdl
dEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERv
dWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3Qg
bGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRv
IHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFz
ZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwxMSArMTMy
NiwyNiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdl
dEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBj
b25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9h
ZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlh
ZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlT
CisgICAgICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxl
bmd0aAorICAgICAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2Vd
LCBsZW5ndGgKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAg
ICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVu
dGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVz
ZWQgb24gb3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBpZiBMQVJHRV9UWVBFRF9B
UlJBWVMKKyAgICAgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5n
dGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpYWVxIGluZGV4
LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVu
ZAorICAgIGVuZAorCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIGJxYmVxIGlu
ZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFsbFR5cGVkQXJyYXkKKyAgICAgICAg
c2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6CiAgICAgZW5kCiAKICAgICBs
b2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFzZV0sIHQzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IDUwZDVkYmRmNjAyYS4uNGU3MGY4YjE1ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MTYyNCw2ICsxNjI0LDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGRpc3Bh
dGNoKCkKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAg
IGNyYXNoKCkKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBnZXQobV9iYXNl
LCB0MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRh
ZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE2NjksNyArMTY3Myw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9y
YWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRB
cnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0
TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRl
eCBkODRiNmVhZDM3ZmQuLjAyOTIwY2E4NDI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MTMsNiArMTcx
MywxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmaW5pc2hHZXRCeVZhbChz
Y3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZW5kCiAKKyAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJy
YXkoKQorICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgICAgIHN0b3JlYiAx
LCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUgKyBBcnJheVByb2ZpbGU6Om1f
bWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNyYXNo
KCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBn
ZXQobV9iYXNlLCB0MikKQEAgLTE3MjMsNiArMTczMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICMgVGhpcyBzaWduLWV4
dGVuc2lvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdldEJ5VmFsVHlwZWRBcnJheSB3
b3JrIGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAgICAgc3hpMnEgdDEsIHQxCiAKICAgICBsb2Fk
Q2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCkBA
IC0xNzYzLDcgKzE3NzIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNo
KCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgLm9wR2V0QnlW
YWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4YTFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcg
QEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2ln
YWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7
CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAgICAg
LCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUluQnl0ZXMo
c2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJD
b250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJhbnNmZXJU
bygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29u
dGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMp
CiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsxMDksMjEg
QEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5CeXRlcyA9
IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShzaXplX3Qg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhl
IHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRv
dGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90
YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1B
WF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0gbnVtRWxl
bWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXpl
SW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVu
dHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXpl
ID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAgICAg
ICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2Nh
dGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0
IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRy
eU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRh
ID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRh
dGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNl
dCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBtZW1z
ZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNpemVJ
bkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKICAg
ICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9y
KCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFy
ZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQob3Ro
ZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsKICAg
ICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0g
dHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yMDgs
NyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVzZWQgZnJv
bToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9y
eS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5IGNvbWUK
IC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVkKCkgfHwg
KEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAgcmV0dXJu
IGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
Ynl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNlIGEgbmV3
IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQgYWNjZXNz
ZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3VsZCBhbGxv
Y2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
RnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAg
IGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRh
KSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5
LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRl
cyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVh
dGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVy
b0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRy
eUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJh
eUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVM
ZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwx
NyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUlu
dGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQog
Ci1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3
IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUlu
dGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNl
LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291cmNl
KTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShj
b250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0
aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAg
ICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6
YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7
CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwg
cG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZl
cjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCitz
aXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXpl
X3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVm
dCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShk
b3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9
CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QK
K3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0g
ICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgY3Vy
cmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBp
bmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRl
eCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBz
bGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRl
eCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90
IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0g
YmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4g
OiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0KQog
ICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJhLi5l
YWNjYTJjMjMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVk
VGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSk7CisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAz
MikKKyNlbHNlCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3QpID09IHNpemVvZih1aW50MzJf
dCkpOworLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUg
aW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJp
dCBwbGF0Zm9ybXMuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0IHNob3VsZCBp
biB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIpIGlmIGFueW9u
ZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZmZmZ1CisjZW5k
aWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzYwLDcgQEAgdXNp
bmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiB7
CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBTaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKTsKICAgICAK
ICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChtX3Np
emVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgRGF0
YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47
CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIHNp
emVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVz
LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFycmF5QnVm
ZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQot
ICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsg
fQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7
IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0K
ICAgICAKQEAgLTk0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0aWFsaXpl
CiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHZvaWQg
dHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAg
ICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4ICsxMTQs
MjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0cjxTaGFy
ZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5
dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXIg
OiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0
aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRl
KEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9p
ZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBz
aXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsK
ICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25l
ZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3RoKCkgY29u
c3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFyaW5nTW9k
ZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBwdWJsaWM6CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBi
ZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFy
cmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90IGVu
ZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQg
dW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2Fn
ZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qg
dm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMm
JiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRl
eChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBW
YWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOworICAgIGlubGlu
ZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0YXRpYyBpbmxp
bmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3QgcmlnaHQp
OwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzIwMSw3IEBA
IGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250
ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBAQCBib29sIEFy
cmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6OmdjU2l6ZUVz
dGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQg
dG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcuCi0gICAg
cmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVMZW5n
dGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3RoKCk7CiB9
CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLjQ3MzcyMjc0
NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5dGVPZmZz
ZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAgICAgICAs
IG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChi
eXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgo
Ynl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5dGVMZW5n
dGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjA5OTk1NGI4NjUzMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRB
cml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1
cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAgICAvLyBIZWxw
ZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBzdGF0aWMgYm9v
bCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBz
aXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGJ5
dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChl
bGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQg
YSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFu
Z2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZm
ZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNp
emVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5n
ZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJvb2wgdmVy
aWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewot
ICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAo
Ynl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0
KSAvIHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3Ro
IC0gYnl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKICAgICAg
ICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFy
cmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNl
dFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAg
ICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFC
eXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJ
bXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRl
T2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9m
ZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQg
Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVu
c2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxl
bmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVt
YmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9m
ZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2
aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zm
c2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0g
ICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNl
dCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlC
eXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1F
bGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAt
IGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQg
PSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkg
LyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAg
ICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVt
ZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNl
dCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZz
ZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5z
aWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQp
IC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVja2VkU2l6ZSBhZGp1c3RlZE9mZnNldCA9ICpvZmZz
ZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAgICAgICAgYWRqdXN0
ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRqdXN0ZWRPZmZzZXQu
aGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBidWZmZXIuYnl0ZUxl
bmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNldC52YWx1ZSgpOwor
ICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAt
ICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihy
ZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBt
X2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHVpbnQ2
NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZzZXQg
OiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVk
IG1fYnl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNp
bmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIn
cyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
IGFycmF5LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8
IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxv
dworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgYXJyYXktPmJ5
dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFk
ZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VBZGRy
ZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBk
YXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3
OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBz
aXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAg
ICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNt
YWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVpbnQ4X3QqIGJhc2UgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsg
Ynl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVm
ZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVM
ZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0
KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAo
IWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRl
TGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsK
ICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5n
dGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1Jh
bmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9v
bCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVf
dCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkK
LSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewot
ICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5n
dGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90
KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNl
dChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgK
LSAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9m
ZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBz
dGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAw
OwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChl
bmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQg
PCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
bmQgLSBzdGFydCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5
QnVmZmVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0
b21pY3NPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAKaW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIw
LDcgQEAgc3RhdGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nl
c3NJbmRleFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VS
VCh0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9N
QVgpKTsKKwogICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkp
IHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3Mg
aW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBk
Y2MyZjUwNjRhZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLURhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
Ynl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0
ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5n
dGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIx
NDQuLjM0MDI2NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmll
dy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcg
ZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFW
aWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5
VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2ln
bmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisg
ICAgVCBnZXQoc2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAo
b2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQo
dW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCisgICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxh
dGUgZ2V0PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0
YXR1cyB8fCAqc3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBU
IHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2
b2lkIHNldChzaXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAg
ICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJy
YXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRl
eCBiZTdlNmMwNTM0ZmEuLjViZTgxNjVmNzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMzLDI0IEBA
IG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVy
aWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7
CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJl
c3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wg
c2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50
LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldFJhbmdlSW1wbCgKICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLApAQCAtNTgsMzkg
KzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVk
IG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wgemVyb1JhbmdlKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBjb3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNl
dCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwgY291bnQgKiBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6
ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFj
aGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgo
KSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwog
ICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChzaXplX3Qg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRh
KClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0
YSgpW2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAg
Ym9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQs
IHNpemVfdCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UmFuZ2VJbXBsKAogICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBAIC05OCwxOCArOTgsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zm
c2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgK
LSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8g
Y2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7
CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGNvdW50LCB0
aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAg
ICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJl
dHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVibGljOgogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uZjFhNzZkZmQzYmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBB
cnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
YXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBA
IC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0
cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQg
PSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcg
QEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsK
QEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRl
KFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwot
ICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFT
U0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlw
ZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4g
dHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjNkOGU0NzQ1
MDY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLAorICAg
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVs
ZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1
cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwxOCBAQCBK
U0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4
dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQg
YXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWRTaXplIHNpemUg
PSBsZW5ndGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZS5oYXNPdmVy
Zmxvd2VkKCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICog
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBWZWN0b3JU
eXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSksIGxlbmd0
aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwogICAgIGlmICghbV92ZWN0
b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkKICAgICAgICAg
bWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXpl
KTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7
CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0gT3ZlcnNp
emVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIs
Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQog
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkK
QEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4
dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHNpemVfdCBieXRlT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVy
ZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUpCkBA
IC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpTVHlw
ZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5cGVd
OwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0Citz
aXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAgIHJl
c3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsK
KyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVja2Vk
IGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNoZWNr
IHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVtZW50
U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmll
dzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlCdWZm
ZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxl
bmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAg
ICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0zMTUs
OCArMzIyLDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBv
c3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hh
cmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSB0aGlz
LT5ieXRlT2Zmc2V0KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAg
IHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlw
ZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uMTRmYTViYmE1YTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6
ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmYXN0U2l6ZUxpbWl0
ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxW
ZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVp
bnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIHNpemVfdCBz
aXplT2Yoc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOwor
ICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihz
aXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYsMjUg
KzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIEluaXRpYWxp
emF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAgICAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSos
IHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9k
ZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXpl
LCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAgICAvLyBU
aGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQncyB1c2Vk
IGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3Ry
dWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBDb25zdHJ1
Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAog
ICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAg
ICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgICAgICAKICAgICAgICAg
ZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFn
KTsKKyAgICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmll
d1RhZyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX3N0cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAg
IHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNp
emVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFy
cmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZs
eSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBA
IC0xNjIsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwot
ICAgICAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAg
ICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJm
bHk7CiAgICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkKiB2ZWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkpOyB9CiAg
ICAgdm9pZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Zl
Y3Rvci5nZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0
KCk7Ci0gICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJy
ZW50bHkoKTsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVPZmZzZXQoKTsKKyAgICBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xl
bmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJh
eUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1f
dmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAg
ICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4IDFkMDcy
YjcxYWNiNy4uZDg1YjMyODMwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTksNyArOTksNyBA
QCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQog
ICAgIHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVj
dG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVy
LT5kYXRhKCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlbHRhKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihkZWx0YSk7
CiAgICAgaWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAgLTExMCwxNCAr
MTEwLDE0IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0
SW1wbCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIEpTQXJyYXlC
dWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKK2lubGluZSBzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCB1bnNp
Z25lZD4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgc2l6ZV90PigpOwog
fQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBKU0Fy
cmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5
dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+Pigp
OworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0Fy
cmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAwODY3ZGNiZWFkODEuLmU4
YTRlN2E2MjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25tb3ZhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtMjk4LDYgKzI5OSw3IEBAIHB1YmxpYzoKICAg
ICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0
b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvSW5kZXgoSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OworICAgIHNpemVfdCB0
b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkg
Y29uc3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAppbmRleCBmN2E5ZTcwZWQ2ZTAuLjhmNWMwNzE5ODg2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxNCArNjks
NDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJp
bmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkgeworCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKwor
ICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwg
IiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGluZSBzaXplX3Qg
SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gYXNJ
bnQzMigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsK
KworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
KSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2Ui
KSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBBbGwgb2YgdGhpcyBtb25z
dHJvc2l0eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0IG9uIDE8PDMyLgorICAg
IHNpemVfdCBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1dE9mZnNldCA9IDA7Cisg
ICAgc2l6ZV90IGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7
CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4KSkgeworICAgICAgICBv
dXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZzZXQgPSBpbnQzMk1heDsK
KyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRwdXRPZmZzZXQgKyBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0M6OnRvSW50MzIoZCAtIGlu
cHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2lu
dGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNE
YXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQs
IEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRh
Vmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6
ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5hNWU3OGM0NjliMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYsMTQgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUo
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8g
RHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3Qg
aW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24g
d2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBK
U09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmpl
Y3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBB
cnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
cjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmlu
ZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSAr
MTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9m
IERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29s
IGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBA
IC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlz
RGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlm
IChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBl
bGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmll
dyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5
dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBk
YXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0g
ICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
Pj0gMykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJh
eUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5n
dGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0
aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMg
YWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi5lYTFlZjljMTNm
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZl
RnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
Q2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVy
ZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20g
SlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAg
ICBzaXplX3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMg
dGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UK
Ky8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdv
cmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1
YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0
YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFt
ZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlw
ZWRWZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAg
ICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5C
b3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
OwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4
ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2Ug
dGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVy
dFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNp
emVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBt
X2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVp
Y2tseTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1
aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZl
Y3RvcigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNp
Z25lZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJ
bmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBp
LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkg
PCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB2b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAg
IHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlw
ZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9i
YWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5h
dGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xv
YmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxF
bGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFs
dWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRh
cHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4g
dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxB
ZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5
OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2Fu
QWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
CiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAm
JiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJm
bG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICBy
ZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsK
ICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJl
dHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0
aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxP
YmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFs
c2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJv
b2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2ln
bmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5
cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qg
b2Zmc2V0LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENv
cHlUeXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAg
LTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNz
ZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlw
ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCos
IHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAor
ICAgICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAK
ICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQg
QXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0
OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAg
ICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFO
KGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uMzM2ZjFhZWUzZjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0Myw3ICsxNDMs
NyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5l
ZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3Vt
ZW50LCBzaXplX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoT3B0KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAg
IGlmIChsZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsK
ICAgICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG8KICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkg
b2YgdGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmpl
Y3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICBzaXplX3QgbGVuZ3RoOwogICAgICAg
ICBKU0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChp
c1R5cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkp
IHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUu
dG9JbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gZmly
c3RWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5n
dGgpKTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAg
fQogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAx
KSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1w
bChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFsdWUgaXMg
cHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAgICAgICAg
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAg
ICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAg
ICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNz
OjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDog
Imxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVHlwZWRB
cnJheUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIz
ODc5MmQxMC4uYTNkZGMxZjgzNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5j
bHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2
LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJl
LCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0
aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksMTcgKzEwMCwxNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVfdCBzaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBpZiAo
IUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNl
dCwgbGVuZ3RoLCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJS
YW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIGVsZW1lbnRTaXplKSkgewog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZl
cmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkpIHsKKyAgICBpZiAoIUFy
cmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBlbGVt
ZW50U2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25l
ZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTQ1LDcgKzE0Niw3IEBA
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBl
KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQg
b3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVf
dCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3
ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRo
U3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlz
dGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXpl
ICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5
VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAg
ICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRv
cj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZh
bHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8g
Tm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVy
ICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZl
VmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0
ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5
LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJh
bnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewog
ICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVy
dFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZl
VmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxl
bmd0aDsgaS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBz
ZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ld
KTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQg
b2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBz
aXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChj
aS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAg
ICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUg
dGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1
c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihv
YmplY3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgo
KSk7CiAgICAgICAgIApAQCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBldmVyIGNh
bGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZzZXQpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkp
OwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3cs
IHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9v
bCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAg
ICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vz
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBiNjNiNjhh
MjViNDUuLjE5ODYzOTBkOGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNW
YWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQcm9maWxl
OwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50ZXJuYWxG
dW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7
CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5T
ZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldElu
ZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJ
bmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9v
bCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKLSAgICBK
U1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OworICAg
IEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJyYXlQcm9m
aWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAg
Ci0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKworICAg
IC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVM
YXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdldEluZGV4
UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIp
IGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMt
PmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNhbkdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0g
ICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAg
ICB2b2lkIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nl
c3MKKyAgICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSop
OworICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0
Y2ggKGluZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZ
UEVTOgotICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
aSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkoaSwgdiwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFM
TF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFC
TEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05U
SUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9J
TkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IXYuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNv
bnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5H
X1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+
Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAg
ICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAg
ICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7
CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7
CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWlu
Z1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAg
aWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0
ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAg
ICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHkt
PnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZl
Y3Rvckxlbmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFn
ZSgpLT5tX3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0Nv
cHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZs
eS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT5tX3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhR
dWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggOGZmYzVmOTM4MjJmLi43
NjBhOWE5ZTJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAogICAgIH0K
IH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2Jq
ZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0jZGVmaW5l
IENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlw
ZSA6XAotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJyYXkgKj4o
dGhpcyktPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUp
Ci0jdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGlm
IChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVBy
b2ZpbGUpCisgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7CisjZW5kaWYKIAotaW5saW5l
IEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQg
aSkgY29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FS
UkFZX1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEy
LDcgKzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAg
fQogfQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJy
YXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQorewor
ICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3Jh
Z2UoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3Rvcltp
XTsKKyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOwor
ICAgIGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsK
KyAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdl
LT5zZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRy
eVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFy
cmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAgIGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFs
bFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJh
eVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNl
KQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBk
byB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBj
YXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBq
c0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRB
cnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAg
IFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4g
dHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RB
VEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9U
WVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQ
dXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4
OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVj
dCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAg
ICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5k
ZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0K
IAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRl
eChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFn
ZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5k
ZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMu
aD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JV
RkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50
MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdjZDU5NmY4NzJlYy4uMjBhNjgwZmM0MjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtOCw2ICs4LDIxIEBACiAgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0RlYnVnLnlhbWw6CiAgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoK
IAorMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisg
ICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0
NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgTWFkZSBz
b21lIG9mIENoZWNrZWRBcml0aG1ldGljIGNvbnN0ZXhwciwgYW5kIGFkZGVkIGlzU3VtU21hbGxl
clRoYW5PckVxdWFsIHNpbmNlIGl0IGlzIGEgY29tbW9ubHkgdXNlZCB0ZXN0IGluIEFycmF5QnVm
ZmVyIGFuZCBlYXN5IHRvIGdldCB3cm9uZyBpbiB0ZXJtcyBvZiBvdmVyZmxvdy4KKworICAgICAg
ICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjppc0luQm91bmRzKToK
KyAgICAgICAgKFdURjo6Y29udmVydFNhZmVseSk6CisgICAgICAgIChXVEY6OmlzU3VtU21hbGxl
clRoYW5PckVxdWFsKToKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFy
Z2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28g
aW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0
byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9u
IHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFs
dWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTks
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291
cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4K
ICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6
bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAg
IHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNp
c2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4u
CiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2ln
biwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAg
ICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkg
Z3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+
IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZh
bHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUg
Y29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29s
IGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIg
Ym9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAg
aWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+
IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQ
cm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sK
KyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOwor
ICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsK
K30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQs
NCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3Vu
ZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93
czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApp
bmRleCA5YzlmODBlM2ZkMWIuLjY0NmU5YmVhNThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0x
NDEsNiArMTQxLDE1IEBACiAjZGVmaW5lIFVTRV9KU1ZBTFVFMzJfNjQgMQogI2VuZGlmCiAKKy8v
IEZJWE1FOiB0aGlzIHNob3VsZCBpbnN0ZWFkIGJlIGJhc2VkIG9uIFNJWkVfTUFYID09IFVJTlQ2
NF9NQVgKKy8vIEJ1dCB0aGlzIHJlcXVpcmVzIGluY2x1ZGluZyA8Y3N0ZGludD4gYW5kIFBsYXRm
b3JtLmggaXMgaW5jbHVkZWQgaW4gYWxsIGtpbmQgb2Ygd2VpcmQgcGxhY2VzLCBpbmNsdWRpbmcg
bm9uLWNwcCBmaWxlcworLy8gQW5kIGluIHByYWN0aWNlIENQVShBRERSRVNTNjQpIGlzIGVxdWl2
YWxlbnQgb24gYWxsIHBsYXRmb3JtcyB3ZSBzdXBwb3J0ICh2ZXJpZmllZCBieSBzdGF0aWNfYXNz
ZXJ0cyBpbiBBcnJheUJ1ZmZlci5oKQorI2lmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9M
QVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FSUkFZ
UyAwCisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAvKiBGSVhNRTogRW5hYmxlIEJJR0lO
VDMyIG9wdGltaXphdGlvbiBhZ2FpbiBhZnRlciB3ZSBlbnN1cmUgU3BlZWRvbWV0ZXIyIGFuZCBK
ZXRTdHJlYW0yIHJlZ3Jlc3Npb25zIGFyZSBmaXhlZC4gKi8KIC8qIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ3NzcgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZmFhZGM3YTNj
N2YuLmFiYWUzYzAzZmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMTU1LDYgKzE1NSw0NiBAQAogICAgICAg
ICAqIHBsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpi
dWlsZFVzZXJBZ2VudFN0cmluZyk6CiAKKzIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0ICA8cm1v
cmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1Mwor
ICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6
dWtpLgorCisgICAgICAgIFNvbWUgcGFydHMgb2YgV2ViQ29yZSB1c2UgVHlwZWRBcnJheXMsIGFu
ZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBtYWRlIHRoZSBsZW5ndGgoKSBmdW5jdGlvbiBvbiB0
eXBlZCBhcnJheXMgcmV0dXJuIFVDUFVSZWdpc3RlciBpbnN0ZWFkIG9mIHVpbnQzMl90LgorICAg
ICAgICBNb3N0IGZpeGVzIHdlcmUgdHJpdmlhbCwgdGhlIG9ubHkgZXhjZXB0aW9uIGlzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAsIHdoZXJlIEkgaGFkIHRvIGluY3JlbWVudCB0aGUgdmVyc2lv
biBudW1iZXIsIGFzIEFycmF5QnVmZmVyIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgbm93IHdyaXRl
L3JlYWQgdGhlaXIgbGVuZ3RoIGluIGEgNjQtYml0IGZpZWxkIChhbmQgc2FtZSBmb3IgdGhlIGJ5
dGVPZmZzZXQgb2YgQXJyYXlCdWZmZXJWaWV3KS4KKworICAgICAgICBJIGFsc28gaGFkIHRvIGFk
ZCBhIHRlc3QgaW4gUGl4ZWxCdWZmZXIuY3BwIHRoYXQgdGhlIHNpemUgb2YgdGhlIEFycmF5QnVm
ZmVyIGl0IHdpbGwgdHJ5IHRvIGFsbG9jYXRlIGlzIDwgSU5UMzJfTUFYLgorICAgICAgICBPdGhl
cndpc2UsIHRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxv
YXRzL3NoYXBlLW91dHNpZGUtaW1hZ2VkYXRhLW92ZXJmbG93Lmh0bWwgd2hpY2ggY2hlY2tzIHRo
YXQgdmVyeSBsYXJnZSBpbWFnZXMgYXJlIHByb3Blcmx5IHJlamVjdGVkIHdpdGhvdXQgY3Jhc2hp
bmcsIHdvdWxkIHRpbWVvdXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUgY29kZSBp
cyBhbHJlYWR5IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBJIGlt
cGxlbWVudGVkIG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlGcm9t
Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5E
YXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJWaWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEltYWdlQml0bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlckltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlld0ltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZp
ZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorICAgICAgICAq
IGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisKIDIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjI4
NDIzMCwgbXkgbGFzdCBmaXhlcyB0byB0aGUgd2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVhayB0ZXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApp
bmRleCBjYjdlODRkNDUzODMuLmIxOGQ4ZmQ2YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9hdDMyQXJy
YXk+JiYgZGVzdGluYXRpb24sCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQog
ICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0
aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3QgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVy
T2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCks
IGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEo
KTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29w
eVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJjZSwgdW5zaWduZQogICAgIGlmIChi
dWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAg
ICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgc2l6ZV90
IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWlu
KHNvdXJjZS5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBz
cmMgPSBzb3VyY2UtPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uZDUzYjllNjQ0
ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlci5jcHAKQEAgLTE5Niw4ICsxOTYsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6
OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAg
ZG9GRlRBbmFseXNpc0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxp
bmVhciBtYWduaXR1ZGUgdG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNpZ25lZCBz
b3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0
aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7Cisg
ICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKKyAgICBz
aXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAg
IHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uTGVuZ3Ro
KTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUgcmFuZ2VTY2Fs
ZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAxIC8gKG1fbWF4
RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91YmxlIG1pbkRlY2li
ZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjgsOSBAQCB2b2lkIFJlYWx0aW1lQW5h
bHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0aW5hdGlvbkFy
cmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgdW5zaWduZWQg
ZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4o
ZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0
aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6
ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6
ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGJv
b2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZl
clNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBBU1NFUlQo
aXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Myw5IEBAIHZvaWQgUmVhbHRpbWVBbmFs
eXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVkIGZmdFNpemUg
PSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUs
IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0
aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlz
LT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3Rp
bmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5w
dXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYm
IG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRC
dWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uMTgyMjFlMzVhYTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XYXNtTW9k
dWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Miw4ICszNDMsOSBAQCBzdGF0aWMgdW5zaWduZWQg
Y291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVyc2lvbiA3LiBh
ZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNp
b24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUu
CiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlQml0bWFwIGNvbG9yIHNwYWNl
LgorICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVuZ3RoIChhbmQgb2Zmc2V0cykgb2YgQXJy
YXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgZnJvbSAzMiB0byA2NCBiaXRzCiAgKi8K
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSAxMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBUZXJt
aW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdQb29s
VGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb25JbmRleFByb3BlcnRp
ZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMzk5LDcgKzQwMSw3IEBAIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IE9iamVjdFJl
ZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+
CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1
ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90
PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5QnVmZmVyVmll
d1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0X3Q+IDxieXRlTGVu
Z3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCiAgKiAgICB8IENy
eXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRle3dyYXBw
ZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0CkBAIC00NjMs
NyArNDY1LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0g
MHg4MDAwMDAwMDsKICAqICAgIE9iamVjdFJlZmVyZW5jZVRhZyA8b3BJbmRleDpJbmRleFR5cGU+
CiAgKgogICogQXJyYXlCdWZmZXIgOi0KLSAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWlu
dDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVu
Z3RoOnVpbnQ2NF90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgogICogICAgQXJyYXlCdWZmZXJU
cmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICBTaGFyZWRBcnJheUJ1ZmZlclRhZyA8
dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAtOTk4LDggKzEwMDAsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBh
cnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXJWaWV3KHZtLCBvYmop
OwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5i
eXRlT2Zmc2V0KCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5
QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVPZmZzZXQg
PSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKTsKKyAgICAgICAgd3JpdGUoYnl0ZU9mZnNl
dCk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVM
ZW5ndGgoKTsKKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CiAgICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXctPnBvc3NpYmx5U2hhcmVkQnVm
ZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgICAgIGNvZGUgPSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwpAQCAtMTEzMSw4ICsxMTM1
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYnVmZmVy
LT5yZXNvbHV0aW9uU2NhbGUoKSkpOwogICAgICAgICB3cml0ZShidWZmZXItPmNvbG9yU3BhY2Uo
KSk7CiAKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgQ2hlY2tlZFVpbnQzMiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgaWYgKGJ5dGVMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICBj
b2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAg
ICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBieXRlTGVuZ3RoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKQpAQCAtMTI2Myw4ICsxMjcyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
d3JpdGUoSW1hZ2VEYXRhVGFnKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0aCgp
KTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAg
ICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShk
YXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOworICAgICAgICAgICAg
ICAgIENoZWNrZWRVaW50MzIgZGF0YUxlbmd0aCA9IGRhdGEtPmRhdGEoKS5sZW5ndGgoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJv
cjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CkBAIC0xMzExLDggKzEzMjUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRh
Zyk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0g
ICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVm
ZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgp
OwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpAQCAtMTUwMiw3
ICsxNTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4obV9idWZmZXIs
IGkpOwogICAgIH0KIAotICAgIHZvaWQgd3JpdGUodW5zaWduZWQgbG9uZyBsb25nIGkpCisgICAg
dm9pZCB3cml0ZSh1aW50NjRfdCBpKQogICAgIHsKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4o
bV9idWZmZXIsIGkpOwogICAgIH0KQEAgLTIzOTEsNyArMjQwNiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZCh1bnNpZ25lZCBsb25nIGxv
bmcmIGkpCisgICAgYm9vbCByZWFkKHVpbnQ2NF90JiBpKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHJlYWRMaXR0bGVFbmRpYW4oaSk7CiAgICAgfQpAQCAtMjU1NSw5ICsyNTcwLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVm
ZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIExlbmd0aFR5cGU+CisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXJJbXBsKFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQogICAgIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoOwor
ICAgICAgICBMZW5ndGhUeXBlIGxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGxlbmd0aCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChtX3B0ciArIGxlbmd0aCA+IG1f
ZW5kKQpAQCAtMjU2OSwxNSArMjU4NSwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVl
JiBhcnJheUJ1ZmZlclZpZXcpCisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5
QnVmZmVyPiYgYXJyYXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTAp
CisgICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJfdD4oYXJyYXlC
dWZmZXIpOworICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50NjRfdD4oYXJy
YXlCdWZmZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZW5ndGhUeXBlPgor
ICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlld0ltcGwoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1
ZmZlclZpZXcpCiAgICAgewogICAgICAgICBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgYXJyYXlCdWZm
ZXJWaWV3U3VidGFnOwogICAgICAgICBpZiAoIXJlYWRBcnJheUJ1ZmZlclZpZXdTdWJ0YWcoYXJy
YXlCdWZmZXJWaWV3U3VidGFnKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
dWludDMyX3QgYnl0ZU9mZnNldDsKKyAgICAgICAgTGVuZ3RoVHlwZSBieXRlT2Zmc2V0OwogICAg
ICAgICBpZiAoIXJlYWQoYnl0ZU9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHVpbnQzMl90IGJ5dGVMZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZUxlbmd0
aDsKICAgICAgICAgaWYgKCFyZWFkKGJ5dGVMZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJPYmogPSBhc09iamVjdChyZWFkVGVy
bWluYWwoKSk7CkBAIC0yNTg3LDcgKzI2MTEsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25l
ZCBlbGVtZW50U2l6ZSA9IHR5cGVkQXJyYXlFbGVtZW50U2l6ZShhcnJheUJ1ZmZlclZpZXdTdWJ0
YWcpOwogICAgICAgICBpZiAoIWVsZW1lbnRTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNpemU7Cisg
ICAgICAgIExlbmd0aFR5cGUgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOwogICAg
ICAgICBpZiAobGVuZ3RoICogZWxlbWVudFNpemUgIT0gYnl0ZUxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMjYzNCw2ICsyNjU4LDEzIEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVl
JiBhcnJheUJ1ZmZlclZpZXcpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisg
ICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDMyX3Q+KHZtLCBh
cnJheUJ1ZmZlclZpZXcpOworICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8
dWludDY0X3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOworICAgIH0KKwogICAgIGJvb2wgcmVhZChW
ZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNF
bXB0eSgpKTsKQEAgLTMzNDUsNyArMzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gY29s
b3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyOwogCi0gICAgICAgIGlmICghcmVhZChzZXJpYWxpemF0
aW9uU3RhdGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNhbEhlaWdodCkg
fHwgIXJlYWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAhcmVhZChjb2xv
clNwYWNlKSkgfHwgIXJlYWRBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikpIHsKKyAgICAgICAgaWYg
KCFyZWFkKHNlcmlhbGl6YXRpb25TdGF0ZSkgfHwgIXJlYWQobG9naWNhbFdpZHRoKSB8fCAhcmVh
ZChsb2dpY2FsSGVpZ2h0KSB8fCAhcmVhZChyZXNvbHV0aW9uU2NhbGUpIHx8IChtX3ZlcnNpb24g
PiA4ICYmICFyZWFkKGNvbG9yU3BhY2UpKSB8fCAhcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJf
dD4oYXJyYXlCdWZmZXIpKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZiNzU3YTRkNzRmNi4uN2U0OWE5ZTcz
MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBpZiAoaGFzQXJyYXkpIHsKICAg
ICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXktPnNpemUoKSk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byAmYXJyYXlCdWZmZXJD
b250ZW50cyA6ICptX2FycmF5QnVmZmVyQ29udGVudHNBcnJheSkgewotICAgICAgICAgICAgZW5j
b2RlciA8PCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CisgICAgICAgICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJ
bkJ5dGVzKCkpOwogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyQ29udGVudHMuZGF0YSgpKSwgYXJy
YXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpLCAxKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTE5OSw5ICsxOTksMTIgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAgICAgICBhcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4o
KTsKICAgICAgICAgd2hpbGUgKGFycmF5TGVuZ3RoLS0pIHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGJ1ZmZlclNpemU7CisgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplOwogICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRCdWZmZXJTaXplID0g
YnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGlmIChjaGVja2VkQnVmZmVyU2l6ZS5oYXNPdmVyZmxv
d2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90Pihi
dWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjEyLDcg
KzIxNSw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgICAgICAgICAgR2lnYWNhZ2U6
OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheS0+YXBwZW5kKHsgYnVmZmVyLCBidWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgY2hlY2tlZEJ1ZmZlclNpemUsIEFycmF5QnVmZmVy
OjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSB9KTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5
MWQ2ODZkLi41NTllYmNjNDhjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNjgsNyArNjgsOSBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoV2ViQ29yZTo6QmxvYiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iu
c2l6ZSgpOwogICAgIGlmICghYnl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJy
YXlCdWZmZXI6OmNyZWF0ZSgwVSwgMSksIDAsIDApOworICAgICAgICAvLyBUaGUgY2FzdCBsb29r
cyB3ZWlyZCwgYnV0IGlzIHJlcXVpcmVkIGZvciB0aGUgb3ZlcmxvYWRpbmcgcmVzb2x1dGlvbiB0
byBzdWNjZWVkLgorICAgICAgICAvLyBXaXRob3V0IGl0LCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkg
d2hlcmUgQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRl
TGVuZ3RoKSBjb3VsZCBiZSBjYWxsZWQgaW5zdGVhZC4KKyAgICAgICAgZW5xdWV1ZShKU0M6OkFy
cmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8c2l6ZV90PigwVSksIDEpLCAwLCAwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlUmVm
PEJsb2JMb2FkZXI+KFt0aGlzXShCbG9iTG9hZGVyJikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4IDI1YmZmMTUzZDEyYy4uNzU0
M2Y0NzVhMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuY3BwCkBAIC03NCw2ICs3NCw4IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAg
ICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAg
ICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJy
YXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJTaXpl
KTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggODcw
YmRjODBmMzU1Li5kODNlNGE0MDQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZvdXJD
Qy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02
Myw3ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgY2hlY2tlZFJlYWQoUiYg
cmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQsIEVuZGlhbm5lc3MgZW5kaWFu
bmVzcykKICAgICB7CiAgICAgICAgIGJvb2wgcmVhZFN0YXR1cyA9IGZhbHNlOwotICAgICAgICBU
IHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KG9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0
bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgc2l6ZV90IGFjdHVhbE9mZnNldCA9IG9m
ZnNldDsKKyAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihhY3R1YWxPZmZz
ZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dWludDMyX3Q+KGFjdHVhbE9mZnNldCkpOworICAgICAg
ICBvZmZzZXQgPSBhY3R1YWxPZmZzZXQ7CiAgICAgICAgIGlmICghcmVhZFN0YXR1cykKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>
<flag name="commit-queue"
          id="465693"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441453</attachid>
            <date>2021-10-15 16:30:42 -0700</date>
            <delta_ts>2021-10-15 16:30:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>273566</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjI2MmNkYTM4M2Q1Li5lYzZiYjNjMWQ4NTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
NSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFr
IHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxseS1v
b2IuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1MzliNTBkMmU1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQorewor
ICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7Citm
dW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4
XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVl
OworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICog
MTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdl
dEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAg
ICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9m
IHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwor
ICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAg
ICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisg
ICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2Yt
Ym91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNz
L3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIu
anMKaW5kZXggNzdkNTBjMzUwYjQ2Li5lZDBlN2FmMDkxM2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JV
RkZFUl9TSVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVx
dWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2
LDEzIEBAIGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewog
ICAgIHZhciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRk
TWVtb3J5KDMyNzY4KTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KCgyKioxNikgKyAxKTsKICAgICBt
b2R1bGUuaW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwog
fQogCi1pZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikgeworaWYg
KGV4Y2VwdGlvbiAhPSAiQ29tcGlsZUVycm9yOiBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDE1OiBNZW1vcnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgNjU1MzcgaXMg
aW52YWxpZCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0aGlzLnRvQnVmZmVy
KCkpJykiKSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1t
b3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMK
aW5kZXggYmE2MmQ5MTQ3NmFhLi4wMWYwNmQyZjQ5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2
YXIgZXhjZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0
aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXI7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMDEsIG1heGltdW06IDB4MTAwMDEgfSkuYnVmZmVy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24g
IT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQotICAgIHRocm93ICJGQUlMRUQiOworaWYg
KGV4Y2VwdGlvbiAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCisgICAgdGhyb3cgIkZBSUxFRCwgZXhjZXB0aW9uIHdh
czogIiArIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDEzYWFkNjZjNTEuLjQ1OWZiOTNiNzk1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtNzAsNiArNzAsMjIgQEAKICAgICAgICAgKiBmYXN0L2lubGluZS93b3JkYnJlYWstYXQt
aW5saW5lLWJveC1ib3VuZGFyeS1leHBlY3RlZC5odG1sOiBBZGRlZC4KICAgICAgICAgKiBmYXN0
L2lubGluZS93b3JkYnJlYWstYXQtaW5saW5lLWJveC1ib3VuZGFyeS5odG1sOiBBZGRlZC4KIAor
MjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgUmViYXNlbGlu
ZWQgdGhyZWUgZm9sbG93aW5nIHRlc3RzIGFzIGRpZmZlcmVudCBvciBmZXdlciBlcnJvciBtZXNz
YWdlcyBhcHBlYXIgb24gdGhlIGNvbnNvbGUuCisgICAgICAgIEFsc28gY2hhbmdlZCBjdXJyZW50
VmVyc2lvbiBpbiBzZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGZyb20gOSB0byAxMC4KKwor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3N0b3JhZ2Uvc2VyaWFs
aXplZC1zY3JpcHQtdmFsdWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAy
MDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2Ug
aXQgYnJlYWsgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJp
YWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3Nlcmlh
bGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12
YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0
PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9
IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50
dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZm
ZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1i
dWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9C
dWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVu
Z3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2gu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxl
bmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZl
ci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVm
ZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0
aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9m
ZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5k
ZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkNzYwNDY4MTEyY2YuLmQyNDcwMTJhNzdhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8g
NEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkz
NTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0la
RSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVx
dWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2Vu
dGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZm
ZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBzaXplX3QuCisgICAgICAgIC0gVGhpcyBhbHNv
IHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5l
L0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0
aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlw
ZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3Ry
aWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFy
Z2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUg
REZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFk
IHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3Qg
YWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAg
LSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwv
RGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGlu
ZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11
bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEg
Im1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQ
cm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBp
bmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0
aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBk
YXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3Jy
ZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRp
bWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMu
CisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93
LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0
IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdl
IGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1v
cnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFz
dCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0
QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBj
dXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBl
cmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9V
SW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlz
IHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxs
cHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDAp
CisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3Vu
ZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hp
Y2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2ls
aXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0
eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBi
dXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBv
aW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFz
SW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1Q
dHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0
cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxl
bmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQ
dHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5C
bGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29k
ZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxh
cmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5
cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5s
aW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlD
bGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
R2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlv
bi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNT
dG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGls
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlw
ZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93
ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFu
ZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3Vu
ZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5
cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Z2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAg
IChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJh
eUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVj
a0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRM
T3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6
CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6
CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJ
bmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5
QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3
KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9E
YXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3
OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICog
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6
CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlH
ZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5k
ZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhp
bmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25z
Lmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dh
c21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCkBAIC0yNTQsNyArNTI2LDcgQEAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KIAogICAgICAgICBXaGlsZSBpbmNyZWFz
aW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVt
b3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKLSAgICAg
ICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2Vk
IGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BV
UmVnaXN0ZXIuCisgICAgICAgIC0gNEdCIGlzIG5vdCByZXByZXNlbnRhYmxlIGluIGEgdWludDMy
X3QsIHNvIEkgY2hhbmdlZCBhbGwgbGVuZ3RoIG9mIEFycmF5QnVmZmVyL1R5cGVkQXJyYXkvZXRj
Li4gdG8gYmVpbmcgc2l6ZV90LgogICAgICAgICAtIFRoaXMgYWxzbyByZXF1aXJlZCBjaGFuZ2lu
ZyBOZXdUeXBlZEFycmF5IGluIGFsbCBvZiBMTEludC9CYXNlbGluZS9ERkcvRlRMIHRvIGFjY2Vw
dCBhIG5vbi1pbnQzMiBzaXplLgogICAgICAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgcGVyZm9y
bWFuY2UgcmVncmVzc2lvbnMsIEkgaGFkIHRvIGFkZCBzcGVjdWxhdGlvbiBpbiB0aGUgREZHL0ZU
TCwgd2hpY2ggbm93IGhhdmUgdHdvIHZlcnNpb25zIG9mIE5ld1R5cGVkQXJyYXkgKG9uZSB0aGF0
IHRha2VzIGFuIEludDMyIGFuZCBvbmUgdGhhdCB0YWtlcyBhIFN0cmljdEludDUyKQogICAgICAg
ICAtIFNpbWlsYXJseSwgR2V0QXJyYXlMZW5ndGggYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
IG5vdyBjYW4gZWl0aGVyIHJldHVybiBhbiBJbnQzMiBvciBhIGxhcmdlciBudW1iZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdhYTBiN2JjOWFjLi45M2ViM2JmZTIwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yNjUsOSArMjY1LDkgQEAgcHVibGljOgogICAgIC8vIGlu
IGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZm
ZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3Nl
cyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGlj
IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg
VHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0yNzgsMjEgKzI3OCwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
c3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRy
KHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNp
dCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRw
dHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAg
ICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzAyLDEyICszMDIs
MTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0
cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAg
ICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTMyNSw3ICszMjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzM2LDE3ICsz
MzYsMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJ
bW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQot
ICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25z
dCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0K
KyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM1NywxNSArMzU3LDE1
IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZy
b20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMu
CiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVk
SW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAg
ICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzc2LDE3ICszNzYsMTcgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7
Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
NjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAg
ICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMK
QEAgLTEwNTMsOSArMTA1Myw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAg
IHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQg
Y2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDAxZTQ4YTExYmJiMC4uNDEzMjMwMmY4YTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBA
IC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4
Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Omxz
aGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAm
JiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwg
QWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsK
ICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMg
ZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlv
biwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUu
CisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJl
Y2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwg
ZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVt
cCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1t
NjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAg
ICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50
KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2Ny
YXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAg
Ly8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBu
b3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQor
ICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9Cisj
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCA1Zjk4ZmY5ZTMzN2MuLjg1NzQwNTVjOWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBp
bXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNv
bnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0g
MHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYg
KzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBB
ZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMjQ3MGMx
MTk2NjFiLi4wNzRhMzk4Zjg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRh
Z0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29s
IHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0
aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgp
CiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsK
KyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNo
ID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIs
IHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
aW5kZXggZTY2MTAwYmEyZTQ3Li4zZmFiYzRkODkxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAg
LTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpl
YnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgw
MGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVn
ZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMzk3OTkyYTNhNzUwLi4xMzI1MGVjNDg0
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5z
aWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVl
ZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3Rv
cmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxl
bmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIg
cmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTE4NCwxMiArMTE4NSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKLSAg
ICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxs
VGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0
eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwot
ICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90
LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVy
czo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisg
ICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRp
ZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxs
b2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkgKzEyMDMsMTMgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJl
dXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRj
aDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwot
CiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewpAQCAtMTU5NSw5ICsxNjA1LDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9
CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
Ly8gT3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3Bl
cmF0aW9uIGZ1bmN0aW9uLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRj
aEdQUikpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0g
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUg
bGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRp
bmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBh
ZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3Rh
dGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNjA1
LDkgKzE2MjAsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAg
ICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0
ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAg
ICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0
cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9h
ZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9h
ZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uMzZmZWIxNDRiYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVz
IHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0
eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBB
cnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3
aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAg
IH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7
IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVz
c09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7
IH0KQEAgLTI0NCw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9
OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNw
ZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFz
IGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFz
aWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3Jh
Z2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBp
bXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9
OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAg
ICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NCwxMyBAQCBzdGF0aWNf
YXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJh
eVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVM
YXJnZVR5cGVkQXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE0
LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5r
ZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCAyYjJmNWUwMzAxOWYuLmExY2Q2OTk0NGFiMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMzQ2Myw3ICszNDYzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7Cisg
ICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkpKSB7
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0NzEsNiArMzQ3MSwxNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlm
ICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5s
ZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzk2LDgg
KzM4MDcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKICAg
ICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5
dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVP
ZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAo
Ynl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MDYsNiArMzgxNywxOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5
KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
IHsKQEAgLTQxMDksNiArNDEzMywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjogeworICAgICAgICAvLyBT
ZWUgdGhlIENoZWNrSW5Cb3VuZHMgY2FzZSwgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlciB3aGF0
IHdlIHB1dCBoZXJlLgorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0lu
dDMyT25seSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CiAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRl
eCA2ZTI3NTMxMDRiZDMuLmEzYjkzNDBmNjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0z
MjUsNiArMzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUo
bm9kZS0+Y2hpbGQxKCksIG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBz
aG91bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDog
ewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZl
Y3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4
IDZlNGZlOWFmYTNlYi4uNzI1OGUzNzE1ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6cmVmaW5lKAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFj
dGlvbigpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgp
KQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSkKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9u
KCkpOwogICAgIAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMg
b2JqZWN0IGJlaGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYg
KzI5NCw4IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFy
cmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9u
bHkgcHJlc2VydmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBh
bmQgbm90IEdldEJ5VmFsIGFzIHdlbGwuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWwpIHsKICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMsIE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAg
IHJldHVybiB0eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3Vu
ZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGEwMjZh
YWQxODkzYi4uZGY3NWM3ODkwZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5z
cGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNp
b24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0
ZTsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNv
bnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlv
bjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJy
YXlDbGFzcywgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBAQCBwdWJs
aWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAg
ICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5
dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFy
cmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBl
LCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9u
LCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKKyAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
biwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxz
ZSkKICAgICB7CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAgdS5hc0J5
dGVzLmFycmF5Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRp
b24gPSBzcGVjdWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJz
aW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAg
ICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNs
YXNzLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikK
QEAgLTE2Myw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlv
biA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252
ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFz
Qnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJy
YXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpUeXBlPih1
LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgQXJyYXk6
OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OlNwZWN1bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpD
b252ZXJzaW9uPih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0aW9uIGFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUuYXNCeXRl
cy5hY3Rpb24pOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVuc2lnbmVk
IGFzV29yZCgpIGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzksMzUgKzE4
NSw1MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9i
c2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpB
Y3Rpb24sIGJvb2wgbWFrZVNhZmUpOwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFy
cmF5OjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVj
dWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwg
Y29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlC
ZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhBcnJh
eUNsYXNzKEFycmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdp
dGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBt
YXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBBcnJheU1v
ZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRoQXJyYXlD
bGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNsYXNzIGFy
cmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNw
ZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywg
c3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5
KTsKKyAgICB9CiAKKyAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2FmZSkKLSAg
ICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAgICAgICAg
ICByZXR1cm4gQXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5t
YXlTdG9yZVRvSG9sZShsb2NrZXIpKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5
OjpUb0hvbGU7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gQXJyYXk6OkluQm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFycmF5TW9k
ZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFBy
b2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBt
eUFycmF5Q2xhc3M7Ci0KICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAgICAgICBp
ZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZp
dHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJh
eU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0yMjEsMjMg
KzI0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6
OkFycmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5
Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5
Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlw
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9Ci0gICAg
Ci0gICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNp
b24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAgfQotICAg
IAotICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwg
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
LCBhY3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uID0g
c3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKworICAg
ICAgICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBlZEFycmF5
KGxvY2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25B
bmRNYXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBsYXJnZVR5
cGVkQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTI2LDcg
KzUzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkK
ICAgICAgICAgICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkKICAgICAg
ICAgICAgICYmIHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAgICAgICAg
ICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAgICAgICYm
IGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYmIG1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgPT0gb3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIpIGNvbnN0
CkBAIC01NzksNyArNTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlD
bGFzczsKICAgICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAgICB1aW50
OF90IGNvbnZlcnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0OworICAg
ICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOworICAgICAgICAgICAgdWludDhfdCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA6IDE7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5zaWduZWQg
YXNXb3JkOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggYzg4ZGU0YjIzOWM3Li5hMDBjODUzNzAxMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zODA3
LDggKzM4MDcsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHN0YXRpY19h
c3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRy
aW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAg
ICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIVVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIyLDI2ICszODMxLDMwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7CisgICAgICAg
IE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAg
ICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAo
KnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5
U3RvcmFnZVR5cGU7CkBAIC0zODUzLDEzICszODY2LDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0
aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRo
aXNOb2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7
CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJy
YXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJp
bnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBl
ID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uOWFkNWMy
NzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVu
dW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjM5
LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNl
IENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVl
UmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEzMzksMTEgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9m
ZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAg
ICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5
cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwg
TGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAg
ICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFy
cmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAg
ICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9u
RW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5l
IGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUzNGUuLmZhMTdiZjExNDE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjQwMjg0Y2ZhMjJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdy
aXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgor
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9p
bnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk3LDEw
ICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdD
b2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4u
NTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAg
ICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAg
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXgg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0
dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQx
NkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENs
YW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNw
ZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1Nw
ZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxh
cmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRT
aXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcx
NywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCku
cmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5
TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJy
YXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUt
PmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwor
CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiArMjIxNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBBc3Nl
cnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpA
QCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9k
ZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAgICBOb2RlKiBwcmVw
ZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1v
ZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXko
YXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwot
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAotICAg
ICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2Vs
bFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5k
ZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4uMmQ4NmViNzU3Mzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBA
IC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMg
Y2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMg
ZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRv
IHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNo
LAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmls
ZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZv
cm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBi
dXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFj
a3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKKy8vIGRldGFp
bHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRp
bmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2
YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0
CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggMmJiOWQ0YmVhODAw
Li4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVk
QXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVHlwZWRB
cnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZWRBcnJh
eUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1
MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAg
ICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggMjY5MTcxY2IzNDFkLi40
MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVh
cExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9j
LAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAgICBU
eXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVkQXJyYXlMZW5ndGhJbnQ1Mkxv
YywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9j
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjZkZWRhMDM3
ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTEzMzUsNyArMTMzNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2YWxpZGF0
ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRz
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwgbm9kZS0+
Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUtcHJvZHVjaW5nIG5vZGUuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5
NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAg
ICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5k
ZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2
LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkg
YXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZp
dCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5k
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2UgdG8gcmV0dXJuaW5nIEludDUy
IGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlkYXRpb24gZmFpbHVyZXMuICov
IFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNy
byhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8o
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hl
Y2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRo
IHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tK
U0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1
dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1MDdmMWU4MGFjMC4uOTQ1
MzUzNTZkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAg
IGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5
KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNr
bHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAog
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUs
NyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6
ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90
IHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDE0IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50cHRyX3Q+OjptYXgoKSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0
VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQ
dHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1
bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyAr
MTkwOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcg
KzE5MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Nyw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NzIsNyArMTk3Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg5LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjAwNCw3ICsyMDA1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIxLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDM2LDcgKzIwMzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTMsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIw
NjgsNyArMjA2OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJ
bnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjRmZDU3OTVkMmQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5Kikp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsx
MzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgog
ICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcApp
bmRleCBlM2EyMzlhMzNlMzAuLmQ5ZGFlM2E4MzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwyMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVk
QXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgs
IG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJh
eU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3Ro
LCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkgfHwg
bV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55
LCBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgSW50NTJSZXBVc2UpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSk7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3LDEyICsxNDcsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBP
cEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtu
b3duQ2VsbFVzZSksIHN0b3JhZ2UpOwotICAgICAgICBOb2RlKiBjaGVja0luQm91bmRzID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIGluZGV4
LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworICAgICAgICBOb2RlKiBjaGVja0luQm91
bmRzOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICgob3AgPT0gR2V0
QXJyYXlMZW5ndGgpICYmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5
KCkgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZs
b3cpKSkgeworICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55LCBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93
bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGxlbmd0aC0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgYSBkdW1teSBz
aW5jZSB0aGlzIG5vZGUgZG9lcyBub3QgYWN0dWFsbHkgcmV0dXJuIGFueXRoaW5nLgorICAgICAg
ICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHNJbnQ1Miwg
bV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBJbnQ1
MlJlcFVzZSkpOworICAgICAgICB9IGVsc2UgeworI2VuZGlmCisgICAgICAgICAgICBOb2RlKiBs
ZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgp
LCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgICAgICB9CisjZW5kaWYKKwogCiAgICAgICAgIEFkamFjZW5jeUxp
c3QgYWRqYWNlbmN5TGlzdCA9IG1fZ3JhcGguY29weVZhcmFyZ0NoaWxkcmVuKG1fbm9kZSk7CiAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGVja0luQm91bmRz
LCBVbnR5cGVkVXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uMmU3ZjU2YWExMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjg4LDYgKzI4OCw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAg
Y2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM3Myw2ICszNzQsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI1ZjZhY2E2N2M0OC4uNzQ5ZWY1NDZhYmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzIzOCwyOCArMzIzOCw0MyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUQ29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNvdQogCiB9CiAK
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5k
cyhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUikKIHsKICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQogICAgICAg
ICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmll
dyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZv
ck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlN
b2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXct
Pmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAg
ICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgp
OwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUt
PmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29u
c3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgp
KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKICAgICAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyNlbmRpZgog
ICAgIH0KKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5k
ZXhHUFIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBpbmRl
eEdQUiwgc2NyYXRjaEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBqdW1wKTsKQEAgLTMzODAsMTAgKzMzOTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBz
dG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwog
ICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9y
YWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcDsKICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTMzOTcsNyArMzQxNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBu
b2RlLCBUeXBlZEFycmF5VHlwZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9
IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9ybWF0ID09
IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxvYWRGcm9tSW50VHlwZWRB
cnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIHR5
cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50
VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3BlY3VsYXRl
LCBzaG91bGRCb3gsIHJlc3VsdEZQUik7CkBAIC0zNTU1LDYgKzM1NzIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFn
ZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMp
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJl
ZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMik7CkBAIC0zNTg3LDcgKzM2MDUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHBy
b3BlcnR5KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVl
R1BSICE9IHN0b3JhZ2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0g
anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAo
ZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1LDEwICszNjYzLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5v
ZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7
CiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBi
YXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5n
cHIoKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
czsKICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQ
UlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dp
dGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9h
ZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzY5MCwxMCArMzcx
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1
ZUZQUiA9IHZhbHVlT3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRP
ZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVy
dHksIHNjcmF0Y2hHUFIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsK
ICAgICBjYXNlIDQ6IHsKQEAgLTc5NjcsNyArNzk4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcs
IGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUp
Ci0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3Jh
Z2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VS
ZWcpOwpAQCAtODAzOSw5ICs4MDYxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BS
UmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQ
Uik7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQ
UiAhPSBkYXRhR1BSKTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAK
QEAgLTgwODMsNiArODEwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0
KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBBSSBwcm9t
aXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJ
bnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJS
ZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiArODM3MywxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBtX2ppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
MTExMTksMTAgKzExMTQ5LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9k
ZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5
U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBh
IGludHB0cl90LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXpl
SW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzY3JhdGNoR1BSKTsK
KyNlbHNlCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKyAgICBlbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0
dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXpl
R1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5
IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEz
Niw4ICsxMTE4MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZh
c3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNz
ZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQp
KTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkgKzEx
MjQ0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgbV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkpOworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBU
cnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAt
MTQxNjcsNiArMTQyMjQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXkoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDA3YjU2M2IzNDgzYS4uMDQ5YmNmN2U2ZmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5
ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUq
KTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQ
Uik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2Vu
ZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzMSwxMCArMTQzOCwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhNaW5NYXgoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JU
eXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJZk91
dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5k
c0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSop
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJl
ZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdz
LCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAt
MjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9
OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNw
ZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9h
ZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCku
CisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhl
IGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4uMjJmNmY3Mjc0YWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgp
LmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0g
bm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5
cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5
cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJH
QiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBj
b21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjog
eworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQ
cm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzk4LDYgKzQ0MDksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQ1MkNv
bnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCAzYjM5M2Y1Mjc1ZjcuLmI1YzQ4NDk4M2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
ZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6
ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5
TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5
cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkg
dmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3By
KCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5
QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9m
ZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVk
QXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIp
OworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRh
R1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRh
dGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0
YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShB
Uk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5
dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxs
cHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJN
NjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7Cisg
ICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVz
dWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYgLy8gVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5v
ZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjQsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOworICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
aW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgICAgICBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoLmdwcigpKTsK
ICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwogICAgICAgICAKQEAgLTQz
ODEsNiArNDQ2MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorI2lmIFVTRShBRERSRVNTNjQp
CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNl
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAg
YnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5
SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTg4LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJl
YWs7CkBAIC01NTg5LDcgKzU2ODcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQy
KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRk
NjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFs
dWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgbV9qaXQu
bG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNoZWNrIGFnYWluc3QgMCBoZXJlLCBuZWdhdGl2ZSBpbmRpY2VzIGFy
ZSBjYXVnaHQgYnkgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggcmlnaHQgYWZ0ZXIKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbmRpZgogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQx
KSk7CiAKQEAgLTU3OTAsNyArNTg5NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwg
dDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBtX2pp
dC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVl
ZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMg
YXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0Miwg
dDEpKTsKIApAQCAtNjA0Miw2ICs2MTU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBB
c3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0lu
Qm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zm
c2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFm
MjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAg
ICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIz
YmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApA
QCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9u
OgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYg
KzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1
cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBA
IC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
IGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2Ug
Q2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1
bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNh
OGY1Y2ZjNzk1ZS4uZDg2ZmE2NWU2NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNr
SW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5v
ZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29t
cGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
b3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGlu
Z1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAg
ICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVj
dG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigp
KSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25z
dEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAg
ICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw5ICs0ODc3LDI5IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIo
bV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQs
IHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhlIHJl
c3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBtdXN0
IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorICAgICAgICBz
ZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAgICB9CisKK0lHTk9SRV9DTEFO
R19XQVJOSU5HU19CRUdJTigibWlzc2luZy1ub3JldHVybiIpCisgICAgdm9pZCBjb21waWxlR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBwcmVw
cm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
KSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6
ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsKKyAgICAgICAgc2V0
U3RyaWN0SW50NTIocmVzdWx0KTsKKyAgICB9CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisK
ICAgICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4u
c2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1MDg1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlz
U29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAg
ICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5s
b2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93
LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2
NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsZW5ndGgpKTsKKyNlbHNlCisgICAgICAgICAg
ICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2
NCw2ICs1MTAwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKK0lHTk9SRV9DTEFO
R19XQVJOSU5HU19CRUdJTigibWlzc2luZy1ub3JldHVybiIpCisgICAgdm9pZCBjb21waWxlR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgLy8g
VGhlIHByZXByb2Nlc3NvciBjaG9rZXMgb24gUkVMRUFTRV9BU1NFUlQoVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykpLCB0aGlzIGlzIGVxdWl2YWxlbnQuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNp
emVvZihzaXplX3QpID09IHNpemVvZih1aW50NjRfdCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1
MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgIH0KK0lHTk9SRV9DTEFOR19XQVJO
SU5HU19FTkQKKwogICAgIHZvaWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC01MTA4LDcgKzUx
NTQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gZGVwZW5kIG9uIG91ciB2YWx1ZS4gVXNlcnMg
b2YgdGhpcyBub2RlIGp1c3QgbmVlZCB0byBtYWludGFpbiB0aGF0CiAgICAgICAgIC8vIHdlIGRv
bWluYXRlIHRoZW0uCiAgICAgfQotICAgIAorCitJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4o
Im1pc3Npbmctbm9yZXR1cm4iKQorICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1Migp
CisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNFX0FT
U0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7Cisg
ICAgICAgIC8vIFNpZ24tZXh0ZW5kZWQgdG8gYWxzbyBjYXRjaCBuZWdhdGl2ZSBpbmRpY2VzCisg
ICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2Rl
LT5jaGlsZDEoKSkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbG93U3RyaWN0SW50NTIobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgp
LCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworICAgICAgICAv
LyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBubyB1c2VyIG9m
IHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlz
IG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2UgZG9taW5hdGUg
dGhlbS4KKyAgICB9CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisKICAgICBMVmFsdWUgY29t
cGlsZUdldEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAt
NjAwOCwxMSArNjA2OSwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMy
KGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZCb3VuZHMp
LCB1bnN1cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAg
ICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJU
KFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzQ29uZGl0aW9u
ID0gbV9vdXQuYWJvdmVPckVxdWFsKG1fb3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpLCBsb3dTdHJp
Y3RJbnQ1MihjaGlsZDUpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZDUudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92
ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91bmRzQ29uZGl0aW9u
LCB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7CisKICAgICAgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0luQm91
bmRzLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFs
dWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUodHlwZSkpOwogICAgICAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC04MTY5LDk1ICs4MjM3LDE4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
LSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0
LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJh
eUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xv
d0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2Up
OwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0
LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRT
aXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVk
QXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFu
ZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdElu
dFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAg
ICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFs
dWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFn
ZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9v
dXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykp
KSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9o
ZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihz
aXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1f
b3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVu
dGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxh
dGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwg
cGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBh
cmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2Vu
ZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5j
aG9yKHN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJU
bzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTFZhbHVlIGZh
c3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlU
eXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAg
ICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9
IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJa
ZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZP
Ul9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9U
WVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNl
IFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0
ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFn
ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0g
ICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291
dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9y
RmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5
cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGlu
dWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9p
bnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgIGNhc2UgSW50NTJS
ZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1Bh
dGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxv
Y2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRB
cnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUu
Z2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93
U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAg
ICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTgyNzcsNyArODI2OCwxMDQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShU
eXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAg
IHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJa
ZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShz
aXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxp
bWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdo
Q2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
c21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdo
IHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1i
ZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVm
ZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Cisg
ICAgICAgICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVt
ZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVk
QXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAor
ICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykp
LAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJf
dD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0
b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUs
IHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFs
bG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBz
dG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwK
KyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRB
cnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50
ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIo
c3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRCaXRzLCBC
Mzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAg
ICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAg
ICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAg
ICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0
LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVs
bHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAg
ICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5
PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFf
VklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNF
CisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVl
ID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRW
YWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAg
ICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKHNpemU2NEJpdHMpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbmRpZgorICAgICAg
ICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVz
dWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAgICAgbXV0
YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAg
ICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vU3Rv
cmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAg
ICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICBb
PSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6
eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6
eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVk
QXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0
R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwK
KyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQog
ICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CkBAIC0xNDY1Niw2ICsxNDc0NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBhcmUgMzItYml0
cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0d2VlbiBiYXNl
K2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZhbHVlIGJhc2Us
IExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBBYnN0cmFjdEhl
YXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxpbmdMaW1pdCA9
IDEwOwpAQCAtMTU1OTEsNyArMTU2ODEsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmll
d0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVs
bHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsKKyAgICAg
ICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBObyBuZWVk
IGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVjayBhZ2Fp
bnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9v
dXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaW5kZXhU
b0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVT
aXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hl
Y2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0LDcgKzE1
ODMwLDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUt
PmRhdGFWaWV3RGF0YSgpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAg
c3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFu
KGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBt
X291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d19sZW5ndGgpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY29t
cGFyaXNvbiBvZiBpbmRleCB0byAwLCB0aGUgY2hlY2sgYWdhaW5zdCBsZW5ndGggY2F0Y2hlcyB0
aGF0IGNhc2UKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQu
bG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoKSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAg
ICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0
KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzMzOCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAj
aWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRp
dmUpIHsKKyNpZiBVU0UoQUREUkVTUzY0KQorICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNl
bHNlCiAgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApp
bmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBub25O
ZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlv
bjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikg
eyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZl
KExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIo
YmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNl
LCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQp
OyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RF
cXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRy
aW5zaWNFbWl0dGVyLmNwcAppbmRleCA1Yzc2NWVkOTc2NTAuLjg5NTY4ZDQ2MzBmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODYs
MjMgKzg2LDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNp
Y0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJp
bnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwg
c3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50
MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0
aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVH
UFIpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKQorICAgICAgICAgICAgaml0
LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsK
KyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQ
Uiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+
IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIHdl
IFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50
MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVHUFIsIEltbTMyKGxvZ0VsZW1lbnRT
aXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNo
aWZ0IGhlcmUgc2luY2Ugb24gQUREUkVTUzMyIHBsYXRmb3JtcyBUeXBlZEFycmF5cyBjYW5ub3Qg
aGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgorICAgICAgICAgICAgaml0
LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsK
ICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsK
KyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMzMsOCArMTQyLDEyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1p
dEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIGpp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAg
ICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3Jh
dGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJbnQzMih2
YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkzNyw4IEBA
IHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAg
ICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPnRy
eVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9m
aWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAg
LTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMy
SW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5n
KGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
KSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmpl
Y3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBB
cnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkg
PCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAgICAgICAg
ICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCkt
PnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlz
IHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAogICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlw
dC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYw
MDQ0ZS4uZTc2ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5l
IE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQ
VShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTY4
MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsK
ICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAo
b2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0
ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0
T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3MCwxMyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdl
dE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJ
bmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNr
bHkoaSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZt
LCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+
dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
KSkKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChv
YmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAg
ICBMTElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI0MjFhN2ZhNDEwZS4uNmNkYmQ4
ZGUzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNv
bnN0IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJs
ZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdF
X1RZUEVEX0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0
ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29u
c3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3Ig
QVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5UHJvZmls
ZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxv
YWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVu
ZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5
VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBpbmRleCBp
cyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21hY3JvIGdl
dEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERv
dWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3Qg
bGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRv
IHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFz
ZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwxMSArMTMy
NiwyNiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdl
dEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBj
b25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9h
ZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlh
ZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlT
CisgICAgICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxl
bmd0aAorICAgICAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2Vd
LCBsZW5ndGgKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAg
ICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVu
dGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVz
ZWQgb24gb3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBpZiBMQVJHRV9UWVBFRF9B
UlJBWVMKKyAgICAgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5n
dGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpYWVxIGluZGV4
LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVu
ZAorICAgIGVuZAorCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIGJxYmVxIGlu
ZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFsbFR5cGVkQXJyYXkKKyAgICAgICAg
c2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6CiAgICAgZW5kCiAKICAgICBs
b2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFzZV0sIHQzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IDUwZDVkYmRmNjAyYS4uNGU3MGY4YjE1ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MTYyNCw2ICsxNjI0LDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGRpc3Bh
dGNoKCkKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAg
IGNyYXNoKCkKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBnZXQobV9iYXNl
LCB0MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRh
ZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE2NjksNyArMTY3Myw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9y
YWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRB
cnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0
TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRl
eCBkODRiNmVhZDM3ZmQuLjAyOTIwY2E4NDI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MTMsNiArMTcx
MywxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmaW5pc2hHZXRCeVZhbChz
Y3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZW5kCiAKKyAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJy
YXkoKQorICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgICAgIHN0b3JlYiAx
LCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUgKyBBcnJheVByb2ZpbGU6Om1f
bWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNyYXNo
KCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBn
ZXQobV9iYXNlLCB0MikKQEAgLTE3MjMsNiArMTczMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICMgVGhpcyBzaWduLWV4
dGVuc2lvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdldEJ5VmFsVHlwZWRBcnJheSB3
b3JrIGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAgICAgc3hpMnEgdDEsIHQxCiAKICAgICBsb2Fk
Q2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCkBA
IC0xNzYzLDcgKzE3NzIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNo
KCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgLm9wR2V0QnlW
YWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4YTFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcg
QEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2ln
YWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7
CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAgICAg
LCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUluQnl0ZXMo
c2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJD
b250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJhbnNmZXJU
bygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29u
dGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMp
CiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsxMDksMjEg
QEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5CeXRlcyA9
IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShzaXplX3Qg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhl
IHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRv
dGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90
YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1B
WF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0gbnVtRWxl
bWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXpl
SW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVu
dHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXpl
ID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAgICAg
ICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2Nh
dGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0
IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRy
eU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRh
ID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRh
dGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNl
dCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBtZW1z
ZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNpemVJ
bkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKICAg
ICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9y
KCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFy
ZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQob3Ro
ZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsKICAg
ICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0g
dHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yMDgs
NyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVzZWQgZnJv
bToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9y
eS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5IGNvbWUK
IC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVkKCkgfHwg
KEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAgcmV0dXJu
IGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
Ynl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNlIGEgbmV3
IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQgYWNjZXNz
ZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3VsZCBhbGxv
Y2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
RnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAg
IGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRh
KSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5
LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRl
cyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVh
dGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVy
b0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRy
eUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJh
eUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVM
ZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwx
NyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUlu
dGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQog
Ci1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3
IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUlu
dGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNl
LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291cmNl
KTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShj
b250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0
aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAg
ICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6
YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7
CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwg
cG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZl
cjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCitz
aXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXpl
X3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVm
dCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShk
b3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9
CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QK
K3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0g
ICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgY3Vy
cmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBp
bmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRl
eCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBz
bGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRl
eCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90
IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0g
YmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4g
OiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0KQog
ICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJhLi5l
YWNjYTJjMjMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVk
VGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSk7CisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAz
MikKKyNlbHNlCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3QpID09IHNpemVvZih1aW50MzJf
dCkpOworLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUg
aW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJp
dCBwbGF0Zm9ybXMuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0IHNob3VsZCBp
biB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIpIGlmIGFueW9u
ZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZmZmZ1CisjZW5k
aWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzYwLDcgQEAgdXNp
bmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiB7
CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBTaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKTsKICAgICAK
ICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChtX3Np
emVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgRGF0
YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47
CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIHNp
emVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVz
LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFycmF5QnVm
ZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQot
ICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsg
fQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7
IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0K
ICAgICAKQEAgLTk0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0aWFsaXpl
CiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHZvaWQg
dHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAg
ICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4ICsxMTQs
MjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0cjxTaGFy
ZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5
dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXIg
OiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0
aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRl
KEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9p
ZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBz
aXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsK
ICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25l
ZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3RoKCkgY29u
c3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFyaW5nTW9k
ZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBwdWJsaWM6CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBi
ZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFy
cmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90IGVu
ZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQg
dW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2Fn
ZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qg
dm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMm
JiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRl
eChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBW
YWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOworICAgIGlubGlu
ZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0YXRpYyBpbmxp
bmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3QgcmlnaHQp
OwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzIwMSw3IEBA
IGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250
ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBAQCBib29sIEFy
cmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6OmdjU2l6ZUVz
dGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQg
dG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcuCi0gICAg
cmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVMZW5n
dGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3RoKCk7CiB9
CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLjQ3MzcyMjc0
NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5dGVPZmZz
ZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAgICAgICAs
IG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChi
eXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgo
Ynl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5dGVMZW5n
dGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjA5OTk1NGI4NjUzMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRB
cml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1
cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAgICAvLyBIZWxw
ZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBzdGF0aWMgYm9v
bCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBz
aXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGJ5
dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChl
bGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQg
YSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFu
Z2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZm
ZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNp
emVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5n
ZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJvb2wgdmVy
aWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewot
ICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAo
Ynl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0
KSAvIHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3Ro
IC0gYnl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKICAgICAg
ICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFy
cmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNl
dFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAg
ICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFC
eXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJ
bXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRl
T2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9m
ZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQg
Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVu
c2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxl
bmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVt
YmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9m
ZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2
aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zm
c2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0g
ICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNl
dCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlC
eXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1F
bGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAt
IGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQg
PSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkg
LyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAg
ICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVt
ZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNl
dCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZz
ZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5z
aWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQp
IC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVja2VkU2l6ZSBhZGp1c3RlZE9mZnNldCA9ICpvZmZz
ZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAgICAgICAgYWRqdXN0
ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRqdXN0ZWRPZmZzZXQu
aGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBidWZmZXIuYnl0ZUxl
bmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNldC52YWx1ZSgpOwor
ICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAt
ICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihy
ZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBt
X2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHVpbnQ2
NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZzZXQg
OiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVk
IG1fYnl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNp
bmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIn
cyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
IGFycmF5LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8
IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxv
dworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgYXJyYXktPmJ5
dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFk
ZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VBZGRy
ZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBk
YXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3
OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBz
aXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAg
ICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNt
YWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVpbnQ4X3QqIGJhc2UgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsg
Ynl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVm
ZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVM
ZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0
KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAo
IWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRl
TGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsK
ICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5n
dGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1Jh
bmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9v
bCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVf
dCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkK
LSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewot
ICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5n
dGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90
KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNl
dChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgK
LSAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9m
ZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBz
dGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAw
OwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChl
bmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQg
PCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
bmQgLSBzdGFydCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5
QnVmZmVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0
b21pY3NPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAKaW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIw
LDcgQEAgc3RhdGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nl
c3NJbmRleFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VS
VCh0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9N
QVgpKTsKKwogICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkp
IHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3Mg
aW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBk
Y2MyZjUwNjRhZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLURhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
Ynl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0
ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5n
dGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIx
NDQuLjM0MDI2NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmll
dy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcg
ZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFW
aWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5
VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2ln
bmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisg
ICAgVCBnZXQoc2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAo
b2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQo
dW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCisgICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxh
dGUgZ2V0PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0
YXR1cyB8fCAqc3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBU
IHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2
b2lkIHNldChzaXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAg
ICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJy
YXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRl
eCBiZTdlNmMwNTM0ZmEuLjViZTgxNjVmNzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMzLDI0IEBA
IG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVy
aWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7
CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJl
c3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wg
c2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50
LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldFJhbmdlSW1wbCgKICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLApAQCAtNTgsMzkg
KzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVk
IG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wgemVyb1JhbmdlKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBjb3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNl
dCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwgY291bnQgKiBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6
ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFj
aGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgo
KSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwog
ICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChzaXplX3Qg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRh
KClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0
YSgpW2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAg
Ym9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQs
IHNpemVfdCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UmFuZ2VJbXBsKAogICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBAIC05OCwxOCArOTgsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zm
c2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgK
LSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8g
Y2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7
CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGNvdW50LCB0
aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAg
ICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJl
dHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVibGljOgogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uZjFhNzZkZmQzYmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBB
cnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
YXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBA
IC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0
cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQg
PSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcg
QEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsK
QEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRl
KFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwot
ICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFT
U0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlw
ZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4g
dHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjNkOGU0NzQ1
MDY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLAorICAg
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVs
ZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1
cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwxOCBAQCBK
U0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4
dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQg
YXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWRTaXplIHNpemUg
PSBsZW5ndGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZS5oYXNPdmVy
Zmxvd2VkKCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICog
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBWZWN0b3JU
eXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSksIGxlbmd0
aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwogICAgIGlmICghbV92ZWN0
b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkKICAgICAgICAg
bWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXpl
KTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7
CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0gT3ZlcnNp
emVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIs
Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQog
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkK
QEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4
dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHNpemVfdCBieXRlT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVy
ZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUpCkBA
IC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpTVHlw
ZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5cGVd
OwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0Citz
aXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAgIHJl
c3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsK
KyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVja2Vk
IGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNoZWNr
IHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVtZW50
U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmll
dzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlCdWZm
ZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxl
bmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAg
ICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0zMTUs
OCArMzIyLDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBv
c3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hh
cmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSB0aGlz
LT5ieXRlT2Zmc2V0KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAg
IHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlw
ZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uMTRmYTViYmE1YTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6
ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmYXN0U2l6ZUxpbWl0
ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxW
ZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVp
bnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIHNpemVfdCBz
aXplT2Yoc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOwor
ICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihz
aXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYsMjUg
KzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIEluaXRpYWxp
emF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAgICAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSos
IHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9k
ZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXpl
LCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAgICAvLyBU
aGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQncyB1c2Vk
IGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3Ry
dWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBDb25zdHJ1
Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAog
ICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAg
ICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgICAgICAKICAgICAgICAg
ZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFn
KTsKKyAgICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmll
d1RhZyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX3N0cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAg
IHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNp
emVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFy
cmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZs
eSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBA
IC0xNjIsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwot
ICAgICAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAg
ICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJm
bHk7CiAgICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkKiB2ZWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkpOyB9CiAg
ICAgdm9pZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Zl
Y3Rvci5nZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0
KCk7Ci0gICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJy
ZW50bHkoKTsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVPZmZzZXQoKTsKKyAgICBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xl
bmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJh
eUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1f
dmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAg
ICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4IDFkMDcy
YjcxYWNiNy4uZDg1YjMyODMwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTksNyArOTksNyBA
QCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQog
ICAgIHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVj
dG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVy
LT5kYXRhKCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlbHRhKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihkZWx0YSk7
CiAgICAgaWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAgLTExMCwxNCAr
MTEwLDE0IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0
SW1wbCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIEpTQXJyYXlC
dWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKK2lubGluZSBzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCB1bnNp
Z25lZD4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgc2l6ZV90PigpOwog
fQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBKU0Fy
cmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5
dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+Pigp
OworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0Fy
cmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAwODY3ZGNiZWFkODEuLmU4
YTRlN2E2MjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25tb3ZhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtMjk4LDYgKzI5OSw3IEBAIHB1YmxpYzoKICAg
ICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0
b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvSW5kZXgoSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OworICAgIHNpemVfdCB0
b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkg
Y29uc3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAppbmRleCBmN2E5ZTcwZWQ2ZTAuLjhmNWMwNzE5ODg2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxNCArNjks
NDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJp
bmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkgeworCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKwor
ICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwg
IiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGluZSBzaXplX3Qg
SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gYXNJ
bnQzMigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsK
KworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
KSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2Ui
KSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBBbGwgb2YgdGhpcyBtb25z
dHJvc2l0eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0IG9uIDE8PDMyLgorICAg
IHNpemVfdCBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1dE9mZnNldCA9IDA7Cisg
ICAgc2l6ZV90IGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7
CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4KSkgeworICAgICAgICBv
dXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZzZXQgPSBpbnQzMk1heDsK
KyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRwdXRPZmZzZXQgKyBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0M6OnRvSW50MzIoZCAtIGlu
cHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2lu
dGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNE
YXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQs
IEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRh
Vmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6
ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5hNWU3OGM0NjliMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYsMTQgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUo
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8g
RHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3Qg
aW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24g
d2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBK
U09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmpl
Y3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBB
cnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
cjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmlu
ZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSAr
MTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9m
IERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29s
IGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBA
IC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlz
RGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlm
IChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBl
bGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmll
dyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5
dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBk
YXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0g
ICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
Pj0gMykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJh
eUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5n
dGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0
aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMg
YWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi5lYTFlZjljMTNm
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZl
RnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
Q2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVy
ZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20g
SlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAg
ICBzaXplX3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMg
dGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UK
Ky8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdv
cmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1
YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0
YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFt
ZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlw
ZWRWZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAg
ICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5C
b3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
OwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4
ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2Ug
dGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVy
dFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNp
emVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBt
X2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVp
Y2tseTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1
aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZl
Y3RvcigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNp
Z25lZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJ
bmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBp
LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkg
PCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB2b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAg
IHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlw
ZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9i
YWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5h
dGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xv
YmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxF
bGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFs
dWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRh
cHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4g
dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxB
ZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5
OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2Fu
QWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
CiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAm
JiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJm
bG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICBy
ZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsK
ICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJl
dHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0
aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxP
YmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFs
c2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJv
b2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2ln
bmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5
cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qg
b2Zmc2V0LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENv
cHlUeXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAg
LTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNz
ZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlw
ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCos
IHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAor
ICAgICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAK
ICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQg
QXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0
OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAg
ICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFO
KGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uMzM2ZjFhZWUzZjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0Myw3ICsxNDMs
NyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5l
ZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3Vt
ZW50LCBzaXplX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoT3B0KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAg
IGlmIChsZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsK
ICAgICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG8KICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkg
b2YgdGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmpl
Y3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICBzaXplX3QgbGVuZ3RoOwogICAgICAg
ICBKU0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChp
c1R5cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkp
IHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUu
dG9JbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gZmly
c3RWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5n
dGgpKTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAg
fQogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAx
KSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1w
bChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFsdWUgaXMg
cHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAgICAgICAg
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAg
ICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAg
ICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNz
OjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDog
Imxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVHlwZWRB
cnJheUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIz
ODc5MmQxMC4uYTNkZGMxZjgzNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5j
bHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2
LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJl
LCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0
aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksMTcgKzEwMCwxNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVfdCBzaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBpZiAo
IUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNl
dCwgbGVuZ3RoLCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJS
YW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIGVsZW1lbnRTaXplKSkgewog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZl
cmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkpIHsKKyAgICBpZiAoIUFy
cmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBlbGVt
ZW50U2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25l
ZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTQ1LDcgKzE0Niw3IEBA
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBl
KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQg
b3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVf
dCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3
ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRo
U3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlz
dGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXpl
ICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5
VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAg
ICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRv
cj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZh
bHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8g
Tm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVy
ICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZl
VmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0
ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5
LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJh
bnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewog
ICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVy
dFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZl
VmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxl
bmd0aDsgaS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBz
ZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ld
KTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQg
b2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBz
aXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChj
aS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAg
ICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUg
dGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1
c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihv
YmplY3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgo
KSk7CiAgICAgICAgIApAQCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBldmVyIGNh
bGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZzZXQpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkp
OwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3cs
IHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9v
bCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAg
ICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vz
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBiNjNiNjhh
MjViNDUuLjE5ODYzOTBkOGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNW
YWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQcm9maWxl
OwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50ZXJuYWxG
dW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7
CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5T
ZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldElu
ZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJ
bmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9v
bCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKLSAgICBK
U1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OworICAg
IEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJyYXlQcm9m
aWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAg
Ci0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKworICAg
IC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVM
YXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdldEluZGV4
UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIp
IGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMt
PmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNhbkdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0g
ICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAg
ICB2b2lkIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nl
c3MKKyAgICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSop
OworICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0
Y2ggKGluZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZ
UEVTOgotICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
aSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkoaSwgdiwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFM
TF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFC
TEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05U
SUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9J
TkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IXYuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNv
bnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5H
X1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+
Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAg
ICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAg
ICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7
CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7
CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWlu
Z1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAg
aWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0
ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAg
ICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHkt
PnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZl
Y3Rvckxlbmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFn
ZSgpLT5tX3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0Nv
cHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZs
eS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT5tX3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhR
dWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggOGZmYzVmOTM4MjJmLi43
NjBhOWE5ZTJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAogICAgIH0K
IH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2Jq
ZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0jZGVmaW5l
IENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlw
ZSA6XAotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJyYXkgKj4o
dGhpcyktPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUp
Ci0jdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGlm
IChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVBy
b2ZpbGUpCisgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7CisjZW5kaWYKIAotaW5saW5l
IEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQg
aSkgY29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FS
UkFZX1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEy
LDcgKzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAg
fQogfQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJy
YXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQorewor
ICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3Jh
Z2UoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3Rvcltp
XTsKKyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOwor
ICAgIGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsK
KyAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdl
LT5zZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRy
eVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFy
cmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAgIGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFs
bFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJh
eVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNl
KQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBk
byB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBj
YXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBq
c0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRB
cnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAg
IFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4g
dHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RB
VEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9U
WVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQ
dXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4
OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVj
dCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAg
ICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5k
ZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0K
IAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRl
eChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFn
ZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5k
ZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMu
aD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JV
RkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50
MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdjZDU5NmY4NzJlYy4uMjBhNjgwZmM0MjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtOCw2ICs4LDIxIEBACiAgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0RlYnVnLnlhbWw6CiAgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoK
IAorMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisg
ICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0
NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgTWFkZSBz
b21lIG9mIENoZWNrZWRBcml0aG1ldGljIGNvbnN0ZXhwciwgYW5kIGFkZGVkIGlzU3VtU21hbGxl
clRoYW5PckVxdWFsIHNpbmNlIGl0IGlzIGEgY29tbW9ubHkgdXNlZCB0ZXN0IGluIEFycmF5QnVm
ZmVyIGFuZCBlYXN5IHRvIGdldCB3cm9uZyBpbiB0ZXJtcyBvZiBvdmVyZmxvdy4KKworICAgICAg
ICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjppc0luQm91bmRzKToK
KyAgICAgICAgKFdURjo6Y29udmVydFNhZmVseSk6CisgICAgICAgIChXVEY6OmlzU3VtU21hbGxl
clRoYW5PckVxdWFsKToKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFy
Z2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28g
aW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0
byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9u
IHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFs
dWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTks
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291
cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4K
ICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6
bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAg
IHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNp
c2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4u
CiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2ln
biwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAg
ICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkg
Z3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+
IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZh
bHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUg
Y29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29s
IGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIg
Ym9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAg
aWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+
IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQ
cm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sK
KyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOwor
ICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsK
K30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQs
NCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3Vu
ZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93
czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApp
bmRleCA5YzlmODBlM2ZkMWIuLjY0NmU5YmVhNThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0x
NDEsNiArMTQxLDE1IEBACiAjZGVmaW5lIFVTRV9KU1ZBTFVFMzJfNjQgMQogI2VuZGlmCiAKKy8v
IEZJWE1FOiB0aGlzIHNob3VsZCBpbnN0ZWFkIGJlIGJhc2VkIG9uIFNJWkVfTUFYID09IFVJTlQ2
NF9NQVgKKy8vIEJ1dCB0aGlzIHJlcXVpcmVzIGluY2x1ZGluZyA8Y3N0ZGludD4gYW5kIFBsYXRm
b3JtLmggaXMgaW5jbHVkZWQgaW4gYWxsIGtpbmQgb2Ygd2VpcmQgcGxhY2VzLCBpbmNsdWRpbmcg
bm9uLWNwcCBmaWxlcworLy8gQW5kIGluIHByYWN0aWNlIENQVShBRERSRVNTNjQpIGlzIGVxdWl2
YWxlbnQgb24gYWxsIHBsYXRmb3JtcyB3ZSBzdXBwb3J0ICh2ZXJpZmllZCBieSBzdGF0aWNfYXNz
ZXJ0cyBpbiBBcnJheUJ1ZmZlci5oKQorI2lmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9M
QVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FSUkFZ
UyAwCisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAvKiBGSVhNRTogRW5hYmxlIEJJR0lO
VDMyIG9wdGltaXphdGlvbiBhZ2FpbiBhZnRlciB3ZSBlbnN1cmUgU3BlZWRvbWV0ZXIyIGFuZCBK
ZXRTdHJlYW0yIHJlZ3Jlc3Npb25zIGFyZSBmaXhlZC4gKi8KIC8qIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ3NzcgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZmFhZGM3YTNj
N2YuLmFiYWUzYzAzZmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMTU1LDYgKzE1NSw0NiBAQAogICAgICAg
ICAqIHBsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpi
dWlsZFVzZXJBZ2VudFN0cmluZyk6CiAKKzIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0ICA8cm1v
cmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1Mwor
ICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6
dWtpLgorCisgICAgICAgIFNvbWUgcGFydHMgb2YgV2ViQ29yZSB1c2UgVHlwZWRBcnJheXMsIGFu
ZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBtYWRlIHRoZSBsZW5ndGgoKSBmdW5jdGlvbiBvbiB0
eXBlZCBhcnJheXMgcmV0dXJuIFVDUFVSZWdpc3RlciBpbnN0ZWFkIG9mIHVpbnQzMl90LgorICAg
ICAgICBNb3N0IGZpeGVzIHdlcmUgdHJpdmlhbCwgdGhlIG9ubHkgZXhjZXB0aW9uIGlzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAsIHdoZXJlIEkgaGFkIHRvIGluY3JlbWVudCB0aGUgdmVyc2lv
biBudW1iZXIsIGFzIEFycmF5QnVmZmVyIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgbm93IHdyaXRl
L3JlYWQgdGhlaXIgbGVuZ3RoIGluIGEgNjQtYml0IGZpZWxkIChhbmQgc2FtZSBmb3IgdGhlIGJ5
dGVPZmZzZXQgb2YgQXJyYXlCdWZmZXJWaWV3KS4KKworICAgICAgICBJIGFsc28gaGFkIHRvIGFk
ZCBhIHRlc3QgaW4gUGl4ZWxCdWZmZXIuY3BwIHRoYXQgdGhlIHNpemUgb2YgdGhlIEFycmF5QnVm
ZmVyIGl0IHdpbGwgdHJ5IHRvIGFsbG9jYXRlIGlzIDwgSU5UMzJfTUFYLgorICAgICAgICBPdGhl
cndpc2UsIHRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxv
YXRzL3NoYXBlLW91dHNpZGUtaW1hZ2VkYXRhLW92ZXJmbG93Lmh0bWwgd2hpY2ggY2hlY2tzIHRo
YXQgdmVyeSBsYXJnZSBpbWFnZXMgYXJlIHByb3Blcmx5IHJlamVjdGVkIHdpdGhvdXQgY3Jhc2hp
bmcsIHdvdWxkIHRpbWVvdXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUgY29kZSBp
cyBhbHJlYWR5IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBJIGlt
cGxlbWVudGVkIG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlGcm9t
Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5E
YXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJWaWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEltYWdlQml0bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlckltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlld0ltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZp
ZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorICAgICAgICAq
IGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisKIDIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjI4
NDIzMCwgbXkgbGFzdCBmaXhlcyB0byB0aGUgd2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVhayB0ZXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApp
bmRleCBjYjdlODRkNDUzODMuLmIxOGQ4ZmQ2YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9hdDMyQXJy
YXk+JiYgZGVzdGluYXRpb24sCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQog
ICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0
aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3QgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVy
T2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCks
IGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEo
KTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29w
eVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJjZSwgdW5zaWduZQogICAgIGlmIChi
dWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAg
ICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgc2l6ZV90
IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWlu
KHNvdXJjZS5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBz
cmMgPSBzb3VyY2UtPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uZDUzYjllNjQ0
ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlci5jcHAKQEAgLTE5Niw4ICsxOTYsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6
OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAg
ZG9GRlRBbmFseXNpc0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxp
bmVhciBtYWduaXR1ZGUgdG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNpZ25lZCBz
b3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0
aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7Cisg
ICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKKyAgICBz
aXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAg
IHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uTGVuZ3Ro
KTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUgcmFuZ2VTY2Fs
ZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAxIC8gKG1fbWF4
RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91YmxlIG1pbkRlY2li
ZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjgsOSBAQCB2b2lkIFJlYWx0aW1lQW5h
bHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0aW5hdGlvbkFy
cmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgdW5zaWduZWQg
ZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4o
ZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0
aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6
ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6
ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGJv
b2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZl
clNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBBU1NFUlQo
aXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Myw5IEBAIHZvaWQgUmVhbHRpbWVBbmFs
eXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVkIGZmdFNpemUg
PSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUs
IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0
aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlz
LT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3Rp
bmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5w
dXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYm
IG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRC
dWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uMTgyMjFlMzVhYTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XYXNtTW9k
dWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Miw4ICszNDMsOSBAQCBzdGF0aWMgdW5zaWduZWQg
Y291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVyc2lvbiA3LiBh
ZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNp
b24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUu
CiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlQml0bWFwIGNvbG9yIHNwYWNl
LgorICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVuZ3RoIChhbmQgb2Zmc2V0cykgb2YgQXJy
YXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgZnJvbSAzMiB0byA2NCBiaXRzCiAgKi8K
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSAxMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBUZXJt
aW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdQb29s
VGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb25JbmRleFByb3BlcnRp
ZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMzk5LDcgKzQwMSw3IEBAIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IE9iamVjdFJl
ZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+
CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1
ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90
PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5QnVmZmVyVmll
d1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0X3Q+IDxieXRlTGVu
Z3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCiAgKiAgICB8IENy
eXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRle3dyYXBw
ZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0CkBAIC00NjMs
NyArNDY1LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0g
MHg4MDAwMDAwMDsKICAqICAgIE9iamVjdFJlZmVyZW5jZVRhZyA8b3BJbmRleDpJbmRleFR5cGU+
CiAgKgogICogQXJyYXlCdWZmZXIgOi0KLSAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWlu
dDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVu
Z3RoOnVpbnQ2NF90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgogICogICAgQXJyYXlCdWZmZXJU
cmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICBTaGFyZWRBcnJheUJ1ZmZlclRhZyA8
dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAtOTk4LDggKzEwMDAsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBh
cnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXJWaWV3KHZtLCBvYmop
OwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5i
eXRlT2Zmc2V0KCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5
QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVPZmZzZXQg
PSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKTsKKyAgICAgICAgd3JpdGUoYnl0ZU9mZnNl
dCk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVM
ZW5ndGgoKTsKKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CiAgICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXctPnBvc3NpYmx5U2hhcmVkQnVm
ZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgICAgIGNvZGUgPSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwpAQCAtMTEzMSw4ICsxMTM1
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYnVmZmVy
LT5yZXNvbHV0aW9uU2NhbGUoKSkpOwogICAgICAgICB3cml0ZShidWZmZXItPmNvbG9yU3BhY2Uo
KSk7CiAKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgQ2hlY2tlZFVpbnQzMiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgaWYgKGJ5dGVMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICBj
b2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAg
ICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBieXRlTGVuZ3RoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKQpAQCAtMTI2Myw4ICsxMjcyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
d3JpdGUoSW1hZ2VEYXRhVGFnKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0aCgp
KTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAg
ICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShk
YXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOworICAgICAgICAgICAg
ICAgIENoZWNrZWRVaW50MzIgZGF0YUxlbmd0aCA9IGRhdGEtPmRhdGEoKS5sZW5ndGgoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJv
cjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHdyaXRlKGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGEtPmRhdGEoKS5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgICAgICAgICAgICAgIHdyaXRl
KGRhdGEtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CkBAIC0xMzExLDggKzEzMjUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRh
Zyk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0g
ICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVm
ZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgp
OwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKG9iai0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkgewpAQCAtMTUwMiw3
ICsxNTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4obV9idWZmZXIs
IGkpOwogICAgIH0KIAotICAgIHZvaWQgd3JpdGUodW5zaWduZWQgbG9uZyBsb25nIGkpCisgICAg
dm9pZCB3cml0ZSh1aW50NjRfdCBpKQogICAgIHsKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4o
bV9idWZmZXIsIGkpOwogICAgIH0KQEAgLTIzOTEsNyArMjQwNiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZCh1bnNpZ25lZCBsb25nIGxv
bmcmIGkpCisgICAgYm9vbCByZWFkKHVpbnQ2NF90JiBpKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHJlYWRMaXR0bGVFbmRpYW4oaSk7CiAgICAgfQpAQCAtMjU1NSw5ICsyNTcwLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVm
ZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIExlbmd0aFR5cGU+CisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXJJbXBsKFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQogICAgIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoOwor
ICAgICAgICBMZW5ndGhUeXBlIGxlbmd0aDsKICAgICAgICAgaWYgKCFyZWFkKGxlbmd0aCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChtX3B0ciArIGxlbmd0aCA+IG1f
ZW5kKQpAQCAtMjU2OSwxNSArMjU4NSwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVl
JiBhcnJheUJ1ZmZlclZpZXcpCisgICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5
QnVmZmVyPiYgYXJyYXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTAp
CisgICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJfdD4oYXJyYXlC
dWZmZXIpOworICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVySW1wbDx1aW50NjRfdD4oYXJy
YXlCdWZmZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZW5ndGhUeXBlPgor
ICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlld0ltcGwoVk0mIHZtLCBKU1ZhbHVlJiBhcnJheUJ1
ZmZlclZpZXcpCiAgICAgewogICAgICAgICBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgYXJyYXlCdWZm
ZXJWaWV3U3VidGFnOwogICAgICAgICBpZiAoIXJlYWRBcnJheUJ1ZmZlclZpZXdTdWJ0YWcoYXJy
YXlCdWZmZXJWaWV3U3VidGFnKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
dWludDMyX3QgYnl0ZU9mZnNldDsKKyAgICAgICAgTGVuZ3RoVHlwZSBieXRlT2Zmc2V0OwogICAg
ICAgICBpZiAoIXJlYWQoYnl0ZU9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHVpbnQzMl90IGJ5dGVMZW5ndGg7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZUxlbmd0
aDsKICAgICAgICAgaWYgKCFyZWFkKGJ5dGVMZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJPYmogPSBhc09iamVjdChyZWFkVGVy
bWluYWwoKSk7CkBAIC0yNTg3LDcgKzI2MTEsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25l
ZCBlbGVtZW50U2l6ZSA9IHR5cGVkQXJyYXlFbGVtZW50U2l6ZShhcnJheUJ1ZmZlclZpZXdTdWJ0
YWcpOwogICAgICAgICBpZiAoIWVsZW1lbnRTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNpemU7Cisg
ICAgICAgIExlbmd0aFR5cGUgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOwogICAg
ICAgICBpZiAobGVuZ3RoICogZWxlbWVudFNpemUgIT0gYnl0ZUxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMjYzNCw2ICsyNjU4LDEzIEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZpZXcoVk0mIHZtLCBKU1ZhbHVl
JiBhcnJheUJ1ZmZlclZpZXcpCisgICAgeworICAgICAgICBpZiAobV92ZXJzaW9uIDwgMTApCisg
ICAgICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8dWludDMyX3Q+KHZtLCBh
cnJheUJ1ZmZlclZpZXcpOworICAgICAgICByZXR1cm4gcmVhZEFycmF5QnVmZmVyVmlld0ltcGw8
dWludDY0X3Q+KHZtLCBhcnJheUJ1ZmZlclZpZXcpOworICAgIH0KKwogICAgIGJvb2wgcmVhZChW
ZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNF
bXB0eSgpKTsKQEAgLTMzNDUsNyArMzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gY29s
b3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyOwogCi0gICAgICAgIGlmICghcmVhZChzZXJpYWxpemF0
aW9uU3RhdGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNhbEhlaWdodCkg
fHwgIXJlYWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAhcmVhZChjb2xv
clNwYWNlKSkgfHwgIXJlYWRBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikpIHsKKyAgICAgICAgaWYg
KCFyZWFkKHNlcmlhbGl6YXRpb25TdGF0ZSkgfHwgIXJlYWQobG9naWNhbFdpZHRoKSB8fCAhcmVh
ZChsb2dpY2FsSGVpZ2h0KSB8fCAhcmVhZChyZXNvbHV0aW9uU2NhbGUpIHx8IChtX3ZlcnNpb24g
PiA4ICYmICFyZWFkKGNvbG9yU3BhY2UpKSB8fCAhcmVhZEFycmF5QnVmZmVySW1wbDx1aW50MzJf
dD4oYXJyYXlCdWZmZXIpKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZiNzU3YTRkNzRmNi4uN2U0OWE5ZTcz
MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBpZiAoaGFzQXJyYXkpIHsKICAg
ICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXktPnNpemUoKSk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byAmYXJyYXlCdWZmZXJD
b250ZW50cyA6ICptX2FycmF5QnVmZmVyQ29udGVudHNBcnJheSkgewotICAgICAgICAgICAgZW5j
b2RlciA8PCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CisgICAgICAgICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJ
bkJ5dGVzKCkpOwogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyQ29udGVudHMuZGF0YSgpKSwgYXJy
YXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpLCAxKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTE5OSw5ICsxOTksMTIgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAgICAgICBhcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4o
KTsKICAgICAgICAgd2hpbGUgKGFycmF5TGVuZ3RoLS0pIHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGJ1ZmZlclNpemU7CisgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplOwogICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRCdWZmZXJTaXplID0g
YnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGlmIChjaGVja2VkQnVmZmVyU2l6ZS5oYXNPdmVyZmxv
d2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90Pihi
dWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjEyLDcg
KzIxNSw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgICAgICAgICAgR2lnYWNhZ2U6
OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheS0+YXBwZW5kKHsgYnVmZmVyLCBidWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0
aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgY2hlY2tlZEJ1ZmZlclNpemUsIEFycmF5QnVmZmVy
OjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3IoKSB9KTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5
MWQ2ODZkLi41NTllYmNjNDhjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNjgsNyArNjgsOSBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoV2ViQ29yZTo6QmxvYiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iu
c2l6ZSgpOwogICAgIGlmICghYnl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJy
YXlCdWZmZXI6OmNyZWF0ZSgwVSwgMSksIDAsIDApOworICAgICAgICAvLyBUaGUgY2FzdCBsb29r
cyB3ZWlyZCwgYnV0IGlzIHJlcXVpcmVkIGZvciB0aGUgb3ZlcmxvYWRpbmcgcmVzb2x1dGlvbiB0
byBzdWNjZWVkLgorICAgICAgICAvLyBXaXRob3V0IGl0LCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkg
d2hlcmUgQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRl
TGVuZ3RoKSBjb3VsZCBiZSBjYWxsZWQgaW5zdGVhZC4KKyAgICAgICAgZW5xdWV1ZShKU0M6OkFy
cmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8c2l6ZV90PigwVSksIDEpLCAwLCAwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlUmVm
PEJsb2JMb2FkZXI+KFt0aGlzXShCbG9iTG9hZGVyJikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4IDI1YmZmMTUzZDEyYy4uNzU0
M2Y0NzVhMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuY3BwCkBAIC03NCw2ICs3NCw4IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAg
ICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAg
ICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJy
YXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJTaXpl
KTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggODcw
YmRjODBmMzU1Li5kODNlNGE0MDQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZvdXJD
Qy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02
Myw3ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgY2hlY2tlZFJlYWQoUiYg
cmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQsIEVuZGlhbm5lc3MgZW5kaWFu
bmVzcykKICAgICB7CiAgICAgICAgIGJvb2wgcmVhZFN0YXR1cyA9IGZhbHNlOwotICAgICAgICBU
IHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+KG9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0
bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAgICAgc2l6ZV90IGFjdHVhbE9mZnNldCA9IG9m
ZnNldDsKKyAgICAgICAgVCB2YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihhY3R1YWxPZmZz
ZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dWludDMyX3Q+KGFjdHVhbE9mZnNldCkpOworICAgICAg
ICBvZmZzZXQgPSBhY3R1YWxPZmZzZXQ7CiAgICAgICAgIGlmICghcmVhZFN0YXR1cykKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441454</attachid>
            <date>2021-10-15 16:32:00 -0700</date>
            <delta_ts>2021-10-16 13:40:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>277481</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjI2MmNkYTM4M2Q1Li5lYzZiYjNjMWQ4NTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
NSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFr
IHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxseS1v
b2IuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1MzliNTBkMmU1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQorewor
ICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7Citm
dW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4
XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVl
OworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICog
MTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdl
dEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAg
ICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9m
IHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwor
ICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAg
ICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisg
ICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2Yt
Ym91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNz
L3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIu
anMKaW5kZXggNzdkNTBjMzUwYjQ2Li5lZDBlN2FmMDkxM2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JV
RkZFUl9TSVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVx
dWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2
LDEzIEBAIGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewog
ICAgIHZhciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRk
TWVtb3J5KDMyNzY4KTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KCgyKioxNikgKyAxKTsKICAgICBt
b2R1bGUuaW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwog
fQogCi1pZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikgeworaWYg
KGV4Y2VwdGlvbiAhPSAiQ29tcGlsZUVycm9yOiBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDE1OiBNZW1vcnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgNjU1MzcgaXMg
aW52YWxpZCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0aGlzLnRvQnVmZmVy
KCkpJykiKSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1t
b3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMK
aW5kZXggYmE2MmQ5MTQ3NmFhLi4wMWYwNmQyZjQ5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2
YXIgZXhjZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0
aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXI7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMDEsIG1heGltdW06IDB4MTAwMDEgfSkuYnVmZmVy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24g
IT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQotICAgIHRocm93ICJGQUlMRUQiOworaWYg
KGV4Y2VwdGlvbiAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCisgICAgdGhyb3cgIkZBSUxFRCwgZXhjZXB0aW9uIHdh
czogIiArIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDEzYWFkNjZjNTEuLjQ1OWZiOTNiNzk1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtNzAsNiArNzAsMjIgQEAKICAgICAgICAgKiBmYXN0L2lubGluZS93b3JkYnJlYWstYXQt
aW5saW5lLWJveC1ib3VuZGFyeS1leHBlY3RlZC5odG1sOiBBZGRlZC4KICAgICAgICAgKiBmYXN0
L2lubGluZS93b3JkYnJlYWstYXQtaW5saW5lLWJveC1ib3VuZGFyeS5odG1sOiBBZGRlZC4KIAor
MjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgUmViYXNlbGlu
ZWQgdGhyZWUgZm9sbG93aW5nIHRlc3RzIGFzIGRpZmZlcmVudCBvciBmZXdlciBlcnJvciBtZXNz
YWdlcyBhcHBlYXIgb24gdGhlIGNvbnNvbGUuCisgICAgICAgIEFsc28gY2hhbmdlZCBjdXJyZW50
VmVyc2lvbiBpbiBzZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGZyb20gOSB0byAxMC4KKwor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3N0b3JhZ2Uvc2VyaWFs
aXplZC1zY3JpcHQtdmFsdWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAy
MDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2Ug
aXQgYnJlYWsgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJp
YWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3Nlcmlh
bGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12
YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0
PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9
IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50
dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZm
ZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1i
dWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9C
dWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVu
Z3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2gu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxl
bmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZl
ci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVm
ZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0
aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9m
ZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5k
ZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkNzYwNDY4MTEyY2YuLmQyNDcwMTJhNzdhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8g
NEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkz
NTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0la
RSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVx
dWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2Vu
dGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZm
ZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBzaXplX3QuCisgICAgICAgIC0gVGhpcyBhbHNv
IHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5l
L0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0
aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlw
ZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3Ry
aWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFy
Z2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUg
REZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFk
IHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3Qg
YWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAg
LSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwv
RGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGlu
ZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11
bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEg
Im1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQ
cm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBp
bmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0
aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBk
YXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3Jy
ZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRp
bWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMu
CisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93
LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0
IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdl
IGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1v
cnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFz
dCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0
QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBj
dXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBl
cmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9V
SW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlz
IHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxs
cHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDAp
CisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3Vu
ZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hp
Y2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2ls
aXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0
eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBi
dXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBv
aW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFz
SW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1Q
dHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0
cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxl
bmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQ
dHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5C
bGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29k
ZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxh
cmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5
cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5s
aW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlD
bGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
R2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlv
bi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNT
dG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGls
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlw
ZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93
ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFu
ZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3Vu
ZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5
cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Z2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAg
IChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJh
eUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVj
a0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRM
T3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6
CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6
CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJ
bmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5
QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3
KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9E
YXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3
OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICog
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6
CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlH
ZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5k
ZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhp
bmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25z
Lmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dh
c21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCkBAIC0yNTQsNyArNTI2LDcgQEAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KIAogICAgICAgICBXaGlsZSBpbmNyZWFz
aW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVt
b3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKLSAgICAg
ICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2Vk
IGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BV
UmVnaXN0ZXIuCisgICAgICAgIC0gNEdCIGlzIG5vdCByZXByZXNlbnRhYmxlIGluIGEgdWludDMy
X3QsIHNvIEkgY2hhbmdlZCBhbGwgbGVuZ3RoIG9mIEFycmF5QnVmZmVyL1R5cGVkQXJyYXkvZXRj
Li4gdG8gYmVpbmcgc2l6ZV90LgogICAgICAgICAtIFRoaXMgYWxzbyByZXF1aXJlZCBjaGFuZ2lu
ZyBOZXdUeXBlZEFycmF5IGluIGFsbCBvZiBMTEludC9CYXNlbGluZS9ERkcvRlRMIHRvIGFjY2Vw
dCBhIG5vbi1pbnQzMiBzaXplLgogICAgICAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgcGVyZm9y
bWFuY2UgcmVncmVzc2lvbnMsIEkgaGFkIHRvIGFkZCBzcGVjdWxhdGlvbiBpbiB0aGUgREZHL0ZU
TCwgd2hpY2ggbm93IGhhdmUgdHdvIHZlcnNpb25zIG9mIE5ld1R5cGVkQXJyYXkgKG9uZSB0aGF0
IHRha2VzIGFuIEludDMyIGFuZCBvbmUgdGhhdCB0YWtlcyBhIFN0cmljdEludDUyKQogICAgICAg
ICAtIFNpbWlsYXJseSwgR2V0QXJyYXlMZW5ndGggYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
IG5vdyBjYW4gZWl0aGVyIHJldHVybiBhbiBJbnQzMiBvciBhIGxhcmdlciBudW1iZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdhYTBiN2JjOWFjLi45M2ViM2JmZTIwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yNjUsOSArMjY1LDkgQEAgcHVibGljOgogICAgIC8vIGlu
IGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZm
ZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3Nl
cyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGlj
IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg
VHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0yNzgsMjEgKzI3OCwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
c3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRy
KHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNp
dCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRw
dHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAg
ICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzAyLDEyICszMDIs
MTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0
cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAg
ICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTMyNSw3ICszMjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzM2LDE3ICsz
MzYsMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJ
bW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQot
ICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25z
dCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0K
KyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM1NywxNSArMzU3LDE1
IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZy
b20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMu
CiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVk
SW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAg
ICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzc2LDE3ICszNzYsMTcgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7
Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
NjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAg
ICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMK
QEAgLTEwNTMsOSArMTA1Myw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAg
IHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQg
Y2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDAxZTQ4YTExYmJiMC4uNDEzMjMwMmY4YTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBA
IC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4
Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Omxz
aGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAm
JiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwg
QWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsK
ICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMg
ZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlv
biwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUu
CisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJl
Y2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwg
ZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVt
cCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1t
NjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAg
ICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50
KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2Ny
YXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAg
Ly8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBu
b3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQor
ICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9Cisj
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCA1Zjk4ZmY5ZTMzN2MuLjg1NzQwNTVjOWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBp
bXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNv
bnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0g
MHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYg
KzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBB
ZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMjQ3MGMx
MTk2NjFiLi4wNzRhMzk4Zjg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRh
Z0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29s
IHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0
aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgp
CiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsK
KyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNo
ID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIs
IHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
aW5kZXggZTY2MTAwYmEyZTQ3Li4zZmFiYzRkODkxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAg
LTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpl
YnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgw
MGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVn
ZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMzk3OTkyYTNhNzUwLi4xMzI1MGVjNDg0
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5z
aWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVl
ZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3Rv
cmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxl
bmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIg
cmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTE4NCwxMiArMTE4NSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKLSAg
ICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxs
VGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0
eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwot
ICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90
LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVy
czo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisg
ICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRp
ZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxs
b2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkgKzEyMDMsMTMgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJl
dXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRj
aDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwot
CiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewpAQCAtMTU5NSw5ICsxNjA1LDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9
CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
Ly8gT3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3Bl
cmF0aW9uIGZ1bmN0aW9uLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRj
aEdQUikpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0g
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUg
bGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRp
bmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBh
ZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3Rh
dGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNjA1
LDkgKzE2MjAsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAg
ICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0
ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAg
ICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0
cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9h
ZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9h
ZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uMzZmZWIxNDRiYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVz
IHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0
eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBB
cnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3
aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAg
IH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7
IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVz
c09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7
IH0KQEAgLTI0NCw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9
OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNw
ZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFz
IGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFz
aWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3Jh
Z2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBp
bXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9
OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAg
ICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NCwxMyBAQCBzdGF0aWNf
YXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJh
eVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVM
YXJnZVR5cGVkQXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE0
LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5r
ZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCAyYjJmNWUwMzAxOWYuLmExY2Q2OTk0NGFiMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMzQ2Myw3ICszNDYzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7Cisg
ICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkpKSB7
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0NzEsNiArMzQ3MSwxNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlm
ICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5s
ZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzk2LDgg
KzM4MDcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKICAg
ICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5
dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVP
ZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAo
Ynl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MDYsNiArMzgxNywxOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5
KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
IHsKQEAgLTQxMDksNiArNDEzMywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjogeworICAgICAgICAvLyBT
ZWUgdGhlIENoZWNrSW5Cb3VuZHMgY2FzZSwgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlciB3aGF0
IHdlIHB1dCBoZXJlLgorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0lu
dDMyT25seSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CiAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRl
eCA2ZTI3NTMxMDRiZDMuLmEzYjkzNDBmNjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0z
MjUsNiArMzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUo
bm9kZS0+Y2hpbGQxKCksIG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBz
aG91bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDog
ewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZl
Y3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4
IDZlNGZlOWFmYTNlYi4uNzI1OGUzNzE1ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6cmVmaW5lKAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFj
dGlvbigpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgp
KQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSkKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9u
KCkpOwogICAgIAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMg
b2JqZWN0IGJlaGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYg
KzI5NCw4IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFy
cmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9u
bHkgcHJlc2VydmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBh
bmQgbm90IEdldEJ5VmFsIGFzIHdlbGwuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWwpIHsKICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMsIE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAg
IHJldHVybiB0eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3Vu
ZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGEwMjZh
YWQxODkzYi4uZGY3NWM3ODkwZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5z
cGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNp
b24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0
ZTsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNv
bnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlv
bjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJy
YXlDbGFzcywgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBAQCBwdWJs
aWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAg
ICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5
dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFy
cmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBl
LCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9u
LCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKKyAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
biwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxz
ZSkKICAgICB7CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAgdS5hc0J5
dGVzLmFycmF5Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRp
b24gPSBzcGVjdWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJz
aW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAg
ICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNs
YXNzLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikK
QEAgLTE2Myw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlv
biA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252
ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFz
Qnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJy
YXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpUeXBlPih1
LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgQXJyYXk6
OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OlNwZWN1bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpD
b252ZXJzaW9uPih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0aW9uIGFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUuYXNCeXRl
cy5hY3Rpb24pOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVuc2lnbmVk
IGFzV29yZCgpIGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzksMzUgKzE4
NSw1MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9i
c2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpB
Y3Rpb24sIGJvb2wgbWFrZVNhZmUpOwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFy
cmF5OjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVj
dWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwg
Y29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlC
ZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhBcnJh
eUNsYXNzKEFycmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdp
dGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBt
YXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBBcnJheU1v
ZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRoQXJyYXlD
bGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNsYXNzIGFy
cmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNw
ZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywg
c3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5
KTsKKyAgICB9CiAKKyAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2FmZSkKLSAg
ICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAgICAgICAg
ICByZXR1cm4gQXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5t
YXlTdG9yZVRvSG9sZShsb2NrZXIpKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5
OjpUb0hvbGU7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gQXJyYXk6OkluQm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFycmF5TW9k
ZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFBy
b2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBt
eUFycmF5Q2xhc3M7Ci0KICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAgICAgICBp
ZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZp
dHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJh
eU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0yMjEsMjMg
KzI0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6
OkFycmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5
Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5
Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlw
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9Ci0gICAg
Ci0gICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNp
b24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAgfQotICAg
IAotICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwg
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
LCBhY3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uID0g
c3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKworICAg
ICAgICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBlZEFycmF5
KGxvY2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25B
bmRNYXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBsYXJnZVR5
cGVkQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTI2LDcg
KzUzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkK
ICAgICAgICAgICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkKICAgICAg
ICAgICAgICYmIHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAgICAgICAg
ICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAgICAgICYm
IGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYmIG1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgPT0gb3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIpIGNvbnN0
CkBAIC01NzksNyArNTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlD
bGFzczsKICAgICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAgICB1aW50
OF90IGNvbnZlcnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0OworICAg
ICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOworICAgICAgICAgICAgdWludDhfdCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA6IDE7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5zaWduZWQg
YXNXb3JkOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggYzg4ZGU0YjIzOWM3Li5hMDBjODUzNzAxMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zODA3
LDggKzM4MDcsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHN0YXRpY19h
c3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRy
aW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAg
ICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIVVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIyLDI2ICszODMxLDMwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7CisgICAgICAg
IE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAg
ICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAo
KnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5
U3RvcmFnZVR5cGU7CkBAIC0zODUzLDEzICszODY2LDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0
aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRo
aXNOb2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7
CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJy
YXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJp
bnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBl
ID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uOWFkNWMy
NzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVu
dW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjM5
LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNl
IENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVl
UmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEzMzksMTEgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9m
ZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAg
ICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5
cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwg
TGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAg
ICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFy
cmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAg
ICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9u
RW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5l
IGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUzNGUuLmZhMTdiZjExNDE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjQwMjg0Y2ZhMjJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdy
aXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgor
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9p
bnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk3LDEw
ICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdD
b2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4u
NTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAg
ICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAg
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXgg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0
dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQx
NkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENs
YW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNw
ZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1Nw
ZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxh
cmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRT
aXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcx
NywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCku
cmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5
TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJy
YXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUt
PmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwor
CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiArMjIxNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBBc3Nl
cnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpA
QCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9k
ZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAgICBOb2RlKiBwcmVw
ZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1v
ZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXko
YXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwot
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAotICAg
ICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2Vs
bFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5k
ZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4uMmQ4NmViNzU3Mzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBA
IC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMg
Y2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMg
ZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRv
IHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNo
LAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmls
ZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZv
cm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBi
dXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFj
a3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKKy8vIGRldGFp
bHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRp
bmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2
YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0
CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggMmJiOWQ0YmVhODAw
Li4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVk
QXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVHlwZWRB
cnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZWRBcnJh
eUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1
MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAg
ICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggMjY5MTcxY2IzNDFkLi40
MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVh
cExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9j
LAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAgICBU
eXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVkQXJyYXlMZW5ndGhJbnQ1Mkxv
YywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9j
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjZkZWRhMDM3
ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTEzMzUsNyArMTMzNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2YWxpZGF0
ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRz
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwgbm9kZS0+
Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUtcHJvZHVjaW5nIG5vZGUuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5
NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAg
ICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5k
ZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2
LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkg
YXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZp
dCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5k
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2UgdG8gcmV0dXJuaW5nIEludDUy
IGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlkYXRpb24gZmFpbHVyZXMuICov
IFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNy
byhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8o
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hl
Y2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRo
IHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tK
U0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1
dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1MDdmMWU4MGFjMC4uOTQ1
MzUzNTZkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAg
IGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5
KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNr
bHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAog
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUs
NyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6
ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90
IHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDE0IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50cHRyX3Q+OjptYXgoKSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0
VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQ
dHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1
bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyAr
MTkwOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcg
KzE5MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Nyw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NzIsNyArMTk3Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg5LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjAwNCw3ICsyMDA1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIxLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDM2LDcgKzIwMzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTMsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIw
NjgsNyArMjA2OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJ
bnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjRmZDU3OTVkMmQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5Kikp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsx
MzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgog
ICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcApp
bmRleCBlM2EyMzlhMzNlMzAuLmQ5ZGFlM2E4MzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwyMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVk
QXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgs
IG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJh
eU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3Ro
LCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkgfHwg
bV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55
LCBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgSW50NTJSZXBVc2UpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSk7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3LDEyICsxNDcsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBP
cEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtu
b3duQ2VsbFVzZSksIHN0b3JhZ2UpOwotICAgICAgICBOb2RlKiBjaGVja0luQm91bmRzID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIGluZGV4
LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworICAgICAgICBOb2RlKiBjaGVja0luQm91
bmRzOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICgob3AgPT0gR2V0
QXJyYXlMZW5ndGgpICYmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5
KCkgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZs
b3cpKSkgeworICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55LCBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93
bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGxlbmd0aC0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgYSBkdW1teSBz
aW5jZSB0aGlzIG5vZGUgZG9lcyBub3QgYWN0dWFsbHkgcmV0dXJuIGFueXRoaW5nLgorICAgICAg
ICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHNJbnQ1Miwg
bV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBJbnQ1
MlJlcFVzZSkpOworICAgICAgICB9IGVsc2UgeworI2VuZGlmCisgICAgICAgICAgICBOb2RlKiBs
ZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgp
LCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgICAgICB9CisjZW5kaWYKKwogCiAgICAgICAgIEFkamFjZW5jeUxp
c3QgYWRqYWNlbmN5TGlzdCA9IG1fZ3JhcGguY29weVZhcmFyZ0NoaWxkcmVuKG1fbm9kZSk7CiAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGVja0luQm91bmRz
LCBVbnR5cGVkVXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uMmU3ZjU2YWExMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjg4LDYgKzI4OCw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAg
Y2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM3Myw2ICszNzQsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI1ZjZhY2E2N2M0OC4uNzQ5ZWY1NDZhYmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzIzOCwyOCArMzIzOCw0MyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUQ29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNvdQogCiB9CiAK
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5k
cyhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUikKIHsKICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQogICAgICAg
ICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmll
dyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZv
ck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlN
b2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXct
Pmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAg
ICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgp
OwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUt
PmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29u
c3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgp
KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKICAgICAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyNlbmRpZgog
ICAgIH0KKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5k
ZXhHUFIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBpbmRl
eEdQUiwgc2NyYXRjaEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBqdW1wKTsKQEAgLTMzODAsMTAgKzMzOTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBz
dG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwog
ICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9y
YWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcDsKICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTMzOTcsNyArMzQxNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBu
b2RlLCBUeXBlZEFycmF5VHlwZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9
IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9ybWF0ID09
IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxvYWRGcm9tSW50VHlwZWRB
cnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIHR5
cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50
VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3BlY3VsYXRl
LCBzaG91bGRCb3gsIHJlc3VsdEZQUik7CkBAIC0zNTU1LDYgKzM1NzIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFn
ZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMp
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJl
ZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMik7CkBAIC0zNTg3LDcgKzM2MDUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHBy
b3BlcnR5KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVl
R1BSICE9IHN0b3JhZ2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0g
anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAo
ZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1LDEwICszNjYzLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5v
ZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7
CiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBi
YXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5n
cHIoKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
czsKICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQ
UlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dp
dGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9h
ZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzY5MCwxMCArMzcx
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1
ZUZQUiA9IHZhbHVlT3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRP
ZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVy
dHksIHNjcmF0Y2hHUFIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsK
ICAgICBjYXNlIDQ6IHsKQEAgLTc5NjcsNyArNzk4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcs
IGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUp
Ci0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3Jh
Z2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VS
ZWcpOwpAQCAtODAzOSw5ICs4MDYxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BS
UmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQ
Uik7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQ
UiAhPSBkYXRhR1BSKTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAK
QEAgLTgwODMsNiArODEwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0
KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBBSSBwcm9t
aXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJ
bnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJS
ZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiArODM3MywxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBtX2ppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
MTExMTksMTAgKzExMTQ5LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9k
ZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5
U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBh
IGludHB0cl90LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXpl
SW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzY3JhdGNoR1BSKTsK
KyNlbHNlCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKyAgICBlbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0
dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXpl
R1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5
IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEz
Niw4ICsxMTE4MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZh
c3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNz
ZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQp
KTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkgKzEx
MjQ0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgbV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkpOworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBU
cnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAt
MTQxNjcsNiArMTQyMjQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXkoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDA3YjU2M2IzNDgzYS4uMDQ5YmNmN2U2ZmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5
ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUq
KTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQ
Uik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2Vu
ZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzMSwxMCArMTQzOCwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhNaW5NYXgoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JU
eXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJZk91
dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5k
c0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSop
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJl
ZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdz
LCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAt
MjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9
OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNw
ZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9h
ZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCku
CisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhl
IGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4uMjJmNmY3Mjc0YWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgp
LmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0g
bm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5
cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5
cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJH
QiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBj
b21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjog
eworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQ
cm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzk4LDYgKzQ0MDksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQ1MkNv
bnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCAzYjM5M2Y1Mjc1ZjcuLmI1YzQ4NDk4M2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
ZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6
ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5
TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5
cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkg
dmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3By
KCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5
QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9m
ZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVk
QXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIp
OworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRh
R1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRh
dGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0
YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShB
Uk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5
dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxs
cHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJN
NjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7Cisg
ICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVz
dWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYgLy8gVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5v
ZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjQsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOworICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
aW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRUeXBlZEFycmF5
Qm91bmRzQ2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgICAgICBlbWl0VHlwZWRB
cnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoLmdwcigpKTsK
ICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwogICAgICAgICAKQEAgLTQz
ODEsNiArNDQ2MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorI2lmIFVTRShBRERSRVNTNjQp
CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNl
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAg
YnJlYWs7CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5
SWQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTg4LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyKG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJl
YWs7CkBAIC01NTg5LDcgKzU2ODcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQy
KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRk
NjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFs
dWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgbV9qaXQu
bG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNoZWNrIGFnYWluc3QgMCBoZXJlLCBuZWdhdGl2ZSBpbmRpY2VzIGFy
ZSBjYXVnaHQgYnkgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggcmlnaHQgYWZ0ZXIKICAgICAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbmRpZgogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQx
KSk7CiAKQEAgLTU3OTAsNyArNTg5NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwg
dDIpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpMZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBtX2pp
dC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVl
ZCBmb3IgYW4gZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMg
YXJlIGNhdWdodCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0Miwg
dDEpKTsKIApAQCAtNjA0Miw2ICs2MTU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBB
c3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0lu
Qm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zm
c2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFm
MjI1MTA0Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgog
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrRGV0YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAg
ICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIz
YmRkNDg2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApA
QCAtNjQwLDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9u
OgogICAgICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYg
KzE3MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1
cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBA
IC0xOTksNiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAg
ICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAg
IGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2Ug
Q2hlY2tWYXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1
bWVudHM6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
KyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9y
TGVuZ3RoOgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNh
OGY1Y2ZjNzk1ZS4uZDg2ZmE2NWU2NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNr
SW5Cb3VuZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5v
ZGUobm9kZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5
TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5
TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29t
cGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJv
dG90eXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
b3V0LmlzTnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0KCkKKyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGlu
Z1Jlc3VsdCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAg
ICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVj
dG9yLCBtX291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigp
KSksIAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25z
dEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAg
ICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw5ICs0ODc3LDI5IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIo
bV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQs
IHdhc3RlZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IG51bGxWZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
ZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhlIHJl
c3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBtdXN0
IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorICAgICAgICBz
ZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAgICB9CisKK0lHTk9SRV9DTEFO
R19XQVJOSU5HU19CRUdJTigibWlzc2luZy1ub3JldHVybiIpCisgICAgdm9pZCBjb21waWxlR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBwcmVw
cm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
KSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6
ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsKKyAgICAgICAgc2V0
U3RyaWN0SW50NTIocmVzdWx0KTsKKyAgICB9CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisK
ICAgICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4u
c2VtYW50aWMpOwpAQCAtNTA1NCw4ICs1MDg1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlz
U29tZVR5cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAg
ICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5s
b2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93
LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2
NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5jYXN0VG9JbnQzMihsZW5ndGgpKTsKKyNlbHNlCisgICAgICAgICAg
ICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2
NCw2ICs1MTAwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKK0lHTk9SRV9DTEFO
R19XQVJOSU5HU19CRUdJTigibWlzc2luZy1ub3JldHVybiIpCisgICAgdm9pZCBjb21waWxlR2V0
VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9ub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgLy8g
VGhlIHByZXByb2Nlc3NvciBjaG9rZXMgb24gUkVMRUFTRV9BU1NFUlQoVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykpLCB0aGlzIGlzIGVxdWl2YWxlbnQuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNp
emVvZihzaXplX3QpID09IHNpemVvZih1aW50NjRfdCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1
MihtX291dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgIH0KK0lHTk9SRV9DTEFOR19XQVJO
SU5HU19FTkQKKwogICAgIHZvaWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC01MTA4LDcgKzUx
NTQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gZGVwZW5kIG9uIG91ciB2YWx1ZS4gVXNlcnMg
b2YgdGhpcyBub2RlIGp1c3QgbmVlZCB0byBtYWludGFpbiB0aGF0CiAgICAgICAgIC8vIHdlIGRv
bWluYXRlIHRoZW0uCiAgICAgfQotICAgIAorCitJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4o
Im1pc3Npbmctbm9yZXR1cm4iKQorICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1Migp
CisgICAgeworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNFX0FT
U0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7Cisg
ICAgICAgIC8vIFNpZ24tZXh0ZW5kZWQgdG8gYWxzbyBjYXRjaCBuZWdhdGl2ZSBpbmRpY2VzCisg
ICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2Rl
LT5jaGlsZDEoKSkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbG93U3RyaWN0SW50NTIobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgp
LCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworICAgICAgICAv
LyBFdmVuIHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBubyB1c2VyIG9m
IHVzIHNob3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlz
IG5vZGUganVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2UgZG9taW5hdGUg
dGhlbS4KKyAgICB9CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisKICAgICBMVmFsdWUgY29t
cGlsZUdldEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAt
NjAwOCwxMSArNjA2OSwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMy
KGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZCb3VuZHMp
LCB1bnN1cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAg
ICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJU
KFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzQ29uZGl0aW9u
ID0gbV9vdXQuYWJvdmVPckVxdWFsKG1fb3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpLCBsb3dTdHJp
Y3RJbnQ1MihjaGlsZDUpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZDUudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92
ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91bmRzQ29uZGl0aW9u
LCB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7CisKICAgICAgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0luQm91
bmRzLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFs
dWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUodHlwZSkpOwogICAgICAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC04MTY5LDk1ICs4MjM3LDE4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAg
ICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
LSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0
LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJh
eUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xv
d0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2Up
OwotCi0gICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0
LnNobChtX291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRT
aXplKHR5cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVk
QXJyYXlUeXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFu
ZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdElu
dFB0cig3KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAg
ICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFs
dWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFn
ZSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9v
dXQuY2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykp
KSwKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9o
ZWFwcy50eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihz
aXplKTsKLSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1f
b3V0LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVu
dGljYXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxh
dGVSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwg
cGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBh
cmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2Vu
ZGlmCi0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5j
aG9yKHN0b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJU
bzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTFZhbHVlIGZh
c3RSZXN1bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlU
eXBlKSB7Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAg
ICBjYXNlIFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9
IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJa
ZXJvLCBzbG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZP
Ul9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9U
WVBFX0NBU0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNl
IFR5cGVEYXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0
ZU9iamVjdDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFn
ZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0g
ICAgICAgICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291
dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9y
RmVuY2UoKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5
cGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGlu
dWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9p
bnRlclR5cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgIGNhc2UgSW50NTJS
ZXBVc2U6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1Bh
dGgoCi0gICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxv
Y2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRB
cnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUu
Z2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93
U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAg
ICAgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTgyNzcsNyArODI2OCwxMDQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShU
eXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAg
IHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJa
ZXJvKTsKKworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShz
aXplNjRCaXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxp
bWl0KSksCisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdo
Q2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
c21hbGxFbm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdo
IHRoZSByZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1i
ZXIuCisgICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVm
ZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9Cisg
ICAgICAgICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVt
ZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVk
QXJyYXlUeXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAor
ICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykp
LAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJf
dD4oNykpKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0
b3JGb3JTaXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUs
IHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFs
bG9jYXRvciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBz
dG9yYWdlLAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwK
KyAgICAgICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRB
cnJheVByb3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50
ZXJUeXBlKCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIo
c3RvcmFnZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRCaXRzLCBC
Mzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAg
ICBhdXRoZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAg
ICBqaXQudGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAg
ICB9CisjZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0
LmFuY2hvcihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVs
bHB0cjsKKyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9B
UlJBWV9UWVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAg
ICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5
PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFf
VklFVyhUWVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNF
CisgICAgICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVl
ID0gYWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRW
YWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3Vs
dFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAg
ICBtX291dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKHNpemU2NEJpdHMpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbmRpZgorICAgICAg
ICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVz
dWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAgICAgbXV0
YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAg
ICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vU3Rv
cmFnZSwgaGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAg
ICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICBb
PSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6
eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6
eUNhbGxHZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVk
QXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0
R1BSKCksIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwK
KyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQog
ICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CkBAIC0xNDY1Niw2ICsxNDc0NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICAvLyBiYXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBhcmUgMzItYml0
cworICAgIC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0d2VlbiBiYXNl
K2JlZ2luKjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZhbHVlIGJhc2Us
IExWYWx1ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBBYnN0cmFjdEhl
YXAmIGhlYXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxpbmdMaW1pdCA9
IDEwOwpAQCAtMTU1OTEsNyArMTU2ODEsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmll
d0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVs
bHB0ciwgbV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsKKyAgICAg
ICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBObyBuZWVk
IGZvciBhbiBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVjayBhZ2Fp
bnN0IGxlbmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9v
dXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaW5kZXhU
b0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVT
aXplID4gMSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hl
Y2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0LDcgKzE1
ODMwLDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUt
PmRhdGFWaWV3RGF0YSgpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAg
c3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFu
KGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBt
X291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmll
d19sZW5ndGgpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY29t
cGFyaXNvbiBvZiBpbmRleCB0byAwLCB0aGUgY2hlY2sgYWdhaW5zdCBsZW5ndGggY2F0Y2hlcyB0
aGF0IGNhc2UKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQu
bG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoKSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAg
ICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0
KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzMzOCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAj
aWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRp
dmUpIHsKKyNpZiBVU0UoQUREUkVTUzY0KQorICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0g
bV9vdXQubG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNl
bHNlCiAgICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApp
bmRleCBhOTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBub25O
ZWdhdGl2ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlv
bjsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikg
eyByZXR1cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZl
KExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIo
YmFzZSwgZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNl
LCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQp
OyB9CiAKICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RF
cXVhbChMVmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRy
aW5zaWNFbWl0dGVyLmNwcAppbmRleCA1Yzc2NWVkOTc2NTAuLjg5NTY4ZDQ2MzBmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODYs
MjMgKzg2LDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNp
Y0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJp
bnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwg
c3RhdGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50
MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0
aEludHJpbnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVH
UFIpOworICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKQorICAgICAgICAgICAgaml0
LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsK
KyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQ
Uiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+
IDEpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIHdl
IFR5cGVkQXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50
MzIuCi0gICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVHUFIsIEltbTMyKGxvZ0VsZW1lbnRT
aXplKHR5cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNo
aWZ0IGhlcmUgc2luY2Ugb24gQUREUkVTUzMyIHBsYXRmb3JtcyBUeXBlZEFycmF5cyBjYW5ub3Qg
aGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgorICAgICAgICAgICAgaml0
LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsK
ICAgICAgICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsK
KyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMzMsOCArMTQyLDEyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1p
dEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIGpp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAg
ICAgIGRvbmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3Jh
dGNoR1BSLCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJbnQzMih2
YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkzNyw4IEBA
IHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAg
ICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPnRy
eVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9m
aWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAg
LTIzNDIsMjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMy
SW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5n
KGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
KSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5n
ZXRJbmRleFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmpl
Y3QtPnRyeUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBB
cnJheVdpdGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkg
PCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAgICAgICAg
ICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCkt
PnB1YmxpY0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlz
IHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAogICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKQEAgLTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlw
dC5pc051bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAg
ICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYw
MDQ0ZS4uZTc2ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5l
IE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FS
UkFZUykKKyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQ
VShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTY4
MTM3N2JiOTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsK
ICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAo
b2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0
ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0
T2ZCb3VuZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3MCwxMyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdl
dE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJ
bmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNr
bHkoaSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZt
LCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+
dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
KSkKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChv
YmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAg
ICBMTElOVF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI0MjFhN2ZhNDEwZS4uNmNkYmQ4
ZGUzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNv
bnN0IFN0cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJs
ZTo6c19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdF
X1RZUEVEX0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0
ZXhwciBBcnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29u
c3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3Ig
QVJNNjRFIG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5UHJvZmls
ZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxv
YWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVu
ZAogCi1tYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5
VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBpbmRleCBp
cyBhbHJlYWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21hY3JvIGdl
dEJ5VmFsVHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERv
dWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3Qg
bGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRv
IHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFz
ZV0sIHQyCiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwxMSArMTMy
NiwyNiBAQCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdl
dEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBj
b25zdCBsZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9h
ZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlh
ZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlT
CisgICAgICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxl
bmd0aAorICAgICAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2Vd
LCBsZW5ndGgKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAg
ICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVu
dGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVz
ZWQgb24gb3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBpZiBMQVJHRV9UWVBFRF9B
UlJBWVMKKyAgICAgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5n
dGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpYWVxIGluZGV4
LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVu
ZAorICAgIGVuZAorCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIGJxYmVxIGlu
ZGV4LCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFsbFR5cGVkQXJyYXkKKyAgICAgICAg
c2V0TGFyZ2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6CiAgICAgZW5kCiAKICAgICBs
b2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFzZV0sIHQzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IDUwZDVkYmRmNjAyYS4uNGU3MGY4YjE1ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MTYyNCw2ICsxNjI0LDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGRpc3Bh
dGNoKCkKICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAg
IGNyYXNoKCkKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBnZXQobV9iYXNl
LCB0MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRh
ZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE2NjksNyArMTY3Myw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9y
YWdlOgotICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRB
cnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0
TGFyZ2VUeXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRl
eCBkODRiNmVhZDM3ZmQuLjAyOTIwY2E4NDI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MTMsNiArMTcx
MywxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmaW5pc2hHZXRCeVZhbChz
Y3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZW5kCiAKKyAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJy
YXkoKQorICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgICAgIHN0b3JlYiAx
LCBPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUgKyBBcnJheVByb2ZpbGU6Om1f
bWF5QmVMYXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNyYXNo
KCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBn
ZXQobV9iYXNlLCB0MikKQEAgLTE3MjMsNiArMTczMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICMgVGhpcyBzaWduLWV4
dGVuc2lvbiBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdldEJ5VmFsVHlwZWRBcnJheSB3
b3JrIGV2ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAgICAgc3hpMnEgdDEsIHQxCiAKICAgICBsb2Fk
Q2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCkBA
IC0xNzYzLDcgKzE3NzIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNo
KCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgLm9wR2V0QnlW
YWxTbG93KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4YTFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcg
QEAgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2ln
YWNhZ2VEZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7
CiB9CiAKLVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVu
dHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rp
b24mJiBkZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlC
dWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAgICAg
LCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUluQnl0ZXMo
c2l6ZSkKQEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJD
b250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJhbnNmZXJU
bygqdGhpcyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29u
dGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0
b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMp
CiAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsxMDksMjEg
QEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5CeXRlcyA9
IDA7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShzaXplX3Qg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xp
Y3kgcG9saWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhl
IHRvdGFsIHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRv
dGFsU2l6ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90
YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1B
WF9BUlJBWV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0gbnVtRWxl
bWVudHM7CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXpl
SW5CeXRlcy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVu
dHMpICogc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXpl
ID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAgICAg
ICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2Nh
dGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0
IHRoZSBidWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRy
eU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRh
ID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRh
dGEsIHNpemVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNl
dCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBtZW1z
ZXQoZGF0YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNpemVJ
bkJ5dGVzOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKICAg
ICBtX2Rlc3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9y
KCk7CiB9CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFy
ZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQob3Ro
ZXIubV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsKICAg
ICBpZiAoIWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmPEFy
cmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0g
dHJ5Q3JlYXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yMDgs
NyArMjA2LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVm
ZmVyQ29udGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVzZWQgZnJv
bToKIC8vIC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9y
eS4gQnV0IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5IGNvbWUK
IC8vICAgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0
ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVkKCkgfHwg
KEdpZ2FjYWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAgcmV0dXJu
IGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
Ynl0ZUxlbmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNlIGEgbmV3
IHNldCBvZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQgYWNjZXNz
ZWQKIC8vICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3VsZCBhbGxv
Y2F0ZSBmcm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
RnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVm
ZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxl
bmd0aCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAg
IGlmIChkYXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRh
KSkKICAgICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5
LDcgKzIyNyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRl
cyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVh
dGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVy
b0luaXRpYWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRy
eUNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJh
eUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVM
ZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwx
NyArMjQ2LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUlu
dGVybmFsKFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQog
Ci1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
RG9udEluaXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBw
b2xpY3kpCiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1l
bnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3
IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5h
bChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUlu
dGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNl
LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291cmNl
KTsKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShj
b250ZW50cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0
aCk7CisgICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAg
ICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6
YXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7
CiAgICAgY29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwg
cG9saWN5KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJy
YXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZl
cjo6Y2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCitz
aXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXpl
X3QgcmlnaHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVm
dCkKQEAgLTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShk
b3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9
CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QK
K3NpemVfdCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0g
ICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgY3Vy
cmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBp
bmRleCA9IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRl
eCwgMCwgY3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBz
bGljZVdpdGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRl
eCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90
IGVuZCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0g
YmVnaW4gOiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4g
OiAwOwogICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0KQog
ICAgICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJhLi5l
YWNjYTJjMjMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVk
VGFzay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSk7CisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAz
MikKKyNlbHNlCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3QpID09IHNpemVvZih1aW50MzJf
dCkpOworLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUg
aW4gYnl0ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJp
dCBwbGF0Zm9ybXMuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0IHNob3VsZCBp
biB0aGVvcnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIpIGlmIGFueW9u
ZSBjYXJlcy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZmZmZ1CisjZW5k
aWYKIAogY2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzYwLDcgQEAgdXNp
bmcgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiB7
CiBwdWJsaWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBTaGFyZWRB
cnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJyYXlCdWZmZXJEZXN0cnVj
dG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKTsKICAgICAK
ICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChtX3Np
emVJbkJ5dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgRGF0
YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47
CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1
bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIHNp
emVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVz
LCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFycmF5QnVm
ZmVyQ29udGVudHMmJik7CkBAIC03OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQot
ICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsg
fQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7
IH0KICAgICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0K
ICAgICAKQEAgLTk0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0aWFsaXpl
CiAgICAgfTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHZvaWQg
dHJ5QWxsb2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAg
ICB2b2lkIHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4ICsxMTQs
MjggQEAgcHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0cjxTaGFy
ZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5
dGVzOworICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXIg
OiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0
aCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRl
KEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVy
PiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGJ5dGVMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9p
ZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBz
aXplX3QgYnl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZl
cj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsK
ICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25l
ZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3RoKCkgY29u
c3Q7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFyaW5nTW9k
ZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBwdWJsaWM6CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBi
ZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFy
cmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90IGVu
ZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQg
dW5waW4oKTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2Fn
ZURlc3RydWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJy
YXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qg
dm9pZCosIHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlC
dWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMm
JiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRl
eChkb3VibGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBW
YWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOworICAgIGlubGlu
ZSBzaXplX3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0YXRpYyBpbmxp
bmUgc2l6ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3QgcmlnaHQp
OwogCiAgICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzIwMSw3IEBA
IGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250
ZW50cy5kYXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QKK3NpemVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBAQCBib29sIEFy
cmF5QnVmZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6OmdjU2l6ZUVz
dGltYXRlSW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQg
dG8gc2NhbGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcuCi0gICAg
cmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVMZW5n
dGgoKSk7CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3RoKCk7CiB9
CiAKIHZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLjQ3MzcyMjc0
NTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5dGVPZmZz
ZXQoYnl0ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAgICAgICAs
IG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKIHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChi
eXRlT2Zmc2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgo
Ynl0ZU9mZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5dGVMZW5n
dGgoKSk7CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjA5OTk1NGI4NjUzMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRB
cml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWduZWQgYnl0ZU9m
ZnNldCgpIGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1
cm4gbV9ieXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXREZXRhY2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAgICAvLyBIZWxw
ZXIgdG8gdmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBzdGF0aWMgYm9v
bCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBz
aXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoc2l6ZV90IGJ5
dGVPZmZzZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGJ5
dGVPZmZzZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChl
bGVtZW50U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQg
YSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFu
Z2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZm
ZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNp
emVfdCBzaXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5n
ZSBvZiBhbiBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJvb2wgdmVy
aWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewot
ICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAg
ICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAo
Ynl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0
KSAvIHNpemU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3Ro
IC0gYnl0ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKICAgICAg
ICAgaWYgKG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFy
cmF5QnVmZmVyVmlldyosIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNl
dFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAg
ICBpbmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFC
eXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJ
bXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRl
T2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9m
ZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQg
Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVu
c2lnbmVkIGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxl
bmd0aCk7CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVt
YmVyIG9mIGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9m
ZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2
aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zm
c2V0QW5kTnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0g
ICAgICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNl
dCwKLSAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlC
eXRlT2Zmc2V0LAorICAgICAgICBzaXplX3QgKm9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1F
bGVtZW50cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAt
IGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQg
PSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkg
LyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAg
ICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVt
ZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNl
dCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZz
ZXQgPSBzdGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5z
aWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQp
IC8gc2l6ZW9mKFQpOworICAgICAgICBDaGVja2VkU2l6ZSBhZGp1c3RlZE9mZnNldCA9ICpvZmZz
ZXQ7CisgICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAgICAgICAgYWRqdXN0
ZWRPZmZzZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRqdXN0ZWRPZmZzZXQu
aGFzT3ZlcmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBidWZmZXIuYnl0ZUxl
bmd0aCgpKQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNldC52YWx1ZSgpOwor
ICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAt
ICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihy
ZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBt
X2J5dGVPZmZzZXQgOiAzMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHVpbnQ2
NF90IG1fYnl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZzZXQg
OiAzMTsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVk
IG1fYnl0ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNp
bmcgQmFzZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdD
YWdlZFB0cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIn
cyBzdG9yYWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJy
YXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
IGFycmF5LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5
dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8
IGJ5dGVPZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxv
dworICAgIGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgYXJyYXktPmJ5
dGVMZW5ndGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAKKwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFk
ZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VBZGRy
ZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEFycmF5QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBk
YXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3
OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBz
aXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAg
ICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAg
ICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNt
YWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVpbnQ4X3QqIGJhc2UgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsg
Ynl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVm
ZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVM
ZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0
KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAo
IWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRl
TGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsK
ICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5n
dGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1Jh
bmdlSW1wbCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9v
bCBBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVf
dCByYW5nZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkK
LSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewot
ICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5n
dGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90
KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNl
dChiYXNlICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgK
LSAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9m
ZnNldCwgdW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBz
dGFydCArPSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAw
OwotICAgIGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChl
bmQgPCAwKQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZW5kKSA+IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQg
PCBzdGFydCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
bmQgLSBzdGFydCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5
QnVmZmVyVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0
b21pY3NPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAKaW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIw
LDcgQEAgc3RhdGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nl
c3NJbmRleFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VS
VCh0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9N
QVgpKTsKKwogICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkp
IHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3Mg
aW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBk
Y2MyZjUwNjRhZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLURhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
Ynl0ZUxlbmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0
ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5n
dGgpKTsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIx
NDQuLjM0MDI2NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmll
dy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcg
ZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFW
aWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5
VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSBmaW5hbDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2ln
bmVkIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisg
ICAgVCBnZXQoc2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAo
b2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQo
dW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCisgICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxh
dGUgZ2V0PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0
YXR1cyB8fCAqc3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBU
IHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2
b2lkIHNldChzaXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCog
c3RhdHVzID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAg
ICAgIGlmIChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJy
YXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwor
ICAgIERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBieXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRl
eCBiZTdlNmMwNTM0ZmEuLjViZTgxNjVmNzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMzLDI0IEBA
IG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVy
aWNUeXBlZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNv
bnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7
CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJl
ZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBS
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJl
c3MoKSk7IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+KiBhcnJheSwgc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wg
c2V0UmFuZ2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50
LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldFJhbmdlSW1wbCgKICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLApAQCAtNTgsMzkg
KzU4LDM5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVk
IG9mZnNldCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wgemVyb1JhbmdlKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBjb3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNl
dCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwgY291bnQgKiBzaXplb2YodHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6
ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFj
aGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgo
KSAvIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwog
ICAgICAgICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChzaXplX3Qg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRh
KClbaW5kZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0
YSgpW2luZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAg
Ym9vbCBnZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQs
IHNpemVfdCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UmFuZ2VJbXBsKAogICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBAIC05OCwxOCArOTgsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpKTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zm
c2V0LCBzaXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBjb3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgK
LSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8g
Y2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7
CisgICAgICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGNvdW50LCB0
aGlzLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAg
ICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJl
dHVybiBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVibGljOgogICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRl
T2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uZjFhNzZkZmQzYmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBB
cnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
YXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBA
IC02NCw3ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnRyeUNyZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0
cnlDcmVhdGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQg
PSB0cnlDcmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcg
QEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsK
QEAgLTExOCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRl
KFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwot
ICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFT
U0VSVChidWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlw
ZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4g
dHJ5Q3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjNkOGU0NzQ1
MDY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlclZpZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLAorICAg
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVs
ZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1
cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwxOCBAQCBK
U0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4
dCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQg
YXJyYXkgdG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWRTaXplIHNpemUg
PSBsZW5ndGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZS5oYXNPdmVy
Zmxvd2VkKCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICog
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBWZWN0b3JU
eXBlKEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSksIGxlbmd0
aCk7CisKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwogICAgIGlmICghbV92ZWN0
b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkKICAgICAgICAg
bWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXpl
KTsKKyAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7
CiAgICAgCiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0gT3ZlcnNp
emVUeXBlZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIs
Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQog
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkK
QEAgLTExNCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4
dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHNpemVfdCBieXRlT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVy
ZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUpCkBA
IC0yMzgsOSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpTVHlw
ZSB0eXBlKQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5cGVd
OwogfQogCi11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0Citz
aXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAgIHJl
c3VsdCAqPSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsK
KyNlbHNlCisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVja2Vk
IGluIHRoZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNoZWNr
IHdoZW4gYXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVtZW50
U2l6ZSh0eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmll
dzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlCdWZm
ZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxl
bmd0aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAg
ICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0zMTUs
OCArMzIyLDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBv
c3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hh
cmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSB0aGlz
LT5ieXRlT2Zmc2V0KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAg
IHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlw
ZSAjIyBBcnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uMTRmYTViYmE1YTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6
ZUxpbWl0ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmYXN0U2l6ZUxpbWl0
ID0gMTAwMDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxW
ZWN0b3JQdHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bnVsbC5yYXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVp
bnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIHNpemVfdCBz
aXplT2Yoc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOwor
ICAgICAgICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihz
aXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYsMjUg
KzEzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIEluaXRpYWxp
emF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAgICAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSos
IHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9k
ZSA9IFplcm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dChWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXpl
LCBJbml0aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAgICAvLyBU
aGlzIGlzIG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQncyB1c2Vk
IGJ5IHRoZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3Ry
dWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBDb25zdHJ1
Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAog
ICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAg
ICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgICAgICAKICAgICAgICAg
ZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRl
eHQoCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAg
ICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFn
KTsKKyAgICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmll
d1RhZyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX3N0cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAg
IHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNp
emVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFy
cmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZs
eSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBA
IC0xNjIsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOwogICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwot
ICAgICAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAg
ICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJm
bHk7CiAgICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkKiB2ZWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkpOyB9CiAg
ICAgdm9pZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Zl
Y3Rvci5nZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0
KCk7Ci0gICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJy
ZW50bHkoKTsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVPZmZzZXQoKTsKKyAgICBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xl
bmd0aDsgfQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJh
eUJ1ZmZlciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1f
dmVjdG9yOwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAg
ICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4IDFkMDcy
YjcxYWNiNy4uZDg1YjMyODMwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTksNyArOTksNyBA
QCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQog
ICAgIHB0cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVj
dG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVy
LT5kYXRhKCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlbHRhKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihkZWx0YSk7
CiAgICAgaWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAgLTExMCwxNCAr
MTEwLDE0IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0
SW1wbCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIEpTQXJyYXlC
dWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkKK2lubGluZSBzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6
OmJ5dGVPZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCB1bnNp
Z25lZD4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgc2l6ZV90PigpOwog
fQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBKU0Fy
cmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5
dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+Pigp
OworICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0Fy
cmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAwODY3ZGNiZWFkODEuLmU4
YTRlN2E2MjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25tb3ZhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtMjk4LDYgKzI5OSw3IEBAIHB1YmxpYzoKICAg
ICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0
b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvSW5kZXgoSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OworICAgIHNpemVfdCB0
b1R5cGVkQXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkg
Y29uc3Q7CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAppbmRleCBmN2E5ZTcwZWQ2ZTAuLjhmNWMwNzE5ODg2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxNCArNjks
NDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJp
bmcoZXJyb3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkgeworCisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKwor
ICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwg
IiB0b28gbGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGluZSBzaXplX3Qg
SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gYXNJ
bnQzMigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsK
KworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJSQVlfQlVGRkVSX1NJWkUp
KSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2Ui
KSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBBbGwgb2YgdGhpcyBtb25z
dHJvc2l0eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0IG9uIDE8PDMyLgorICAg
IHNpemVfdCBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1dE9mZnNldCA9IDA7Cisg
ICAgc2l6ZV90IGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7
CisgICAgaWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4KSkgeworICAgICAgICBv
dXRwdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZzZXQgPSBpbnQzMk1heDsK
KyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRwdXRPZmZzZXQgKyBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0M6OnRvSW50MzIoZCAtIGlu
cHV0T2Zmc2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2lu
dGVnZXJvcmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuY3BwCmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNE
YXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQs
IEFycmF5QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZp
ZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2ln
bmVkKQorSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRh
Vmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6
ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkLCBKU1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCos
IHNpemVfdCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKaW5kZXggMmM3ODVlNDc2MTFhLi5hNWU3OGM0NjliMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYsMTQgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUo
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8g
RHVtbXkgbWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3Qg
aW4gcGxhY2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24g
d2UgZG8gZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxp
emVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBK
U09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgo
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZp
ZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmpl
Y3QqLCBzaXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29s
IHNldEluZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBB
cnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
cjsgfQogICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmlu
ZGV4IDk0OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSAr
MTM2LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9m
IERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAiYnl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29s
IGxpdHRsZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBA
IC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlz
RGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlm
IChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBl
bGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmll
dyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5
dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBk
YXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0g
ICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
Pj0gMykgewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJh
eUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5n
dGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0
aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMg
YWNjZXNzIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi5lYTFlZjljMTNm
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZl
RnJvbVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
Q2xhc3NJbmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVy
ZSogUyAgICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20g
SlNPYmplY3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAg
ICBzaXplX3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMg
dGFrZSB1cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UK
Ky8vIFRoZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdv
cmRzLiBGSVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1
YWxseSB1bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0
YSBmb3IKQEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
CiAKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFy
cmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFt
ZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlw
ZWRWZWN0b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAg
ICAgfQogCi0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5C
b3VuZHMoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3Ro
OwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4
ZWQgYWNjZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2Ug
dGhlIHNsaWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpIGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVy
dFRvSlNRdWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNp
emVfdCBpLCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBt
X2xlbmd0aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVp
Y2tseTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1
aWNrbHlBc05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZl
Y3RvcigpW2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNp
Z25lZCBpKSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJ
bmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUgdmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBp
LCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkg
PCBtX2xlbmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB2b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVp
Y2tseVRvTmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAg
IHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlw
ZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9i
YWxPYmplY3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5h
dGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xv
YmFsT2JqZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxF
bGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFs
dWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRh
cHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4g
dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxB
ZGFwdG9yPihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5
OCwyMSArMjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2Fu
QWNjZXNzUmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IGJvb2wgY2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
CiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAm
JiBvZmZzZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJm
bG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICBy
ZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsK
ICAgICB9CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJl
dHVybnMgZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0
aW9uLgotICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxP
YmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFs
c2UKICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJv
b2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2ln
bmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5
cGU6OlVub2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qg
b2Zmc2V0LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENv
cHlUeXBlID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAg
LTMxOCw4ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNz
ZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlw
ZSgKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCos
IHNpemVfdCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAor
ICAgICAgICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAK
ICAgICAvLyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQg
QXJyYXlzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0
OSw3ICszNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAg
ICAgICAgRWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFO
KGFycmF5W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uMzM2ZjFhZWUzZjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0Myw3ICsxNDMs
NyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5l
ZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3Vt
ZW50LCBzaXplX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoT3B0KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG8KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAg
IGlmIChsZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsK
ICAgICAgICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG8KICAgICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkg
b2YgdGhhdCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmpl
Y3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICBzaXplX3QgbGVuZ3RoOwogICAgICAg
ICBKU0FycmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChp
c1R5cGVkVmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkp
IHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUu
dG9JbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gZmly
c3RWYWx1ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5n
dGgpKTsKIH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAg
fQogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAx
KSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1w
bChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFsdWUgaXMg
cHJlc2VudCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAgICAgICAg
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAg
ICAgICAgICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAg
ICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNz
OjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDog
Imxlbmd0aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVHlwZWRB
cnJheUluZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIz
ODc5MmQxMC4uYTNkZGMxZjgzNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5j
bHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2
LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZl
Y3RvcikKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJl
LCBsZW5ndGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0
aEZhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksMTcgKzEwMCwxNyBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVfdCBzaXplID0gc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVv
Zih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBpZiAo
IUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNl
dCwgbGVuZ3RoLCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJS
YW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIGVsZW1lbnRTaXplKSkgewog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZl
cmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkpIHsKKyAgICBpZiAoIUFy
cmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBlbGVt
ZW50U2l6ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25l
ZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTQ1LDcgKzE0Niw3IEBA
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBl
KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQg
b3RoZXJPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxPdGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVf
dCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3
ICsyMTksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRo
U3BlY2lmaWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlz
dGluZ0J1ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXpl
ICYmIHZlY3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5
VHlwZTo6TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAg
ICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRv
cj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZh
bHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8g
Tm93IHdlIGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVy
ICgyQikuCiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBsZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZl
VmFsdWUoCiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0
ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRl
eFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5
LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVj
aWZpY1R5cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJh
bnNmZXIgYnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbGVuZ3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewog
ICAgICAgICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVy
dFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZl
VmFsdWUoaSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxl
bmd0aDsgaS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBz
ZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ld
KTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQg
b2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBzaXplX3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBz
aXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBjb25zdCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChj
aS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAg
ICAvLyBUaGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUg
dGhlIHNhbWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1
c3QgbWVtbW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihv
YmplY3QpOwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgo
KSk7CiAgICAgICAgIApAQCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBldmVyIGNh
bGwgb2JqZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZzZXQpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkp
OwogICAgICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3cs
IHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IGkgKyBvYmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9v
bCBzdWNjZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAg
ICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vz
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBiNjNiNjhh
MjViNDUuLjE5ODYzOTBkOGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNW
YWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQcm9maWxl
OwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50ZXJuYWxG
dW5jdGlvbjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7
CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5T
ZXRJbmRleFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldElu
ZGV4UXVpY2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJ
bmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKICAgICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9v
bCBjYW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKLSAgICBK
U1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OworICAg
IEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJyYXlQcm9m
aWxlKiA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAg
Ci0gICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKworICAg
IC8vIFVzZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVM
YXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdldEluZGV4
UXVpY2tseSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIp
IGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMt
PmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNhbkdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGdldChnbG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlj
a2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
bmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0g
ICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAg
ICB2b2lkIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVu
c2lnbmVkLCBKU1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nl
c3MKKyAgICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSop
OworICAgIGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0
Y2ggKGluZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZ
UEVTOgotICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
aSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVk
QXJyYXkoaSwgdiwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFM
TF9XUklUQUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFC
TEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05U
SUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9J
TkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IXYuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNv
bnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5H
X1RZUEVTOiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+
Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAg
ICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAg
ICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7
CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7
CisgICAgICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWlu
Z1NldEluZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAg
aWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0
ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAg
ICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHkt
PnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZl
Y3Rvckxlbmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFn
ZSgpLT5tX3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0Nv
cHlPbldyaXRlKGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZs
eS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT5tX3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5k
ZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhR
dWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggOGZmYzVmOTM4MjJmLi43
NjBhOWE5ZTJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAogICAgIH0K
IH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJy
YXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2Jq
ZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0jZGVmaW5l
IENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlw
ZSA6XAotICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJyYXkgKj4o
dGhpcyktPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUp
Ci0jdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGlm
IChpID4gQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVBy
b2ZpbGUpCisgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7CisjZW5kaWYKIAotaW5saW5l
IEpTVmFsdWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQg
aSkgY29uc3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FS
UkFZX1RZUEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEy
LDcgKzUwNiw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlw
ZWRBcnJheSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAg
fQogfQotICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJy
YXlTdG9yYWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQorewor
ICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3Jh
Z2UoKTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3Rvcltp
XTsKKyAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOwor
ICAgIGlmICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsK
KyAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdl
LT5zZXRMZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRy
eVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFy
cmF5UHJvZmlsZSkgZG8geyBcCisgICAgICAgIGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFs
bFR5cGVkQXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJh
eVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNl
KQorI2Vsc2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBk
byB7IFwKKyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisjZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBj
YXNlIG5hbWUgIyMgQXJyYXlUeXBlIDogeyBcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBq
c0Nhc3Q8SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRB
cnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTtcCisgICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAg
IFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4g
dHJ1ZTtcCisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RB
VEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9U
WVBFCisjdW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQ
dXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4
OTgsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVj
dCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAg
ICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5k
ZXgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0K
IAogICAgIGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRl
eChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFn
ZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5k
ZXggZThkYzFhMzBhZWRkLi5iN2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtUGFnZUNvdW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMu
aD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JV
RkZFUl9TSVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50
MzJfdCBtX3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdjZDU5NmY4NzJlYy4uMjBhNjgwZmM0MjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtOCw2ICs4LDIxIEBACiAgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0RlYnVnLnlhbWw6CiAgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoK
IAorMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisg
ICAgICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0
NworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgTWFkZSBz
b21lIG9mIENoZWNrZWRBcml0aG1ldGljIGNvbnN0ZXhwciwgYW5kIGFkZGVkIGlzU3VtU21hbGxl
clRoYW5PckVxdWFsIHNpbmNlIGl0IGlzIGEgY29tbW9ubHkgdXNlZCB0ZXN0IGluIEFycmF5QnVm
ZmVyIGFuZCBlYXN5IHRvIGdldCB3cm9uZyBpbiB0ZXJtcyBvZiBvdmVyZmxvdy4KKworICAgICAg
ICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjppc0luQm91bmRzKToK
KyAgICAgICAgKFdURjo6Y29udmVydFNhZmVseSk6CisgICAgICAgIChXVEY6OmlzU3VtU21hbGxl
clRoYW5PckVxdWFsKToKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0
aWMuaAppbmRleCBmZjE1NjVmMTFkZWQuLmVmYWI0YWQzYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgaXNUYXJnZXRCaWdnZXIgPSBzaXplb2YoVGFy
Z2V0KSA+PSBzaXplb2YoU291cmNlKSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPFRhcmdldD46OmlzX3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJv
b2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJv
dW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28g
aW1wbGljaXQgdHlwZSBjb252ZXJzaW9uIHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0
byB3aWRlc3QgdHlwZS4KICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWF4KCk7CiAgICAgfQogfTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBTYW1lIHNpZ25lZG5lc3Mgc28gaW1wbGljaXQgdHlwZSBjb252ZXJzaW9u
IHdpbGwgYWx3YXlzIGluY3JlYXNlIHByZWNpc2lvbiB0byB3aWRlc3QgdHlwZS4KICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFs
dWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKQEAgLTE1OSw3ICsxNTks
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CiAgICAgewogICAgICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291
cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBhIGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4K
ICAgICAgICAgLy8gQ2FzdGVkIHZhbHVlIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6
bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIgdGhhbiBUYXJnZXQuCkBAIC0xNjgsNyArMTY4LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZh
bHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAg
IHsKICAgICAgICAgLy8gVGhlIHVuc2lnbmVkIFNvdXJjZSB0eXBlIGhhcyBncmVhdGVyIHByZWNp
c2lvbiB0aGFuIHRoZSB0YXJnZXQgc28gbWF4KFRhcmdldCkgLT4gU291cmNlIHdpbGwgd2lkZW4u
CiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0Pjo6bWF4KCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpCisgICAgc3RhdGljIGJv
b2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2ln
biwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODQsNyArMTg0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSkKICAg
ICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbiwgZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4KICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTIsNyArMTkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIGZhbHNlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgc2lnbmVkIHdpdGggZ3JlYXRlciBvciBzYW1lIHByZWNpc2lvbi4gSWYgc3RyaWN0bHkg
Z3JlYXRlciwgaXQgaXMgYWx3YXlzIHNhZmUuCiAgICAgICAgIGlmIChzaXplb2YoVGFyZ2V0KSA+
IHNpemVvZihTb3VyY2UpKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNv
dXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
c3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCB0cnVlPiB7
Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBUYXJn
ZXQgaXMgdW5zaWduZWQgd2l0aCBncmVhdGVyIHByZWNpc2lvbi4KICAgICAgICAgcmV0dXJuIHZh
bHVlID49IDA7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5h
bWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUg
Y29uc3RleHByIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5kcyh2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29s
IGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBjb25zdGV4cHIg
Ym9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCiB7CiAgICAg
aWYgKCFpc0luQm91bmRzPFRhcmdldD4oaW5wdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05OTYsNiArOTk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+
IGJvb2wgcHJvZHVjdE92ZXJmbG93cyhBcmdzLi4uIGFyZ3MpCiAgICAgcmV0dXJuIGNoZWNrZWRQ
cm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChUIGEsIFQgYiwgVCBib3VuZCkKK3sK
KyAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBzdW0gPSBhOworICAgIHN1bSArPSBiOwor
ICAgIHJldHVybiAhc3VtLmhhc092ZXJmbG93ZWQoKSAmJiBzdW0udmFsdWUoKSA8PSBib3VuZDsK
K30KKwogfQogCiB1c2luZyBXVEY6OkFzc2VydE5vT3ZlcmZsb3c7CkBAIC0xMDE3LDMgKzEwMjQs
NCBAQCB1c2luZyBXVEY6OmRpZmZlcmVuY2VPdmVyZmxvd3M7CiB1c2luZyBXVEY6OmlzSW5Cb3Vu
ZHM7CiB1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CiB1c2luZyBXVEY6OnN1bU92ZXJmbG93
czsKK3VzaW5nIFdURjo6aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApp
bmRleCA5YzlmODBlM2ZkMWIuLjY0NmU5YmVhNThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0x
NDEsNiArMTQxLDE1IEBACiAjZGVmaW5lIFVTRV9KU1ZBTFVFMzJfNjQgMQogI2VuZGlmCiAKKy8v
IEZJWE1FOiB0aGlzIHNob3VsZCBpbnN0ZWFkIGJlIGJhc2VkIG9uIFNJWkVfTUFYID09IFVJTlQ2
NF9NQVgKKy8vIEJ1dCB0aGlzIHJlcXVpcmVzIGluY2x1ZGluZyA8Y3N0ZGludD4gYW5kIFBsYXRm
b3JtLmggaXMgaW5jbHVkZWQgaW4gYWxsIGtpbmQgb2Ygd2VpcmQgcGxhY2VzLCBpbmNsdWRpbmcg
bm9uLWNwcCBmaWxlcworLy8gQW5kIGluIHByYWN0aWNlIENQVShBRERSRVNTNjQpIGlzIGVxdWl2
YWxlbnQgb24gYWxsIHBsYXRmb3JtcyB3ZSBzdXBwb3J0ICh2ZXJpZmllZCBieSBzdGF0aWNfYXNz
ZXJ0cyBpbiBBcnJheUJ1ZmZlci5oKQorI2lmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9M
QVJHRV9UWVBFRF9BUlJBWVMgMQorI2Vsc2UKKyNkZWZpbmUgVVNFX0xBUkdFX1RZUEVEX0FSUkFZ
UyAwCisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAvKiBGSVhNRTogRW5hYmxlIEJJR0lO
VDMyIG9wdGltaXphdGlvbiBhZ2FpbiBhZnRlciB3ZSBlbnN1cmUgU3BlZWRvbWV0ZXIyIGFuZCBK
ZXRTdHJlYW0yIHJlZ3Jlc3Npb25zIGFyZSBmaXhlZC4gKi8KIC8qIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ3NzcgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZmFhZGM3YTNj
N2YuLmFiYWUzYzAzZmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMTU1LDYgKzE1NSw0NiBAQAogICAgICAg
ICAqIHBsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpi
dWlsZFVzZXJBZ2VudFN0cmluZyk6CiAKKzIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0ICA8cm1v
cmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1Mwor
ICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6
dWtpLgorCisgICAgICAgIFNvbWUgcGFydHMgb2YgV2ViQ29yZSB1c2UgVHlwZWRBcnJheXMsIGFu
ZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBtYWRlIHRoZSBsZW5ndGgoKSBmdW5jdGlvbiBvbiB0
eXBlZCBhcnJheXMgcmV0dXJuIFVDUFVSZWdpc3RlciBpbnN0ZWFkIG9mIHVpbnQzMl90LgorICAg
ICAgICBNb3N0IGZpeGVzIHdlcmUgdHJpdmlhbCwgdGhlIG9ubHkgZXhjZXB0aW9uIGlzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAsIHdoZXJlIEkgaGFkIHRvIGluY3JlbWVudCB0aGUgdmVyc2lv
biBudW1iZXIsIGFzIEFycmF5QnVmZmVyIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgbm93IHdyaXRl
L3JlYWQgdGhlaXIgbGVuZ3RoIGluIGEgNjQtYml0IGZpZWxkIChhbmQgc2FtZSBmb3IgdGhlIGJ5
dGVPZmZzZXQgb2YgQXJyYXlCdWZmZXJWaWV3KS4KKworICAgICAgICBJIGFsc28gaGFkIHRvIGFk
ZCBhIHRlc3QgaW4gUGl4ZWxCdWZmZXIuY3BwIHRoYXQgdGhlIHNpemUgb2YgdGhlIEFycmF5QnVm
ZmVyIGl0IHdpbGwgdHJ5IHRvIGFsbG9jYXRlIGlzIDwgSU5UMzJfTUFYLgorICAgICAgICBPdGhl
cndpc2UsIHRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxv
YXRzL3NoYXBlLW91dHNpZGUtaW1hZ2VkYXRhLW92ZXJmbG93Lmh0bWwgd2hpY2ggY2hlY2tzIHRo
YXQgdmVyeSBsYXJnZSBpbWFnZXMgYXJlIHByb3Blcmx5IHJlamVjdGVkIHdpdGhvdXQgY3Jhc2hp
bmcsIHdvdWxkIHRpbWVvdXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGUgY29kZSBp
cyBhbHJlYWR5IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBJIGlt
cGxlbWVudGVkIG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlGcm9t
Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5E
YXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJWaWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEltYWdlQml0bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlckltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEFycmF5QnVmZmVyVmlld0ltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZp
ZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUpOgorICAgICAgICAq
IGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisKIDIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjI4
NDIzMCwgbXkgbGFzdCBmaXhlcyB0byB0aGUgd2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVhayB0ZXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApp
bmRleCBjYjdlODRkNDUzODMuLmIxOGQ4ZmQ2YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9hdDMyQXJy
YXk+JiYgZGVzdGluYXRpb24sCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQog
ICAgICAgICByZXR1cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0
aCAtIGJ1ZmZlck9mZnNldDsKKyAgICBzaXplX3QgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVy
T2Zmc2V0OwogICAgIGNvdW50ID0gc3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCks
IGNvdW50KTsKICAgICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEo
KTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29w
eVRvQ2hhbm5lbChSZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJjZSwgdW5zaWduZQogICAgIGlmIChi
dWZmZXJPZmZzZXQgPj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAg
ICB1bnNpZ25lZCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgc2l6ZV90
IGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWlu
KHNvdXJjZS5nZXQoKS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBz
cmMgPSBzb3VyY2UtPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uZDUzYjllNjQ0
ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlci5jcHAKQEAgLTE5Niw4ICsxOTYsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6
OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAg
ZG9GRlRBbmFseXNpc0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxp
bmVhciBtYWduaXR1ZGUgdG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNpZ25lZCBz
b3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0
aCA9IHN0ZDo6bWluKHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7Cisg
ICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKKyAgICBz
aXplX3QgZGVzdGluYXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAg
IHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uTGVuZ3Ro
KTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUgcmFuZ2VTY2Fs
ZUZhY3RvciA9IG1fbWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAxIC8gKG1fbWF4
RGVjaWJlbHMgLSBtX21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91YmxlIG1pbkRlY2li
ZWxzID0gbV9taW5EZWNpYmVsczsKQEAgLTIyNyw4ICsyMjgsOSBAQCB2b2lkIFJlYWx0aW1lQW5h
bHlzZXI6OmdldEZsb2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0aW5hdGlvbkFy
cmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgdW5zaWduZWQg
ZmZ0U2l6ZSA9IHRoaXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4o
ZmZ0U2l6ZSwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0
aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6
ZSA9IHRoaXMtPmZmdFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6
ZSwgZGVzdGluYXRpb25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGJv
b2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZl
clNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBBU1NFUlQo
aXNJbnB1dEJ1ZmZlckdvb2QpOwpAQCAtMjUxLDggKzI1Myw5IEBAIHZvaWQgUmVhbHRpbWVBbmFs
eXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVkIGZmdFNpemUg
PSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUs
IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0
aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlz
LT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3Rp
bmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5w
dXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYm
IG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRC
dWZmZXJHb29kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uOWM1ZTJjNTA3OWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XYXNtTW9k
dWxlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM0Miw4ICszNDMsOSBAQCBzdGF0aWMgdW5zaWduZWQg
Y291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVyc2lvbiA3LiBh
ZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNp
b24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUu
CiAgKiBWZXJzaW9uIDkuIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlQml0bWFwIGNvbG9yIHNwYWNl
LgorICogVmVyc2lvbiAxMC4gY2hhbmdlZCB0aGUgbGVuZ3RoIChhbmQgb2Zmc2V0cykgb2YgQXJy
YXlCdWZmZXJzIChhbmQgQXJyYXlCdWZmZXJWaWV3cykgZnJvbSAzMiB0byA2NCBiaXRzCiAgKi8K
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSAxMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBUZXJt
aW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdQb29s
VGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb25JbmRleFByb3BlcnRp
ZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMzk5LDcgKzQwMSw3IEBAIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJpbmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IE9iamVjdFJl
ZmVyZW5jZQogICogICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+
CiAgKiAgICB8IEFycmF5QnVmZmVyCi0gKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1
ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90
PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5QnVmZmVyVmll
d1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0X3Q+IDxieXRlTGVu
Z3RoOnVpbnQ2NF90PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCiAgKiAgICB8IENy
eXB0b0tleVRhZyA8d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRle3dyYXBw
ZWRLZXlMZW5ndGh9PgogICogICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0CkBAIC00NjMs
NyArNDY1LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0g
MHg4MDAwMDAwMDsKICAqICAgIE9iamVjdFJlZmVyZW5jZVRhZyA8b3BJbmRleDpJbmRleFR5cGU+
CiAgKgogICogQXJyYXlCdWZmZXIgOi0KLSAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWlu
dDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVu
Z3RoOnVpbnQ2NF90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgogICogICAgQXJyYXlCdWZmZXJU
cmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICBTaGFyZWRBcnJheUJ1ZmZlclRhZyA8
dmFsdWU6dWludDMyX3Q+CiAgKgpAQCAtOTEwLDcgKzkxMiw2IEBAIHByaXZhdGU6CiAjaWYgVVNF
KEJJR0lOVDMyKQogICAgIHZvaWQgZHVtcEJpZ0ludDMyRGF0YShpbnQzMl90IGludGVnZXIpCiAg
ICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih1aW50NjRfdCkgPT0gc2l6ZW9mKHVu
c2lnbmVkIGxvbmcgbG9uZykpOwogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50OF90Pihp
bnRlZ2VyIDwgMCkpOwogICAgICAgICBpZiAoIWludGVnZXIpIHsKICAgICAgICAgICAgIHdyaXRl
KHN0YXRpY19jYXN0PHVpbnQzMl90PigwKSk7IC8vIExlbmd0aC1pbi11aW50NjRfdApAQCAtOTIw
LDE4ICs5MjEsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IHN0YXRpY19j
YXN0PGludDY0X3Q+KGludGVnZXIpOwogICAgICAgICBpZiAodmFsdWUgPCAwKQogICAgICAgICAg
ICAgdmFsdWUgPSAtdmFsdWU7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4odmFsdWUpKTsKKyAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZh
bHVlKSk7CiAgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIGR1bXBIZWFwQmlnSW50RGF0YShKU0Jp
Z0ludCogYmlnSW50KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YodWludDY0
X3QpID09IHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpKTsKICAgICAgICAgd3JpdGUoc3RhdGlj
X2Nhc3Q8dWludDhfdD4oYmlnSW50LT5zaWduKCkpKTsKICAgICAgICAgaWYgY29uc3RleHByIChz
aXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSBzaXplb2YodWludDY0X3QpKSB7CiAgICAgICAgICAg
ICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYmlnSW50LT5sZW5ndGgoKSkpOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYmlnSW50LT5sZW5ndGgoKTsg
KytpbmRleCkKLSAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KGJpZ0ludC0+ZGlnaXQoaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGJpZ0ludC0+ZGlnaXQoaW5kZXgpKSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gc2l6ZW9m
KHVpbnQzMl90KSk7CiAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGhJblVpbnQ2NCA9IGJpZ0lu
dC0+bGVuZ3RoKCkgLyAyOwpAQCAtOTQ0LDEyICs5NDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSBiaWdJbnQtPmRpZ2l0KGluZGV4KTsKICAgICAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGJpZ0ludC0+ZGlnaXQoaW5kZXgpKSA8PCAzMikgfCB2YWx1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPih2YWx1ZSkpOworICAg
ICAgICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpKTsKICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICYgMHgxKQotICAgICAgICAg
ICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4odmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtOTk4LDggKzk5OCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5QnVm
ZmVyVmlldyA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlclZpZXcodm0sIG9iaik7Ci0gICAg
ICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZz
ZXQoKSkpOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJW
aWV3LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgdWludDY0X3QgYnl0ZU9mZnNldCA9IGFycmF5
QnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpOworICAgICAgICB3cml0ZShieXRlT2Zmc2V0KTsKKyAg
ICAgICAgdWludDY0X3QgYnl0ZUxlbmd0aCA9IGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgp
OworICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlciA9IGFycmF5QnVmZmVyVmlldy0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsK
ICAgICAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CkBAIC0xMTMxLDggKzExMzMsMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihidWZmZXItPnJlc29s
dXRpb25TY2FsZSgpKSk7CiAgICAgICAgIHdyaXRlKGJ1ZmZlci0+Y29sb3JTcGFjZSgpKTsKIAot
ICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSkpOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlC
dWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBDaGVj
a2VkVWludDMyIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAg
ICBpZiAoYnl0ZUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgIGNvZGUgPSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICB3cml0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVM
ZW5ndGgpOwogICAgIH0KIAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMp
CkBAIC0xMjU2LDE1ICsxMjYzLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9ibG9i
SGFuZGxlcy5hcHBlbmQoYmxvYi0+aGFuZGxlKCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGJs
b2ItPnVybCgpLnN0cmluZygpKTsKICAgICAgICAgICAgICAgICB3cml0ZShibG9iLT50eXBlKCkp
OwotICAgICAgICAgICAgICAgIHdyaXRlKGJsb2ItPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YodWludDY0X3QpID09IHNpemVvZihkZWNsdHlwZShibG9iLT5z
aXplKCkpKSk7CisgICAgICAgICAgICAgICAgdWludDY0X3Qgc2l6ZSA9IGJsb2ItPnNpemUoKTsK
KyAgICAgICAgICAgICAgICB3cml0ZShzaXplKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gSlNJbWFnZURh
dGE6OnRvV3JhcHBlZCh2bSwgb2JqKSkgewogICAgICAgICAgICAgICAgIHdyaXRlKEltYWdlRGF0
YVRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7CiAgICAgICAgICAg
ICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEt
PmRhdGEoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRh
dGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVja2VkVWlu
dDMyIGRhdGFMZW5ndGggPSBkYXRhLT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAg
aWYgKGRhdGFMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNv
ZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB3cml0ZShkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCku
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5jb2xvclNw
YWNlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAt
MTMxMSw4ICsxMzI1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgd3JpdGUoQXJyYXlCdWZmZXJUYWcpOwotICAgICAgICAg
ICAgICAgIHdyaXRlKGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAg
IHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgYnl0
ZUxlbmd0aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgd3Jp
dGUoYnl0ZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvYmotPmlu
aGVyaXRzPEpTQXJyYXlCdWZmZXJWaWV3Pih2bSkpIHsKQEAgLTE1MDIsNyArMTUxNyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsKICAgICB9CiAK
LSAgICB2b2lkIHdyaXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQorICAgIHZvaWQgd3JpdGUodWlu
dDY0X3QgaSkKICAgICB7CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsK
ICAgICB9CkBAIC0yMzkxLDcgKzI0MDYsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWQodW5zaWduZWQgbG9uZyBsb25nJiBpKQorICAgIGJv
b2wgcmVhZCh1aW50NjRfdCYgaSkKICAgICB7CiAgICAgICAgIHJldHVybiByZWFkTGl0dGxlRW5k
aWFuKGkpOwogICAgIH0KQEAgLTI1NTUsOSArMjU3MCwxMCBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlcihSZWZQdHI8QXJy
YXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMZW5ndGhUeXBl
PgorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVySW1wbChSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJh
eUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aDsKKyAgICAgICAgTGVuZ3Ro
VHlwZSBsZW5ndGg7CiAgICAgICAgIGlmICghcmVhZChsZW5ndGgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpZiAobV9wdHIgKyBsZW5ndGggPiBtX2VuZCkKQEAgLTI1Njks
MTUgKzI1ODUsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJW
aWV3KQorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5
QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAgICAgICAg
cmV0dXJuIHJlYWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5QnVmZmVyKTsKKyAgICAg
ICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlckltcGw8dWludDY0X3Q+KGFycmF5QnVmZmVyKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGVuZ3RoVHlwZT4KKyAgICBib29sIHJlYWRB
cnJheUJ1ZmZlclZpZXdJbXBsKFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3KQogICAg
IHsKICAgICAgICAgQXJyYXlCdWZmZXJWaWV3U3VidGFnIGFycmF5QnVmZmVyVmlld1N1YnRhZzsK
ICAgICAgICAgaWYgKCFyZWFkQXJyYXlCdWZmZXJWaWV3U3VidGFnKGFycmF5QnVmZmVyVmlld1N1
YnRhZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5dGVP
ZmZzZXQ7CisgICAgICAgIExlbmd0aFR5cGUgYnl0ZU9mZnNldDsKICAgICAgICAgaWYgKCFyZWFk
KGJ5dGVPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50MzJf
dCBieXRlTGVuZ3RoOworICAgICAgICBMZW5ndGhUeXBlIGJ5dGVMZW5ndGg7CiAgICAgICAgIGlm
ICghcmVhZChieXRlTGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
SlNPYmplY3QqIGFycmF5QnVmZmVyT2JqID0gYXNPYmplY3QocmVhZFRlcm1pbmFsKCkpOwpAQCAt
MjU4Nyw3ICsyNjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgZWxlbWVudFNpemUg
PSB0eXBlZEFycmF5RWxlbWVudFNpemUoYXJyYXlCdWZmZXJWaWV3U3VidGFnKTsKICAgICAgICAg
aWYgKCFlbGVtZW50U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5z
aWduZWQgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOworICAgICAgICBMZW5ndGhU
eXBlIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKGxlbmd0
aCAqIGVsZW1lbnRTaXplICE9IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTI2MzQsNiArMjY1OCwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisg
ICAgYm9vbCByZWFkQXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJW
aWV3KQorICAgIHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAgICAgICAgcmV0
dXJuIHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQzMl90Pih2bSwgYXJyYXlCdWZmZXJWaWV3
KTsKKyAgICAgICAgcmV0dXJuIHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQ2NF90Pih2bSwg
YXJyYXlCdWZmZXJWaWV3KTsKKyAgICB9CisKICAgICBib29sIHJlYWQoVmVjdG9yPHVpbnQ4X3Q+
JiByZXN1bHQpCiAgICAgewogICAgICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7CkBAIC0z
MzQ1LDcgKzMzNzYsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlcjsKIAotICAgICAgICBpZiAoIXJlYWQoc2VyaWFsaXphdGlvblN0YXRlKSB8fCAh
cmVhZChsb2dpY2FsV2lkdGgpIHx8ICFyZWFkKGxvZ2ljYWxIZWlnaHQpIHx8ICFyZWFkKHJlc29s
dXRpb25TY2FsZSkgfHwgKG1fdmVyc2lvbiA+IDggJiYgIXJlYWQoY29sb3JTcGFjZSkpIHx8ICFy
ZWFkQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpKSB7CisgICAgICAgIGlmICghcmVhZChzZXJpYWxp
emF0aW9uU3RhdGUpIHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNhbEhlaWdo
dCkgfHwgIXJlYWQocmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAhcmVhZChj
b2xvclNwYWNlKSkgfHwgIXJlYWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5QnVmZmVy
KSkgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICAgICAgfQpAQCAtMzQxMSw4ICszNDQyLDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQklHSU5U
MzIpCiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSk7CiAgICAgICAgIGlmIChsZW5ndGhJblVpbnQ2NCA9PSAxKSB7Ci0gICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpID09IHNpemVv
Zih1aW50NjRfdCkpOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRpZ2l0NjQgPSAw
OworICAgICAgICAgICAgdWludDY0X3QgZGlnaXQ2NCA9IDA7CiAgICAgICAgICAgICBpZiAoIXJl
YWQoZGlnaXQ2NCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
ICAgIGlmIChzaWduKSB7CkBAIC0zNDQ3LDggKzM0NzcsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3Ig
KHVpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGhJblVpbnQ2NDsgKytpbmRleCkgewot
ICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykg
PT0gc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGRpZ2l0NjQgPSAwOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRpZ2l0NjQgPSAwOwogICAg
ICAgICAgICAgICAgIGlmICghcmVhZChkaWdpdDY0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KGluZGV4LCBk
aWdpdDY0KTsKQEAgLTM0NjEsOCArMzQ5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAodWludDMy
X3QgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aEluVWludDY0OyArK2luZGV4KSB7Ci0gICAgICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSA9PSBzaXpl
b2YodWludDY0X3QpKTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlnaXQ2
NCA9IDA7CisgICAgICAgICAgICAgICAgdWludDY0X3QgZGlnaXQ2NCA9IDA7CiAgICAgICAgICAg
ICAgICAgaWYgKCFyZWFkKGRpZ2l0NjQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoaW5kZXggKiAyLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZGlnaXQ2NCkpOwpAQCAtMzYxOCw3ICszNjQ2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiB0eXBlOwogICAgICAgICAgICAgaWYgKCFy
ZWFkU3RyaW5nRGF0YSh0eXBlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwot
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNpemUgPSAwOworICAgICAgICAgICAgdWlu
dDY0X3Qgc2l6ZSA9IDA7CiAgICAgICAgICAgICBpZiAoIXJlYWQoc2l6ZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVhdGVET01P
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCmluZGV4IGZiNzU3YTRkNzRmNi4uN2U0OWE5ZTczMjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTY3
LDcgKzE2Nyw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBpZiAoaGFzQXJyYXkpIHsKICAgICAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4obV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPnNpemUoKSk7
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byAmYXJyYXlCdWZmZXJDb250ZW50cyA6ICptX2FycmF5
QnVmZmVyQ29udGVudHNBcnJheSkgewotICAgICAgICAgICAgZW5jb2RlciA8PCBhcnJheUJ1ZmZl
ckNvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90PihhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCkpOwogICAgICAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGFycmF5QnVmZmVyQ29udGVudHMuZGF0YSgpKSwgYXJyYXlCdWZmZXJDb250ZW50cy5z
aXplSW5CeXRlcygpLCAxKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5OSw5ICsxOTksMTIgQEAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkg
PSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICAgICAgd2hpbGUg
KGFycmF5TGVuZ3RoLS0pIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNpemU7CisgICAg
ICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRCdWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKKyAgICAg
ICAgICAgIGlmIChjaGVja2VkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUg
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjEyLDcgKzIxNSw3IEBAIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+YXBwZW5kKHsg
YnVmZmVyLCBidWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVj
dG9yKCkgfSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFwcGVuZCh7
IGJ1ZmZlciwgY2hlY2tlZEJ1ZmZlclNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2Fn
ZURlc3RydWN0b3IoKSB9KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi41NTllYmNjNDhj
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAt
NjgsNyArNjgsOSBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29yZTo6Qmxv
YiYgYmxvYikKIAogICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwogICAgIGlmICgh
Ynl0ZUxlbmd0aCkgewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSgw
VSwgMSksIDAsIDApOworICAgICAgICAvLyBUaGUgY2FzdCBsb29rcyB3ZWlyZCwgYnV0IGlzIHJl
cXVpcmVkIGZvciB0aGUgb3ZlcmxvYWRpbmcgcmVzb2x1dGlvbiB0byBzdWNjZWVkLgorICAgICAg
ICAvLyBXaXRob3V0IGl0LCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkgd2hlcmUgQXJyYXlCdWZmZXI6
OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKSBjb3VsZCBiZSBj
YWxsZWQgaW5zdGVhZC4KKyAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8c2l6ZV90PigwVSksIDEpLCAwLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBhdXRvIGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlUmVmPEJsb2JMb2FkZXI+KFt0aGlz
XShCbG9iTG9hZGVyJikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuY3BwCmluZGV4IDI1YmZmMTUzZDEyYy4uNzU0M2Y0NzVhMjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03
NCw2ICs3NCw4IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXpl
ID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5o
YXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1
ZmZlclNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRB
cnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVs
QXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li5kODNlNGE0
MDQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02Myw3ICs2NCwxMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgY2hlY2tlZFJlYWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZp
ZXcsIHVuc2lnbmVkJiBvZmZzZXQsIEVuZGlhbm5lc3MgZW5kaWFubmVzcykKICAgICB7CiAgICAg
ICAgIGJvb2wgcmVhZFN0YXR1cyA9IGZhbHNlOwotICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1w
bGF0ZSByZWFkPFQ+KG9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3Rh
dHVzKTsKKyAgICAgICAgc2l6ZV90IGFjdHVhbE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgVCB2
YWx1ZSA9IHZpZXcudGVtcGxhdGUgcmVhZDxUPihhY3R1YWxPZmZzZXQsIGVuZGlhbm5lc3MgPT0g
TGl0dGxlRW5kaWFuLCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5C
b3VuZHM8dWludDMyX3Q+KGFjdHVhbE9mZnNldCkpOworICAgICAgICBvZmZzZXQgPSBhY3R1YWxP
ZmZzZXQ7CiAgICAgICAgIGlmICghcmVhZFN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAo=
</data>
<flag name="commit-queue"
          id="465714"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441504</attachid>
            <date>2021-10-16 13:40:37 -0700</date>
            <delta_ts>2021-10-16 19:25:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>277488</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjI2MmNkYTM4M2Q1Li5lYzZiYjNjMWQ4NTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
NSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFr
IHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxseS1v
b2IuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1MzliNTBkMmU1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQorewor
ICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7Citm
dW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4
XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVl
OworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICog
MTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdl
dEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAg
ICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9m
IHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwor
ICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAg
ICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisg
ICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2Yt
Ym91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNz
L3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIu
anMKaW5kZXggNzdkNTBjMzUwYjQ2Li5lZDBlN2FmMDkxM2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JV
RkZFUl9TSVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVx
dWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2
LDEzIEBAIGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewog
ICAgIHZhciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRk
TWVtb3J5KDMyNzY4KTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KCgyKioxNikgKyAxKTsKICAgICBt
b2R1bGUuaW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwog
fQogCi1pZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikgeworaWYg
KGV4Y2VwdGlvbiAhPSAiQ29tcGlsZUVycm9yOiBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDE1OiBNZW1vcnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgNjU1MzcgaXMg
aW52YWxpZCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0aGlzLnRvQnVmZmVy
KCkpJykiKSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1t
b3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMK
aW5kZXggYmE2MmQ5MTQ3NmFhLi4wMWYwNmQyZjQ5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2
YXIgZXhjZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0
aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXI7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMDEsIG1heGltdW06IDB4MTAwMDEgfSkuYnVmZmVy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24g
IT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQotICAgIHRocm93ICJGQUlMRUQiOworaWYg
KGV4Y2VwdGlvbiAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCisgICAgdGhyb3cgIkZBSUxFRCwgZXhjZXB0aW9uIHdh
czogIiArIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDEzYWFkNjZjNTEuLjQ1OWZiOTNiNzk1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtNzAsNiArNzAsMjIgQEAKICAgICAgICAgKiBmYXN0L2lubGluZS93b3JkYnJlYWstYXQt
aW5saW5lLWJveC1ib3VuZGFyeS1leHBlY3RlZC5odG1sOiBBZGRlZC4KICAgICAgICAgKiBmYXN0
L2lubGluZS93b3JkYnJlYWstYXQtaW5saW5lLWJveC1ib3VuZGFyeS5odG1sOiBBZGRlZC4KIAor
MjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IFdBU00gdG8gdXNlIHVwIHRvIDRHQgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzUzCisgICAgICAgIHJkYXI6Ly84MTYwMzQ0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgUmViYXNlbGlu
ZWQgdGhyZWUgZm9sbG93aW5nIHRlc3RzIGFzIGRpZmZlcmVudCBvciBmZXdlciBlcnJvciBtZXNz
YWdlcyBhcHBlYXIgb24gdGhlIGNvbnNvbGUuCisgICAgICAgIEFsc28gY2hhbmdlZCBjdXJyZW50
VmVyc2lvbiBpbiBzZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGZyb20gOSB0byAxMC4KKwor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtaW52YWxpZC1yZXN1bHQt
YnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3N0b3JhZ2Uvc2VyaWFs
aXplZC1zY3JpcHQtdmFsdWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b250ZXh0LWJhZC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAy
MDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2Ug
aXQgYnJlYWsgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJp
YWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3Nlcmlh
bGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggNTU0YTAyZGYxN2FkLi44N2JjYzQ0OTJjMTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12
YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0
PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9
IDB4MGE7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50
dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1idWZm
ZXItY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDQ5OGJkYWNmZGRjNS4uNWI4ZjM2NjU5Y2IzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LWJhZC1i
dWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9C
dWZmZXIgd2l0aCAxIGNoYW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVu
Z3RoIG9mIDUzNjg3MDkxMi4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2gu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxl
bmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTU2YTU3Nzk3OTQ5Li5kMDczNjAwMTQzMDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQvYmFkLWJ1ZmZl
ci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQvYmFkLWJ1ZmZlci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQ09OU09MRSBNRVNTQUdFOiBGYWlsZWQgdG8gY29uc3RydWN0IGludGVybmFsIEF1ZGlvQnVm
ZmVyIHdpdGggMSBjaGFubmVsKHMpLCBhIHNhbXBsZSByYXRlIG9mIDQ0MDAwIGFuZCBhIGxlbmd0
aCBvZiA1MzY4NzA5MTIuCiBNYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IE9m
ZmxpbmVBdWRpb0NvbnRleHQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoZSByZW5k
ZXJpbmcgYnVmZmVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkNzYwNDY4MTEyY2YuLmQyNDcwMTJhNzdhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc1IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8g
NEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkz
NTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBXaGlsZSBpbmNyZWFzaW5nIE1BWF9BUlJBWV9CVUZGRVJfU0la
RSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVtb3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVx
dWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKKyAgICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2Vu
dGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZm
ZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBzaXplX3QuCisgICAgICAgIC0gVGhpcyBhbHNv
IHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJyYXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5l
L0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMyIHNpemUuCisgICAgICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0
aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cgaGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlw
ZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3Ry
aWN0SW50NTIpCisgICAgICAgIC0gU2ltaWxhcmx5LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRoZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFy
Z2VyIG51bWJlci4KKyAgICAgICAgICAgIEkgYWxzbyBoYWQgdG8gc3BsaXQgdGhlbSBpbiB0aGUg
REZHL0ZUTCwgc2VlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIGFuZCBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIgZm9yIGV4YW1wbGVzCisgICAgICAgIC0gSW4gdHVybnMsIEkgaGFk
IHRvIGFkZCBDaGVja0luQm91bmRzSW50NTIgc2luY2UgQ2hlY2tJbkJvdW5kcyBjb3VsZCBub3Qg
YWNjZXB0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIKKyAgICAgICAg
LSBJIG1vZGlmaWVkIHRoZSBydW50aW1lIGZ1bmN0aW9ucyBmb3IgR2V0QnlWYWwvUHV0QnlWYWwv
RGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWCB0byBhY2NlcHQgbm9uLUludDMyIGlu
ZGljZXMsIHNpbmNlIGZvciB7SW50OC9VSW50OC9VSW50OENsYW1wZWR9QXJyYXksIGEgbWF4aW11
bSBzaXplIG9mIDRHQiBpbXBsaWVzIGluZGljZXMgPiAyQi4KKyAgICAgICAgLSBJIGFkZGVkIGEg
Im1heUJlTGFyZ2VUeXBlZEFycmF5IiBiaXQgdG8gQXJyYXlQcm9maWxlL1VubGlua2VkQXJyYXlQ
cm9maWxlL0RGRzo6QXJyYXlNb2RlIHRvIHRyYWNrIHdoZXRoZXIgc3VjaCBhIG5vbi1JbnQzMiBp
bmRleCB3YXMgc2VlbiB0byBhbGxvdyBwcm9wZXIgc3BlY3VsYXRpb24gYW5kIHNwZWNpYWxpemF0
aW9uIG9mIGZhc3QgcGF0aHMgaW4gdGhlIERGRy9GVEwuCisgICAgICAgICAgICBJIHRoZW4gdXBk
YXRlZCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc2xvdyBwYXRocyB0byBjb3Jy
ZWN0bHkgdXBkYXRlIGl0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgSSByYW4gb3V0IG9mIHRp
bWUgdG8gYWRkIGFsbCB0aGUgc3BlY3VsYXRpb25zL3VwZGF0ZSBhbGwgdGhlIGZhc3QgcGF0aHMu
CisgICAgICAgIFNvIHRoZSBmb2xsb3dpbmcgd2lsbCBoYXZlIHRvIHdhaXQgZm9yIGEgZm9sbG93
LXVwIHBhdGNoOgorICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0
IHBhdGggb2YgR2V0QnlWYWwgaW4gdGhlIExMSW50CisgICAgICAgIC0gQWNjZXB0aW5nIGxhcmdl
IGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aHMgZ2VuZXJhdGVkIGJ5IEFjY2Vzc0Nhc2UvUG9seW1v
cnBoaWNBY2Nlc3MKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0aGUgZmFz
dCBwYXRocyBnZW5lcmF0ZWQgYnkgdGhlIERGRy9GVEwgZm9yIGVhY2ggb2YgR2V0QnlWYWwvUHV0
QnlWYWwvRGF0YVZpZXdHZXQvRGF0YVZpZXdTZXQvQXRvbWljc1hYWAorCisgICAgICAgIFRoZSBj
dXJyZW50IHBhdGNoIGlzIGZ1bmN0aW9uYWwsIGl0IHdpbGwganVzdCBoYXZlIGRyZWFkZnVsIHBl
cmZvcm1hbmNlIGlmIHRyeWluZyB0byB1c2UgaW5kaWNlcyA+MkIgaW4gYSB7SW50OC9VSW50OC9V
SW50OENsYW1wZWR9QXJyYXkuCisKKyAgICAgICAgT3RoZXIgbWlub3IgY2hhbmdlcyBpbiB0aGlz
IHBhdGNoOgorICAgICAgICAtIEZpeGVkIGFuIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlSW50ZXJuYWwgd2hlcmUgbWVtY3B5IGNvdWxkIGJlIGNhbGxlZCBvbiBudWxs
cHRyICh0aGUgc3BlYyBleHBsaWNpdGx5IGJhbnMgdGhpcyBldmVuIHdoZW4gbGVuZ3RoIGlzIDAp
CisgICAgICAgIC0gUmVwbGFjZWQgc29tZSByZXBldGl0aXZlIGFuZCBlcnJvci1wcm9uZSBib3Vu
ZHMgY2hlY2tpbmcgYnkgY2FsbHMgdG8gV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbCwgd2hp
Y2ggaXMgY2xlYXJlciwgc2hvcnRlciwgYW5kIHJldXNlIENoZWNrZWRBcml0aG1ldGljIGZhY2ls
aXRpZXMgdG8gYXZvaWQgb3ZlcmZsb3cgaXNzdWVzLgorICAgICAgICAtIEZpeGVkIGEgdmFyaWV0
eSBvZiBvYnNvbGV0ZSBjb21tZW50cworICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGJyYW5j
aDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdo
dCkKKyAgICAgICAgICAgICh0aGVyZSB3YXMgYWxyZWFkeSBzdXBwb3J0IGZvciB0aGUgc2FtZSBi
dXQgd2l0aCBUcnVzdGVkSW1tNjQpCisgICAgICAgIC0gTWFkZSB2YXJpb3VzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIgZnVuY3Rpb24gY29uc3RleHByIGFzIHBhcnQgb2YgdGhlIHByZXZpb3VzIHBv
aW50CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHI6OmFz
SW50cHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cjo6YXNQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpJbW1Q
dHI6OkltbVB0cik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0
cjo6YXNUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyOjpUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpJbW0zMjo6SW1tMzIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMjo6YXNUcnVzdGVkSW1tMzIgY29uc3QpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQ6OlRydXN0ZWRJbW02NCk6CisgICAg
ICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0OjpJbW02NCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbTY0Ojphc1RydXN0ZWRJbW02NCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmNhbkJsaW5kKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNo
b3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YnJhbmNoNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxl
bmd0aDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnQXJyYXlQ
dHJMZW5ndGgzMik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYW5C
bGluZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzaG91bGRCbGlu
ZEZvclNwZWNpZmljQXJjaCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBieXRlY29k
ZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpzZXRNYXlCZUxh
cmdlVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5QmVMYXJnZVR5
cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6VW5s
aW5rZWRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6
dXBkYXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6QXJyYXlNb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Om1heUJlTGFyZ2VUeXBlZEFycmF5IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhUeXBlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6QXJyYXlNb2RlOjp3aXRoQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjp3aXRoVHlwZUFuZENvbnZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFy
Z2VUeXBlZEFycmF5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6d2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoQXJyYXlD
bGFzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpjb252ZXJ0VG9HZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6cHJlcGVuZEdldEFycmF5TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
R2VuZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlv
bi5oOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNT
dG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0b3JhZ2VDaGls
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3VHlw
ZWRBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBTG93
ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFu
ZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6bG93ZXJCb3Vu
ZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5
cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Z2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlX
aXRoSW50NTJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAg
IChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJh
eUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjplbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVj
a0luQm91bmRzSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRM
T3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkNjROb25OZWdhdGl2ZSk6
CisgICAgICAgICogaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5jcHA6
CisgICAgICAgIChKU0M6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVm
ZmVyQ29udGVudHMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlRnJvbUJ5dGVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlcjo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFtcElu
ZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJ
bmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlC
dWZmZXI6OmdjU2l6ZUVzdGltYXRlSW5CeXRlcyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OkFycmF5
QnVmZmVyVmlldyk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkFy
cmF5QnVmZmVyVmlldzo6Y2xhbXBPZmZzZXRBbmROdW1FbGVtZW50cyk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6c2V0SW1wbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmll
dzo6c2V0UmFuZ2VJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpnZXRSYW5n
ZUltcGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OkRhdGFWaWV3
KToKKyAgICAgICAgKEpTQzo6RGF0YVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9E
YXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3OjpzaXplT2YpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZz
ZXRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0luZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UeXBlZEFycmF5SW5kZXggY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgor
ICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpzZXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3
OjpzZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICog
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RGF0YSk6
CisgICAgICAgIChKU0M6OnNldERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3Bl
Y2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnNldCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0QnlJbmRleElubGluZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlH
ZXRJbmRleFF1aWNrbHkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5k
ZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhp
bmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeVNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25z
Lmg6CisgICAgICAgIChKU0M6OmdldEJ5VmFsV2l0aEluZGV4KToKKyAgICAgICAgKiB3YXNtL1dh
c21QYWdlQ291bnQuaDoKKwogMjAyMS0xMC0xNSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRo
ZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFrIHRlc3RzCkBAIC0yNTQsNyArNTI2LDcgQEAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KIAogICAgICAgICBXaGlsZSBpbmNyZWFz
aW5nIE1BWF9BUlJBWV9CVUZGRVJfU0laRSB0byA0R0Igd2FzIGVhc3ksIGl0IHdhcyBub3QgcmVt
b3RlbHkgdGhlIG9ubHkgdGhpbmcgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgdG8gd29yazoKLSAgICAg
ICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFuZ2Vk
IGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBVQ1BV
UmVnaXN0ZXIuCisgICAgICAgIC0gNEdCIGlzIG5vdCByZXByZXNlbnRhYmxlIGluIGEgdWludDMy
X3QsIHNvIEkgY2hhbmdlZCBhbGwgbGVuZ3RoIG9mIEFycmF5QnVmZmVyL1R5cGVkQXJyYXkvZXRj
Li4gdG8gYmVpbmcgc2l6ZV90LgogICAgICAgICAtIFRoaXMgYWxzbyByZXF1aXJlZCBjaGFuZ2lu
ZyBOZXdUeXBlZEFycmF5IGluIGFsbCBvZiBMTEludC9CYXNlbGluZS9ERkcvRlRMIHRvIGFjY2Vw
dCBhIG5vbi1pbnQzMiBzaXplLgogICAgICAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgcGVyZm9y
bWFuY2UgcmVncmVzc2lvbnMsIEkgaGFkIHRvIGFkZCBzcGVjdWxhdGlvbiBpbiB0aGUgREZHL0ZU
TCwgd2hpY2ggbm93IGhhdmUgdHdvIHZlcnNpb25zIG9mIE5ld1R5cGVkQXJyYXkgKG9uZSB0aGF0
IHRha2VzIGFuIEludDMyIGFuZCBvbmUgdGhhdCB0YWtlcyBhIFN0cmljdEludDUyKQogICAgICAg
ICAtIFNpbWlsYXJseSwgR2V0QXJyYXlMZW5ndGggYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
IG5vdyBjYW4gZWl0aGVyIHJldHVybiBhbiBJbnQzMiBvciBhIGxhcmdlciBudW1iZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAppbmRleCBkY2M5ZTU5MjMxY2YuLjU1ZmQ3NWY0OTZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggZDdhYTBiN2JjOWFjLi45M2ViM2JmZTIwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0yNjUsOSArMjY1LDkgQEAgcHVibGljOgogICAgIC8vIGlu
IGEgY2xhc3MgcmVxdWlyaW5nIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBpbiBvcmRlciB0byBkaWZm
ZXJlbnRpYXRlCiAgICAgLy8gZnJvbSBwb2ludGVycyB1c2VkIGFzIGFic29sdXRlIGFkZHJlc3Nl
cyB0byBtZW1vcnkgb3BlcmF0aW9ucwogICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIDogcHVibGlj
IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CisgICAgICAgIGNvbnN0
ZXhwciBUcnVzdGVkSW1tUHRyKCkgeyB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg
VHJ1c3RlZEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0yNzgsMjEgKzI3OCwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
c3RkOjpudWxscHRyX3QpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRy
KHN0ZDo6bnVsbHB0cl90KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBleHBsaWNp
dCBUcnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHBy
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICBjb25zdGV4cHIgaW50cHRyX3QgYXNJbnRw
dHIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4obV92YWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBhc1B0cigpCisgICAg
ICAgIGNvbnN0ZXhwciB2b2lkKiBhc1B0cigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsKICAgICAgICAgfQpAQCAtMzAyLDEyICszMDIs
MTIgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEltbVB0ciA6IHByaXZhdGUgVHJ1c3RlZEltbVB0
cgogICAgIHsKLSAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAg
ICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAg
ICAgICAgOiBUcnVzdGVkSW1tUHRyKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgICAgIGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRyIGFzVHJ1c3RlZEltbVB0cigpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgfTsKIAogICAgIC8vIFRydXN0ZWRJbW0zMjoKQEAgLTMyNSw3ICszMjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQotICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1f
dmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzM2LDE3ICsz
MzYsMTcgQEAgcHVibGljOgogCiAKICAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJ
bW0zMiB7Ci0gICAgICAgIGV4cGxpY2l0IEltbTMyKGludDMyX3QgdmFsdWUpCisgICAgICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmICFDUFUoWDg2XzY0KQot
ICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGlj
aXQgY29uc3RleHByIEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIocHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBjb25z
dCBUcnVzdGVkSW1tMzImIGFzVHJ1c3RlZEltbTMyKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0K
KyAgICAgICAgY29uc3RleHByIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1tMzIoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgfTsKICAgICAKQEAgLTM1NywxNSArMzU3LDE1
IEBAIHB1YmxpYzoKICAgICAvLyAod2hpY2ggYXJlIGltcGxlbWVudGVkIGFzIGFuIGVudW0pIGZy
b20gYWNjaWRlbnRhbGx5IGJlaW5nIHBhc3NlZCBhcwogICAgIC8vIGltbWVkaWF0ZSB2YWx1ZXMu
CiAgICAgc3RydWN0IFRydXN0ZWRJbW02NCA6IFRydXN0ZWRJbW0gewotICAgICAgICBUcnVzdGVk
SW1tNjQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJbW02NCgpIHsgfQogICAgICAg
ICAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKICAgICAgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBU
cnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRy
LmFzSW50cHRyKCkpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMzc2LDE3ICszNzYsMTcgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgICB7
Ci0gICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
NjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1Q
dHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgSW1tNjQoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKICAgICAgICAg
fQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25zdGV4cHIgY29uc3QgVHJ1c3RlZElt
bTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgfTsKICAg
ICAKICAgICAvLyBTZWN0aW9uIDI6IE1hY3JvQXNzZW1ibGVyIGNvZGUgYnVmZmVyIGhhbmRsZXMK
QEAgLTEwNTMsOSArMTA1Myw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICAgfQotICAg
IHN0YXRpYyBib29sIGNhbkJsaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQmxpbmQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91bGRCbGluZEZvclNw
ZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBjbGFzcyBDYWNoZWRUZW1wUmVnaXN0ZXIgewogICAgICAgICBmcmllbmQg
Y2xhc3MgRGF0YUxhYmVsUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDAxZTQ4YTExYmJiMC4uNDEzMjMwMmY4YTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBA
IC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoTXVsMzI7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFg4
Nl82NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShSSVNDVjY0KQogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6YnJhbmNoUHRyOworI2VuZGlmCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDY0OwogI2VuZGlmCiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Omxz
aGlmdDMyOwpAQCAtMTQ2MCw2ICsxNDYzLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGFuZDY0KGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgICB9CisKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgIUNQVShYODYpICYmICFDUFUoWDg2XzY0KSAm
JiAhQ1BVKEFSTTY0KQpAQCAtMTcyNyw3ICsxNzMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
c3RvcmU2NChpbW0uYXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCi0jZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgCiAgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwg
QWRkcmVzcyBkZXN0KQogICAgIHsKQEAgLTE4MjEsNiArMTgyNSwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW0zMigpKTsK
ICAgICB9CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIC8vIE90aGVyIDY0LWJpdCBwbGF0Zm9ybXMg
ZG9uJ3QgbmVlZCBibGluZGluZywgYW5kIGhhdmUgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlv
biwgUmVnaXN0ZXJJRCwgSW1tNjQpIGRpcmVjdGx5IGRlZmluZWQgaW4gdGhlIHJpZ2h0IGZpbGUu
CisgICAgLy8gV2UgY2Fubm90IHB1dCB0aGlzIGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgsIGJl
Y2F1c2UgaXQgdXNlcyBzaG91bGRCbGluZCgpLCBsb2FkUm9hdGlvbkJsaW5kZWRDb25zdGFudCwg
ZXRjLi4gd2hpY2ggYXJlIG9ubHkgZGVmaW5lZCBoZXJlIGFuZCBub3QgdGhlcmUuCisgICAgSnVt
cCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1t
NjQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CisgICAg
ICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50
KHJpZ2h0KSwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2Ny
YXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIHVzZSwgd2UnbGwganVzdAorICAgICAgICAgICAg
Ly8gcGxhY2UgYSByYW5kb20gbnVtYmVyIG9mIG5vcHMuCisgICAgICAgICAgICB1aW50MzJfdCBu
b3BDb3VudCA9IHJhbmRvbSgpICYgMzsKKyAgICAgICAgICAgIHdoaWxlIChub3BDb3VudC0tKQor
ICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9Cisj
ZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCA1Zjk4ZmY5ZTMzN2MuLjg1NzQwNTVjOWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE0NCw4ICsxNDQs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxpbmtSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjpscjsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmVhc29uYWJsZSBp
bXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7
IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNv
bnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0g
MHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBvcGVyYXRpb25zOgogCkBAIC0zMzA1LDYg
KzMzMDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJbW02NCgpKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBB
ZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDY0KHJpZ2h0LCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMjQ3MGMx
MTk2NjFiLi4wNzRhMzk4Zjg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRh
Z0FycmF5UHRyTGVuZ3RoMzIoQWRkcmVzcyBsZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29s
IHZhbGlkYXRlQXV0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdBcnJheVB0ckxlbmd0
aDY0KEFkZHJlc3MgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCwgYm9vbCB2YWxpZGF0ZUF1dGgp
CiAgICAgewogICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BSKTsK
KyAgICAgICAgbG9hZDY0KGxlbmd0aCwgbGVuZ3RoR1BSKTsKICAgICAgICAgYXV0byBzY3JhdGNo
ID0gdmFsaWRhdGVBdXRoID8gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkgOiBJbnZhbGlkR1BSUmVnOyAKICAgICAgICAgdW50YWdBcnJheVB0cihsZW5ndGhHUFIs
IHRhcmdldCwgdmFsaWRhdGVBdXRoLCBzY3JhdGNoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
aW5kZXggZTY2MTAwYmEyZTQ3Li4zZmFiYzRkODkxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAg
LTEwOCw5ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpl
YnA7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRC
bGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgw
MGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBjYW5CbGluZCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZp
Y0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0
X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4MDBmZmZmZmY7IH0KIAogICAgIC8vIEludGVn
ZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zOgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMzk3OTkyYTNhNzUwLi4xMzI1MGVjNDg0
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTQ4Niw3ICs0ODYsNiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6Ci0gICAgY2FzZSBJbnRyaW5z
aWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKICAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgpAQCAtNTI5LDYgKzUyOCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVl
ZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyU3Rv
cmU6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJTdG9yZToKICAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NFN0b3JlOgorICAgIC8vIFVzZWQgYnkgVHlwZWRBcnJheUxl
bmd0aC9UeXBlZEFycmF5Qnl0ZU9mZnNldCBpbiB0aGUgcHJvY2VzcyBvZiBib3hpbmcgdGhlaXIg
cmVzdWx0IGFzIGEgZG91YmxlCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTE4NCwxMiArMTE4NSwxNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAog
CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHN0YXRlLnUucHJvcGVydHlHUFI7CiAKLSAg
ICAgICAgCiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxs
VGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0
eXBlKSkpKTsKIAotICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwot
ICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUikpOworICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0gQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKTsKKyAgICAg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIGEgc2l6ZV90
LCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVy
czo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisg
ICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBhZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRp
ZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3RhdGUubWFrZURlZmF1bHRTY3JhdGNoQWxs
b2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMTk3LDkgKzEyMDMsMTMgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJl
dXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAgICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFS
R0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9hZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2Ny
YXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRj
aDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgZmFsc2UpOwot
CiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihwcm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAgICAgICAgICAgc3dpdGNoIChlbGVtZW50
U2l6ZSh0eXBlKSkgewpAQCAtMTU5NSw5ICsxNjA1LDE0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICByZWFkeS5saW5rKCZqaXQpOwogICAgICAgICB9
CiAKLSAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
Ly8gT3V0T2ZCb3VuZHMgYml0IG9mIEFycmF5UHJvZmlsZSB3aWxsIGJlIHNldCBpbiB0aGUgb3Bl
cmF0aW9uIGZ1bmN0aW9uLgotICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eUdQUiwgc2NyYXRj
aEdQUikpOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzc09mTGVuZ3RoID0g
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKTsKKyAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBUaGUg
bGVuZ3RoIGlzIGEgVUNQVVJlZ2lzdGVyLCBzbyBlaXRoZXIgMzIgb3IgNjQgYml0cyBkZXBlbmRp
bmcgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLCBhZGRy
ZXNzT2ZMZW5ndGgpKTsKKyNlbHNlCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBh
ZGRyZXNzT2ZMZW5ndGgpKTsKKyNlbmRpZgogCiAgICAgICAgIGF1dG8gYWxsb2NhdG9yID0gc3Rh
dGUubWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNjA1
LDkgKzE2MjAsMTMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAg
ICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0
ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZygKICAgICAgICAg
ICAgIGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0
cmFTcGFjZSk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBqaXQubG9h
ZDY0KGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICBqaXQubG9h
ZDMyKGFkZHJlc3NPZkxlbmd0aCwgc2NyYXRjaEdQUik7CisjZW5kaWYKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaDJHUFIpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwgZmFsc2UpOwotCiAgICAgICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihw
cm9wZXJ0eUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IDY5MTY3OTQ4NDNiMC4uMzZmZWIxNDRiYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KLS8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVz
IHRha2luZyB0aGUgYml0cyAxNiB0byAyNS4KKy8vIFRoZXJlIGFyZSAxMSB0eXBlZCBhcnJheSB0
eXBlcyB0YWtpbmcgdGhlIGJpdHMgMTYtMjAgYW5kIDI2LTMxLgogdHlwZWRlZiB1bnNpZ25lZCBB
cnJheU1vZGVzOwogCiAvLyBUaGUgcG9zc2libGUgSW5kZXhpbmdUeXBlcyBhcmUgbGltaXRlZCB3
aXRoaW4gKDAgLSAxNiwgMjEsIDIzLCAyNSkuCkBAIC0yMDUsNyArMjA1LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcoZmFsc2UpCiAgICAgewogICAg
IH0KLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIHZvaWQgc2V0TWF5QmVMYXJnZVR5cGVkQXJyYXko
KSB7IG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOyB9CisgICAgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21h
eUJlTGFyZ2VUeXBlZEFycmF5OyB9CisjZWxzZQorICAgIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZgorCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7
IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVz
c09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7
IH0KQEAgLTI0NCw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9
OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNw
ZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFz
IGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFz
aWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3Jh
Z2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBp
bXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZhbHNlIH07CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgeyBmYWxzZSB9
OworI2VuZGlmCiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAg
ICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOwpAQCAtMjUzLDcgKzI2NCwxMyBAQCBzdGF0aWNf
YXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAogY2xhc3MgVW5saW5rZWRBcnJh
eVByb2ZpbGUgewogcHVibGljOgotICAgIFVubGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFVubGlua2VkQXJyYXlQcm9maWxlKCkKKyAgICAgICAgOiBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgICwgbV9tYXlCZUxhcmdlVHlwZWRBcnJheShmYWxzZSkKKyNlbmRpZgorICAgIHsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKICAg
ICB7CkBAIC0yODAsNiArMjk3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGFycmF5UHJvZmlsZS5t
X3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGlmIChtX21heUJlTGFyZ2VUeXBlZEFycmF5KQorICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX21heUJlTGFyZ2VUeXBlZEFycmF5ID0gYXJyYXlQcm9maWxlLm1fbWF5QmVM
YXJnZVR5cGVkQXJyYXk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTAsNyArMzE0
LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA6IDE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBib29sIG1fbWF5QmVMYXJn
ZVR5cGVkQXJyYXkgOiAxOworI2VuZGlmCiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5r
ZWRBcnJheVByb2ZpbGUpIDw9IDgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCAyYjJmNWUwMzAxOWYuLmExY2Q2OTk0NGFiMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMzQ2Myw3ICszNDYzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7Ci0gICAgICAgIGlmICh2aWV3KSB7Cisg
ICAgICAgIGlmICh2aWV3ICYmIGlzSW5Cb3VuZHM8aW50MzJfdD4odmlldy0+bGVuZ3RoKCkpKSB7
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0NzEsNiArMzQ3MSwxNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgIGlm
ICh2aWV3KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5s
ZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOiB7CiAgICAgICAgIHNldE5vbkNlbGxUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzk2LDgg
KzM4MDcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKTsKICAg
ICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5
dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVP
ZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgICAgICAgICBpZiAo
Ynl0ZU9mZnNldCAmJiBpc0luQm91bmRzPGludDMyX3Q+KGJ5dGVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM4MDYsNiArMzgxNywxOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjogeworICAgICAgICBKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdmFsdWUpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5
KCk7CisgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
IHsKQEAgLTQxMDksNiArNDEzMywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjogeworICAgICAgICAvLyBT
ZWUgdGhlIENoZWNrSW5Cb3VuZHMgY2FzZSwgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlciB3aGF0
IHdlIHB1dCBoZXJlLgorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0lu
dDMyT25seSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CiAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRl
eCA2ZTI3NTMxMDRiZDMuLmEzYjkzNDBmNjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0z
MjUsNiArMzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUo
bm9kZS0+Y2hpbGQxKCksIG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmx5IHVzZWQgZm9yIFR5cGVkQXJyYXlzLCBzbyBz
aG91bGQgbm90IGJlIHJlbGV2YW50IGZvciBhcmd1bWVudHMgZWxpbWluYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMigpLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDog
ewogICAgICAgICAgICAgICAgICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IG5vZGUtPmJpdFZl
Y3RvcigpOwogICAgICAgICAgICAgICAgICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQgPSBtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bm9kZSk7IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCmluZGV4
IDZlNGZlOWFmYTNlYi4uNzI1OGUzNzE1ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6cmVmaW5lKAogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGb3JjZUV4aXQsIGFj
dGlvbigpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXgp
KQorICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4KSAmJiAhbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSkKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgYWN0aW9u
KCkpOwogICAgIAogICAgIC8vIElmIHdlIGhhZCBleGl0ZWQgYmVjYXVzZSBvZiBhbiBleG90aWMg
b2JqZWN0IGJlaGF2aW9yLCB0aGVuIGRvbid0IHRyeSB0byBzcGVjaWFsaXplLgpAQCAtMjk0LDYg
KzI5NCw4IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKICAgICBjYXNlIEFycmF5OjpG
bG9hdDY0QXJyYXk6CiAgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKICAgICBjYXNlIEFy
cmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgLy8gRklYTUU6IG5vIGlkZWEgd2h5IHdlIG9u
bHkgcHJlc2VydmUgdGhpcyBvdXQtb2YtYm91bmRzIGluZm9ybWF0aW9uIGZvciBQdXRCeVZhbCBh
bmQgbm90IEdldEJ5VmFsIGFzIHdlbGwuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyNzYKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWwpIHsKICAgICAgICAgICAgIGlmIChncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMsIE91dE9mQm91bmRzKSB8fCAhaXNJbkJvdW5kcygpKQogICAgICAgICAgICAgICAg
IHJldHVybiB0eXBlZEFycmF5UmVzdWx0KHdpdGhTcGVjdWxhdGlvbihBcnJheTo6T3V0T2ZCb3Vu
ZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGEwMjZh
YWQxODkzYi4uZGY3NWM3ODkwZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5z
cGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNp
b24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IEFycmF5OjpXcml0
ZTsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIGV4cGxpY2l0IEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbikKQEAgLTEzNiw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNC
eXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNv
bnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5dGVzLmFjdGlvbiA9IGFjdGlv
bjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFycmF5ID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJy
YXlDbGFzcywgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCkBAIC0xNDUsMTUgKzE0NywxNyBAQCBwdWJs
aWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKICAg
ICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBBcnJheTo6QXNJczsKICAgICAgICAgdS5hc0J5
dGVzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgdS5hc0J5dGVzLm1heUJlTGFyZ2VUeXBlZEFy
cmF5ID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZShBcnJheTo6VHlwZSB0eXBl
LCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9u
LCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKKyAg
ICBBcnJheU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFy
cmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
biwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxz
ZSkKICAgICB7CiAgICAgICAgIHUuYXNCeXRlcy50eXBlID0gdHlwZTsKICAgICAgICAgdS5hc0J5
dGVzLmFycmF5Q2xhc3MgPSBhcnJheUNsYXNzOwogICAgICAgICB1LmFzQnl0ZXMuc3BlY3VsYXRp
b24gPSBzcGVjdWxhdGlvbjsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252ZXJz
aW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFzQnl0
ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBtYXlCZUxhcmdlVHlwZWRBcnJheTsKICAgICB9CiAg
ICAgCiAgICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNs
YXNzLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0aW9uIGFjdGlvbikK
QEAgLTE2Myw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlv
biA9IEFycmF5OjpJbkJvdW5kczsKICAgICAgICAgdS5hc0J5dGVzLmNvbnZlcnNpb24gPSBjb252
ZXJzaW9uOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1LmFz
Qnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQXJy
YXk6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpUeXBlPih1
LmFzQnl0ZXMudHlwZSk7IH0KQEAgLTE3MCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgQXJyYXk6
OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJy
YXk6OlNwZWN1bGF0aW9uPih1LmFzQnl0ZXMuc3BlY3VsYXRpb24pOyB9CiAgICAgQXJyYXk6OkNv
bnZlcnNpb24gY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpD
b252ZXJzaW9uPih1LmFzQnl0ZXMuY29udmVyc2lvbik7IH0KICAgICBBcnJheTo6QWN0aW9uIGFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5OjpBY3Rpb24+KHUuYXNCeXRl
cy5hY3Rpb24pOyB9CisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIHUuYXNCeXRlcy5tYXlCZUxhcmdlVHlwZWRBcnJheTsgfQogICAgIAogICAgIHVuc2lnbmVk
IGFzV29yZCgpIGNvbnN0IHsgcmV0dXJuIHUuYXNXb3JkOyB9CiAgICAgCkBAIC0xNzksMzUgKzE4
NSw1MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9i
c2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpB
Y3Rpb24sIGJvb2wgbWFrZVNhZmUpOwotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFy
cmF5OjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSwg
bWF5QmVMYXJnZVR5cGVkQXJyYXkoKSk7CisgICAgfQorCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVj
dWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbiwg
Y29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlC
ZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhBcnJh
eUNsYXNzKEFycmF5OjpDbGFzcyBhcnJheUNsYXNzKSBjb25zdAorCisgICAgQXJyYXlNb2RlIHdp
dGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNpb24pIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24o
KSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpLCBt
YXlCZUxhcmdlVHlwZWRBcnJheSgpKTsKICAgICB9Ci0gICAgCi0gICAgQXJyYXlNb2RlIHdpdGhT
cGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisKKyAgICBBcnJheU1v
ZGUgd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDb252ZXJz
aW9uIGNvbnZlcnNpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1h
eUJlTGFyZ2VUeXBlZEFycmF5KCkpOworICAgIH0KKworICAgIEFycmF5TW9kZSB3aXRoQXJyYXlD
bGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkoQXJyYXk6OkNsYXNzIGFy
cmF5Q2xhc3MsIEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbiwgYm9vbCBtYXlCZUxhcmdl
VHlwZWRBcnJheSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNw
ZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywg
c3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFycmF5
KTsKKyAgICB9CiAKKyAgICBzdGF0aWMgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkKKyAgICB7CiAgICAgICAgIGlmIChtYWtlU2FmZSkKLSAg
ICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7CisgICAgICAgICAg
ICByZXR1cm4gQXJyYXk6Ok91dE9mQm91bmRzOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5t
YXlTdG9yZVRvSG9sZShsb2NrZXIpKQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5
OjpUb0hvbGU7CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gQXJyYXk6OkluQm91bmRzOwogICAgIH0KLSAgICAKKworICAgIEFycmF5TW9k
ZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihzcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFBy
b2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBt
eUFycmF5Q2xhc3M7Ci0KICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CiAgICAgICAgICAgICBp
ZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZp
dHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJh
eU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CkBAIC0yMjEsMjMg
KzI0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6
OkFycmF5OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5
Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5
Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlw
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKLSAgICB9Ci0gICAg
Ci0gICAgQXJyYXlNb2RlIHdpdGhDb252ZXJzaW9uKEFycmF5OjpDb252ZXJzaW9uIGNvbnZlcnNp
b24pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlD
bGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSk7Ci0gICAgfQotICAg
IAotICAgIEFycmF5TW9kZSB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwg
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
LCBhY3Rpb24oKSk7CisKKyAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uID0g
c3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKworICAg
ICAgICBib29sIGxhcmdlVHlwZWRBcnJheSA9IHByb2ZpbGUtPm1heUJlTGFyZ2VUeXBlZEFycmF5
KGxvY2tlcik7CisKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzQW5kU3BlY3VsYXRpb25B
bmRNYXlCZUxhcmdlVHlwZWRBcnJheShteUFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uLCBsYXJnZVR5
cGVkQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIHVudXNlZEluZGV4U3BlY3VsYXRlZFR5cGUgPSBTcGVjSW50MzJPbmx5OwpAQCAtNTI2LDcg
KzUzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkK
ICAgICAgICAgICAgICYmIGFycmF5Q2xhc3MoKSA9PSBvdGhlci5hcnJheUNsYXNzKCkKICAgICAg
ICAgICAgICYmIHNwZWN1bGF0aW9uKCkgPT0gb3RoZXIuc3BlY3VsYXRpb24oKQotICAgICAgICAg
ICAgJiYgY29udmVyc2lvbigpID09IG90aGVyLmNvbnZlcnNpb24oKTsKKyAgICAgICAgICAgICYm
IGNvbnZlcnNpb24oKSA9PSBvdGhlci5jb252ZXJzaW9uKCkKKyAgICAgICAgICAgICYmIG1heUJl
TGFyZ2VUeXBlZEFycmF5KCkgPT0gb3RoZXIubWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFycmF5TW9kZSYgb3RoZXIpIGNvbnN0
CkBAIC01NzksNyArNTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnQ4X3QgYXJyYXlD
bGFzczsKICAgICAgICAgICAgIHVpbnQ4X3Qgc3BlY3VsYXRpb247CiAgICAgICAgICAgICB1aW50
OF90IGNvbnZlcnNpb24gOiA0OwotICAgICAgICAgICAgdWludDhfdCBhY3Rpb24gOiA0OworICAg
ICAgICAgICAgdWludDhfdCBhY3Rpb24gOiAxOworICAgICAgICAgICAgdWludDhfdCBtYXlCZUxh
cmdlVHlwZWRBcnJheSA6IDE7CiAgICAgICAgIH0gYXNCeXRlczsKICAgICAgICAgdW5zaWduZWQg
YXNXb3JkOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggYzg4ZGU0YjIzOWM3Li5hMDBjODUzNzAxMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zODA3
LDggKzM4MDcsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIHRlbXBsYXRlPHR5cGVuYW1l
IENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0
ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKIHsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHN0YXRpY19h
c3NlcnQoZW5hYmxlSW50NTIoKSk7CisjZW5kaWYKKwogICAgIHN3aXRjaCAodmFyaWFudC5pbnRy
aW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKKyAg
ICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID0gIWlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7CisjaWYgIVVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQuc3RydWN0
dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7CkBA
IC0zODIyLDI2ICszODMxLDMwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljCiAgICAgICAgICAg
ICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgTm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7
CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1
MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7CisgICAgICAg
IE5vZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5
VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogICAgICAgICAvLyBPdXIg
QXJyYXlNb2RlIHNob3VsZG4ndCBjYXVzZSB1cyB0byBleGl0IGhlcmUgc28gd2Ugc2hvdWxkIGJl
IG9rIHRvIGV4aXQgd2l0aG91dCBlZmZlY3RzLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CiAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKIAotCiAgICAgICAgIGlmICghbG9nU2l6ZSkgewog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdlIGNhbiB1c2UgYSBCaXRMU2hpZnQgaGVy
ZSBiZWNhdXNlIHR5cGVkIGFycmF5cyB3aWxsIG5ldmVyIGhhdmUgYSBieXRlTGVuZ3RoCi0gICAg
ICAgIC8vIHRoYXQgb3ZlcmZsb3dzIGludDMyLgotICAgICAgICBOb2RlKiBzaGlmdE5vZGUgPSBq
c0NvbnN0YW50KGpzTnVtYmVyKGxvZ1NpemUpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChBcml0aEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hpZnROb2RlKSk7CisgICAgICAgIC8v
IFdlIGNhbm5vdCB1c2UgYSBCaXRMU2hpZnQgaGVyZSBiZWNhdXNlIHR5cGVkIGFycmF5cyBtYXkg
aGF2ZSBhIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgSW50MzIuCisgICAgICAgIE5vZGUqIHR5
cGVTaXplID0ganNDb25zdGFudChqc051bWJlcigxIDw8IGxvZ1NpemUpKTsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChBcml0aE11bCwgbGVuZ3RoTm9kZSwgdHlwZVNpemUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJ
bnRyaW5zaWM6IHsKKyAgICAgICAgYm9vbCB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlMZW5ndGhBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAg
ICAgICAgIGluc2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAo
KnZhcmlhbnQuc3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5
U3RvcmFnZVR5cGU7CkBAIC0zODUzLDEzICszODY2LDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljCiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlUeXBlICE9IEFycmF5OjpHZW5lcmljKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0
aCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRo
aXNOb2RlKSk7CisgICAgICAgIE5vZGVUeXBlIG9wID0gd2lsbE5lZWRHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyIDogR2V0QXJyYXlMZW5ndGg7
CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJy
YXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkpOwogCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJp
bnNpYzogeworICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0lu
dDUyID0gIWlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyk7Cisj
aWYgIVVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICh3aWxsTmVlZEdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBl
ID0gKCp2YXJpYW50LnN0cnVjdHVyZVNldCgpLmJlZ2luKCkpLT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlOwpAQCAtMzg3MSw3ICszODkwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFz
V29yZCgpKSwgdGhpc05vZGUpKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiA/IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1
MiA6IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgp
KSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE4ZGQzZmRlOTc3OS4uOWFkNWMy
NzAyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1Myw2ICsxNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEVu
dW1lcmF0b3JIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMjM5
LDYgKzI0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0Jvb2xlYW46
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNl
IENoZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIFZhbHVl
UmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0xMzM3LDYgKzEzMzksMTEgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9m
ZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAg
ICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
OgorICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5
cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwg
TGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEdldFByb3RvdHlw
ZU9mOiB7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgQXJyYXlVc2U6CkBAIC0xNDQ0LDYgKzE0NTEsMTQgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6IHsKKyAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAg
ICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFy
cmF5TGVuZ3RoSW50NTJMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRWZWN0b3JMZW5n
dGg6IHsKICAgICAgICAgQXJyYXlNb2RlIG1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAg
ICAgc3dpdGNoIChtb2RlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKaW5kZXggYzY2ZmIyMjM5ZjhmLi5hZmRjMTBhOGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9u
RW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJvb2wgZW5hYmxlSW50NTIoKQoraW5saW5l
IGJvb2wgY29uc3RleHByIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiODgyNWFjYWUzNGUuLmZhMTdiZjExNDE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTM4Nyw2ICszODcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNzBhNDg1NDdhOTcuLjQwMjg0Y2ZhMjJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5vdGlmeVdy
aXRlOgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgor
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9p
bnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMTk3LDEw
ICsxOTgsMTIgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0U2V0dGVyOgogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZl
Y3Rvckxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdD
b2RlUG9pbnRBdDoKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhlMWI5M2VlZTZjYS4u
NTY2ZjUzOWRlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQogICAgICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAg
ICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxhcmdlVHlwZWRBcnJheSgpCiAgICAg
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXgg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgZm9yY2UgT1NSIGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IHNlZW4gT3duU3RydWN0
dXJlTW9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV0Ugc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgd2F5IHRvIGRvIHRoaXMuLi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBFbnVtZXJhdG9yR2V0QnlWYWwpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShub2RlLT5hcnJheU1vZGUoKS53aXRoVHlwZShBcnJheTo6R2VuZXJpYykp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzMyw2ICsxMTM0LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93blN0cmluZ1VzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQx
NkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICAgICAgICAg
IGNhc2UgQXJyYXk6OlVpbnQ4QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50OENs
YW1wZWRBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpG
bG9hdDMyQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xMTg0LDYgKzExOTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNw
ZWN1bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1Nw
ZWNpZmljKCkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJv
dW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFub2RlLT5hcnJheU1vZGUoKS5tYXlCZUxh
cmdlVHlwZWRBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRT
aXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CiAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtMTcx
NywxMiArMTczMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheTogewogICAgICAgICAgICAgd2F0Y2hIYXZpbmdBQmFkVGltZShub2RlKTsKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIxNDksNiArMjE2NywyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCku
cmVmaW5lKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIEFycmF5
TW9kZTo6dW51c2VkSW5kZXhTcGVjdWxhdGVkVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXJy
YXlNb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKGFycmF5TW9kZSk7CisgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUt
PmNoaWxkMSgpLCBFZGdlKCksIG5vZGUtPmNoaWxkMigpLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwor
CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxODIsNiArMjIxNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBBc3Nl
cnRJbkJvdW5kczoKICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgog
ICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpA
QCAtNDA5NiwxNCArNDEzMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgbm9k
ZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwogICAgIH0KLSAgICAKLSAgICBOb2RlKiBwcmVw
ZW5kR2V0QXJyYXlMZW5ndGgoTm9kZU9yaWdpbiBvcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1v
ZGUgYXJyYXlNb2RlKQotICAgIHsKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXko
YXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwot
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAotICAg
ICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2Vs
bFVzZSksIEVkZ2Uoc3RvcmFnZSkpOwotICAgIH0KIAogICAgIHZvaWQgY29udmVydFRvSGFzSW5k
ZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IDRmYWY5NDlhNzg2MC4uMmQ4NmViNzU3Mzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCkBA
IC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFRoaXMg
Y2xhc3MgaXMgdXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgbGl2ZSB2YWx1ZXMg
ZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbi4KIC8vIENhbiBwcm92aWRlIGluZm9ybWF0aW9uIGFzIHRv
IHdoZXRoZXIgYSB2YWx1ZSBpcyBpbiBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGlmIHNvIHdoaWNo
LAogLy8gd2hldGhlciBhIHZhbHVlIGhhcyBiZWVuIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmls
ZSwgYW5kIGlmIHNvIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUKLS8vIGRldGFpbHMgb2YgdGhlIGZv
cm1hdCBpbiBtZW1vcnkgKGFsbCB2YWx1ZXMgYXJlIHNwaWxsZWQgaW4gYSBib3hlZCBmb3JtLCBi
dXQgd2UgbWF5IGJlCi0vLyBhYmxlIHRvIHRyYWNrIHRoZSB0eXBlIG9mIGJveCksIGFuZCB0cmFj
a3MgaG93IG1hbnkgb3V0c3RhbmRpbmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKKy8vIGRldGFp
bHMgb2YgdGhlIGZvcm1hdCBpbiBtZW1vcnksIGFuZCB0cmFja3MgaG93IG1hbnkgb3V0c3RhbmRp
bmcgdXNlcyBvZiBhIHZhbHVlIHJlbWFpbiwKIC8vIHNvIHRoYXQgd2Uga25vdyB3aGVuIHRoZSB2
YWx1ZSBpcyBkZWFkIGFuZCB0aGUgbWFjaGluZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIGl0
CiAvLyBtYXkgYmUgcmVsZWFzZWQuCiBjbGFzcyBHZW5lcmF0aW9uSW5mbyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggMmJiOWQ0YmVhODAw
Li4wNjYxZTViODI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQogICAgICAgICBvdXQucHJpbnQoIlR5cGVk
QXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVHlwZWRB
cnJheUJ5dGVPZmZzZXRJbnQ1MkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0
ZU9mZnNldEludDUyTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZWRBcnJh
eUxlbmd0aEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlMZW5ndGhJbnQ1
MkxvYyIpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFByb3RvdHlwZUxvYzoKICAgICAg
ICAgb3V0LnByaW50KCJQcm90b3R5cGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggMjY5MTcxY2IzNDFkLi40
MGZiNzE2NzMyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVh
cExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uaApAQCAtNjcsNiArNjcsOCBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9j
LAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAgICBU
eXBlZEFycmF5Qnl0ZU9mZnNldEludDUyTG9jLAorICAgIFR5cGVkQXJyYXlMZW5ndGhJbnQ1Mkxv
YywKICAgICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9j
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAxYmFhMWM4YmNmNTEuLjZkZWRhMDM3
ZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTEzMzUsNyArMTMzNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b25OZWdhdGl2ZSAmJiBsZXNzVGhhbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tFbGltaW5hdGlvbigp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2YWxpZGF0
ZUJvdW5kc0NoZWNrRWxpbWluYXRpb24oKSkgJiYgbm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRz
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bm9kZUluZGV4LCBTcGVjTm9uZSwgQXNzZXJ0SW5Cb3VuZHMsIG5vZGUtPm9yaWdpbiwgbm9kZS0+
Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGEgdmFsdWUtcHJvZHVjaW5nIG5vZGUuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDJhZjc5
NzA2OGE5Yy4uMGJhN2I5ZmYzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE5NjUsNiArMTk2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAg
ICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNhc2UgSGFzSW5k
ZXhlZFByb3BlcnR5OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlOgogICAgICAgICBjYXNlIEFycmF5SW5kZXhPZjoKQEAgLTIwMDQsNiArMjAwNSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAgICAg
ICAgcmV0dXJuIDI7CiAKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CkBAIC0yMjc2
LDYgKzIyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggOWE5MGE0Y2ZkYWM4Li4yM2YxYzE1MGQ2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKQEAgLTI2MSw4ICsyNjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAorICAgIC8qIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgVHlwZWRBcnJheXMsIGFzIHRoZXkg
YXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBjYW4gaGF2ZSBhIGxlbmd0aCB0aGF0IGRvZXMgbm90IGZp
dCBpbiAzMiBiaXRzLiAqLyBcCisgICAgLyogR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5k
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MiBjaGFuZ2UgdG8gcmV0dXJuaW5nIEludDUy
IGluIEZpeHVwLiBEb2luZyBpdCBiZWZvcmUgY2F1c2VzIHZhbGlkYXRpb24gZmFpbHVyZXMuICov
IFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNy
byhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8o
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKQEAgLTI4Niw2ICsyOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oQ2hlY2tCYWRWYWx1ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hl
Y2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KENoZWNrSW5Cb3VuZHNJbnQ1MiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2VzIGFuIE9wSW5mbyB3aXRo
IHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tK
U0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMganNDYXN0IGJ1
dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAqL1wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGU1MDdmMWU4MGFjMC4uOTQ1
MzUzNTZkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTk3LDEwICs5Nyw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlCiAgICAgfQogICAg
IGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGluZGV4LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5
KHZtLCBpbmRleCwgdmFsdWUpOworICAgICAgICBpZiAob2JqZWN0LT50cnlTZXRJbmRleFF1aWNr
bHkodm0sIGluZGV4LCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAog
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUs
NyArMTczLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxTdHJpbmdJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6
ZSwgY2hhciogdmVjdG9yKQorY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90
IHNpemUsIGNoYXIqIHZlY3RvcikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTE4MywxMSArMTgxLDE0IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRo
U2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSJfcykpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50cHRyX3Q+OjptYXgoKSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBzaXplX3QgdW5zaWduZWRTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaXplKTsKKwogICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9yLCBzaXplKSkpOworICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZVdpdGhGYXN0
VmVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1bnNpZ25lZFNpemUsIHVudGFnQXJyYXlQ
dHIodmVjdG9yLCB1bnNpZ25lZFNpemUpKSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHNpemUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1
bnNpZ25lZFNpemUpKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN0cmljdD4KQEAgLTE5MDgsNyAr
MTkwOSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xOTI0LDcg
KzE5MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsTwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE5NDAsNyArMTk0MSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5NTYsNyArMTk1Nyw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5
NzIsNyArMTk3Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk4OCw3ICsxOTg5LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0
cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjAwNCw3ICsyMDA1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjAyMCw3ICsyMDIxLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBj
aGFyKiwgKEpTR2xvYmEKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0y
MDM2LDcgKzIwMzcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYgogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDUyLDcgKzIwNTMsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5n
dGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIw
NjgsNyArMjA2OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJ
bnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFy
KiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAppbmRleCAzOTNkZTg4NTA3MDcuLjRmZDU3OTVkMmQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExOSwyNyArMTE5LDI3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIGNoYXIqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50LCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVyZmx5Kikp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNo
YXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBj
aGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hh
ciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdV
aW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1Vp
bnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdC
aWdVaW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdNYXBJdGVyYXRvciwgSlND
ZWxsKiwgKFZNKiwgU3RydWN0dXJlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyMGQw
NDRmNWY1YzAuLjhlMGM1OGI4YTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4Niw2
ICs5ODYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0ludDUyQW55KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtMTMyMCw2ICsx
MzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgog
ICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgICAgICBjYXNlIFZhbHVlVG9J
bnQzMjoKICAgICAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcApp
bmRleCBlM2EyMzlhMzNlMzAuLmQ5ZGFlM2E4MzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwyMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpICE9IE5vdFR5cGVk
QXJyYXkgJiYgbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgs
IG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJh
eU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2UobGVuZ3Ro
LCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkgfHwg
bV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55
LCBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgSW50NTJSZXBVc2UpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2Us
IHN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSk7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3LDEyICsxNDcsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBP
cEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtu
b3duQ2VsbFVzZSksIHN0b3JhZ2UpOwotICAgICAgICBOb2RlKiBjaGVja0luQm91bmRzID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIGluZGV4
LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworICAgICAgICBOb2RlKiBjaGVja0luQm91
bmRzOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGlmICgob3AgPT0gR2V0
QXJyYXlMZW5ndGgpICYmIChtX25vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5
KCkgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZs
b3cpKSkgeworICAgICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDUyQW55LCBHZXRUeXBl
ZEFycmF5TGVuZ3RoQXNJbnQ1MiwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93
bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGxlbmd0aC0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgYSBkdW1teSBz
aW5jZSB0aGlzIG5vZGUgZG9lcyBub3QgYWN0dWFsbHkgcmV0dXJuIGFueXRoaW5nLgorICAgICAg
ICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHNJbnQ1Miwg
bV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBJbnQ1
MlJlcFVzZSkpOworICAgICAgICB9IGVsc2UgeworI2VuZGlmCisgICAgICAgICAgICBOb2RlKiBs
ZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgp
LCBLbm93bkNlbGxVc2UpLCBzdG9yYWdlKTsKKyAgICAgICAgICAgIGNoZWNrSW5Cb3VuZHMgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEtub3duSW50MzJVc2UpKTsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgICAgICB9CisjZW5kaWYKKwogCiAgICAgICAgIEFkamFjZW5jeUxp
c3QgYWRqYWNlbmN5TGlzdCA9IG1fZ3JhcGguY29weVZhcmFyZ0NoaWxkcmVuKG1fbm9kZSk7CiAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGVja0luQm91bmRz
LCBVbnR5cGVkVXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDkyNGZjOGMzMTA4Ni4uMmU3ZjU2YWExMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjg4LDYgKzI4OCw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIEFzc2VydEluQm91bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENo
ZWNrSW5Cb3VuZHNJbnQ1MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAg
Y2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM3Myw2ICszNzQsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoK
ICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgpAQCAtMzg1LDYgKzM4
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6
CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICAgICAgcmV0dXJuICEoc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjVHlwZWRBcnJheVZpZXcpKTsKICAgICAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI1ZjZhY2E2N2M0OC4uNzQ5ZWY1NDZhYmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzIzOCwyOCArMzIzOCw0MyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUQ29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNvdQogCiB9CiAK
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5k
cyhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUikKIHsKICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQogICAgICAg
ICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmll
dyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAgICAgICBtX3N0YXRlLmZv
ck5vZGUobV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAwKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlN
b2RlKCkpOwogICAgIGlmICh2aWV3KSB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXct
Pmxlbmd0aCgpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7CiAgICAg
ICAgIE5vZGUqIGluZGV4Tm9kZSA9IG1faml0LmdyYXBoKCkuY2hpbGQobm9kZSwgMSkubm9kZSgp
OwotICAgICAgICBpZiAoaW5kZXhOb2RlLT5pc0ludDMyQ29uc3RhbnQoKSAmJiBpbmRleE5vZGUt
PmFzVUludDMyKCkgPCBsZW5ndGgpCisgICAgICAgIGlmIChpbmRleE5vZGUtPmlzQW55SW50Q29u
c3RhbnQoKSAmJiBpbmRleE5vZGUtPmFzVUludDMyKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW02NChsZW5ndGgp
KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKICAgICAgICAgcmV0
dXJuIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyNlbmRpZgog
ICAgIH0KKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgIHJldHVybiBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaEdQUiwKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5k
ZXhHUFIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5v
ZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9yVHlwZWRBcnJheU91
dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBqdW1wID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlR1BSLCBpbmRl
eEdQUiwgc2NyYXRjaEdQUik7CiAgICAgaWYgKCFqdW1wLmlzU2V0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBqdW1wKTsKQEAgLTMzODAsMTAgKzMzOTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHQKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBz
dG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwog
ICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQUlJlZyBzdG9y
YWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcDsKICAgICBG
UFJSZWcgcmVzdWx0RlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTMzOTcsNyArMzQxNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBu
b2RlLCBUeXBlZEFycmF5VHlwZSB0CiAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9
IHByZWZpeChEYXRhRm9ybWF0SW50MzIpOwogICAgIGJvb2wgc2hvdWxkQm94ID0gZm9ybWF0ID09
IERhdGFGb3JtYXRKUzsKIAotICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHNjcmF0Y2hHUFIpOwogICAgIGxvYWRGcm9tSW50VHlwZWRB
cnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIHR5
cGUpOwogICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50
VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVncywgdHlwZSwgY2FuU3BlY3VsYXRl
LCBzaG91bGRCb3gsIHJlc3VsdEZQUik7CkBAIC0zNTU1LDYgKzM1NzIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgU3RvcmFn
ZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMp
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJl
ZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgCiAgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMik7CkBAIC0zNTg3LDcgKzM2MDUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVlR1BSICE9IHBy
b3BlcnR5KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNTRVJUKHZhbHVl
R1BSICE9IHN0b3JhZ2VSZWcpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9mQm91bmRzID0g
anVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5LCBzY3JhdGNoLmdwcigpKTsKIAogICAgIHN3aXRjaCAo
ZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0zNjQ1LDEwICszNjYzLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5v
ZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7
CiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgIEdQUlJlZyBi
YXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5n
cHIoKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
czsKICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTM2NTYsNyArMzY3Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqIG5vZGUs
IFR5cGVkQXJyYXlUeXBlCiAKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQ
UlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7Ci0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHND
aGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3Vu
ZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgc3dp
dGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDoKICAgICAgICAgbV9qaXQubG9h
ZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOwpAQCAtMzY5MCwxMCArMzcx
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZQogCiAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgZ3BTY3JhdGNoKHRoaXMpOwogICAgIEZQUlJlZyB2YWx1
ZUZQUiA9IHZhbHVlT3AuZnByKCk7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gZ3BTY3JhdGNoLmdwcigpOwogCi0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91
bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRP
ZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVy
dHksIHNjcmF0Y2hHUFIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsK
ICAgICBjYXNlIDQ6IHsKQEAgLTc5NjcsNyArNzk4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3JhZ2VSZWcs
IGJvCiB7CiAgICAgYXV0byB1bnRhZ0FycmF5UHRyID0gWyZdKCkgewogI2lmIENQVShBUk02NEUp
Ci0gICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGgzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3Jh
Z2VSZWcsIHZhbGlkYXRlQXV0aCk7CisgICAgICAgIG1faml0LnVudGFnQXJyYXlQdHJMZW5ndGg2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcsIHZhbGlkYXRlQXV0aCk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odmFsaWRhdGVBdXRoKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2VS
ZWcpOwpAQCAtODAzOSw5ICs4MDYxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3ByKCk7CiAgICAgR1BS
UmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOwotICAgIEFTU0VSVChiYXNlR1BSICE9IHZlY3RvckdQ
Uik7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gZGF0YUdQUik7Ci0gICAgQVNTRVJUKHZlY3RvckdQ
UiAhPSBkYXRhR1BSKTsKIAogICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9IGRhdGFHUFI7CiAK
QEAgLTgwODMsNiArODEwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBudWxsVmVjdG9yLmxpbmsoJm1faml0
KTsKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBBSSBwcm9t
aXNlcyB0aGF0IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJ
bnQzMiwgc28gd2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB2ZWN0b3JHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorCiAgICAgc3RyaWN0SW50MzJS
ZXN1bHQodmVjdG9yR1BSLCBub2RlKTsKIH0KIApAQCAtODM0OSwxMiArODM3MywxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBtX2ppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQoc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZWxzZQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCByZXN1bHRHUFIpOworI2VuZGlmCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0gfQogfQogCisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgc3RyaW5nT3JTeW1ib2wodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
MTExMTksMTAgKzExMTQ5LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHR5cGVkQXJyYXlUeXBlID0gbm9k
ZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5
U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlLmdldCgpKTsKLSAgICAKKworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgLy8gVGhlIG9wZXJhdGlvbnMgd2UgY2FsbCBvbiB0aGUgc2xvdyBwYXRoIGV4cGVjdCBh
IGludHB0cl90LCBzbyBpbnQ2NF90IG9uIDY0IGJpdCBwbGF0Zm9ybXMKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXpl
SW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzY3JhdGNoR1BSKTsK
KyNlbHNlCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKLSAgICAKKyAgICBlbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0
dXJlLCBzaXplR1BSKTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3
VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VHlwZSB0
eXBlZEFycmF5VHlwZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzaXpl
R1BSKQorewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5
IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0xMTEz
Niw4ICsxMTE4MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBzdG9yYWdlR1BSKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tNjQoSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RT
aXplTGltaXQpKSk7CisgICAgLy8gV2UgYXNzdW1lIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGZh
c3QgcGF0aCB0aGF0IHRoZSBzaXplIGlzIGEgMzItYml0IG51bWJlci4KKyAgICBzdGF0aWNfYXNz
ZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNBcnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQp
KTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSk7CisjZW5kaWYKICAgICAKICAgICBtX2ppdC5tb3ZlKHNp
emVHUFIsIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpLCBzY3JhdGNoR1BSKTsKQEAgLTExMTkzLDkgKzEx
MjQ0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNp
emUoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVB0cigKICAgICAgICAgc3RvcmFnZUdQUiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgbV9qaXQuc3RvcmU2NCgKKyAgICAgICAgc2l6ZUdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkpOworI2Vsc2UKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisjZW5kaWYKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBU
cnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkpOwpAQCAt
MTQxNjcsNiArMTQyMjQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXkoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjb21waWxlTmV3
VHlwZWRBcnJheVdpdGhTaXplKG5vZGUpOwogICAgICAgICBicmVhazsKKyNpZiBVU0UoTEFSR0Vf
VFlQRURfQVJSQVlTKQorICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNvbXBpbGVOZXdU
eXBlZEFycmF5V2l0aEludDUyU2l6ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDA3YjU2M2IzNDgzYS4uMDQ5YmNmN2U2ZmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMCw5
ICsxMzAwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3U3ltYm9sKE5vZGUq
KTsKLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSosIFR5cGVkQXJyYXlUeXBlLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQ
Uik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsKLSAgICAK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJy
YXlXaXRoSW50NTJTaXplKE5vZGUqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjb21waWxlSW50MzJD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAjaWYgVVNFKEJJR0lOVDMyKQpAQCAtMTM3Myw2ICsxMzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIoTm9kZSopOworI2Vu
ZGlmCiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwpAQCAtMTQzMSwxMCArMTQzOCwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlQXJpdGhNaW5NYXgoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JU
eXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBqdW1wRm9yVHlwZWRBcnJheUlzRGV0YWNoZWRJZk91
dE9mQm91bmRzKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZC
b3VuZHMpOwotICAgIHZvaWQgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5k
c0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoTm9kZSop
OworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKE5vZGUqKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQgcHJl
ZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwg
VHlwZWRBcnJheVR5cGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdz
LCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpOwpAQCAt
MjQyNyw3ICsyNDM3LDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9
OwogCi0vLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDEyLCBsb3cgYml0cyB6ZXJvKS4KIGNsYXNzIFNw
ZWN1bGF0ZUludDUyT3BlcmFuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0yNDc1LDcgKzI0ODUsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52
YWxpZDsKIH07CiAKLS8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9h
ZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCku
CisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NTIgKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhl
IGxvdyA1MiBiaXRzLCBoaWdoIDEyIGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgogY2xhc3MgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDZhMGYyNTIwZWEzNy4uMjJmNmY3Mjc0YWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTIxMzQsNiArMjEzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgp
LmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOwogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0g
bm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5
cGUpKQogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5
cGUsIHByZWZpeCk7CkBAIC0zNTM4LDYgKzM1MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoK
KyAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGxhcmdlciB0aGFuIDJH
QiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRGVsZXRlQnlJZDogewogICAgICAgICBj
b21waWxlRGVsZXRlQnlJZChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjIwLDYgKzM2MjYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1Mjog
eworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQ
cm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzk4LDYgKzQ0MDksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnQ1MkNv
bnN0YW50OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRz
OgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCAzYjM5M2Y1Mjc1ZjcuLjg0MGFhMTc4Y2E5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY5NCw2ICsyNjk0LDg2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgfSB9CiB9CiAKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBl
ZEFycmF5VHlwZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CisKKyAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworCisgICAgZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIobm9kZSwgdHlwZWRBcnJheVR5cGUsIHN0cnVjdHVyZSwgc2l6
ZUdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5TGVu
Z3RoQXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmFycmF5
TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIG1faml0LmxvYWQ2NChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdEdQUik7CisgICAgc3RhdGljX2Fzc2VydChNQVhfQVJSQVlfQlVGRkVSX1NJ
WkUgPCAoMXVsbCA8PCA1MiksICJ0aGVyZSBpcyBhIHJpc2sgdGhhdCB0aGUgc2l6ZSBvZiBhIHR5
cGVkIGFycmF5IHdvbid0IGZpdCBpbiBhbiBJbnQ1MiIpOworICAgIHN0cmljdEludDUyUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkg
dmVjdG9yKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBkYXRhKHRoaXMpOworCisgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2ZWN0b3JHUFIgPSB2ZWN0b3IuZ3By
KCk7CisgICAgR1BSUmVnIGRhdGFHUFIgPSBkYXRhLmdwcigpOworCisgICAgR1BSUmVnIGFycmF5
QnVmZmVyR1BSID0gZGF0YUdQUjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGVtcHR5Qnl0ZU9m
ZnNldCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVk
QXJyYXkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVsbFZlY3RvciA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6RXF1YWwsIHZlY3RvckdQUiwgVHJ1c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmll
dzo6bnVsbFZlY3RvclB0cigpKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGRhdGFHUFIp
OworICAgIG1faml0LmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpKU1ZhbHVlLCBkYXRh
R1BSKTsKKworICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIGFycmF5QnVmZmVyR1BSKTsKKyAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTUxNQorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYXJyYXlCdWZmZXJHUFIsIEFycmF5QnVmZmVyOjpvZmZzZXRPZkRhdGEoKSksIGRh
dGFHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgbV9qaXQucmVtb3ZlQXJyYXlQdHJUYWcoZGF0
YUdQUik7CisjZW5kaWYKKworICAgIG1faml0LnN1YlB0cihkYXRhR1BSLCB2ZWN0b3JHUFIpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKworI2lmIENQVShB
Uk02NEUpCisgICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICBlbXB0eUJ5
dGVPZmZzZXQubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxs
cHRyKSwgdmVjdG9yR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworI2lmICFDUFUoQVJN
NjRFKQorICAgIEFTU0VSVCghSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSk7Cisg
ICAgbnVsbFZlY3Rvci5saW5rKCZtX2ppdCk7CisjZW5kaWYKKworICAgIHN0cmljdEludDUyUmVz
dWx0KHZlY3RvckdQUiwgbm9kZSk7Cit9CisjZW5kaWYgLy8gVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogewogICAgIE5v
ZGVUeXBlIG9wID0gbm9kZS0+b3AoKTsKQEAgLTM2NDQsMTEgKzM3MjQsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOworICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCAodGhpcyk7CiAKICAgICAgICAgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBlbWl0VHlw
ZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAgICAgICAgZW1p
dFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlR1BSLCBpbmRleEdQUiwgc2NyYXRjaC5n
cHIoKSk7CiAgICAgICAgIAogICAgICAgICBHUFJUZW1wb3JhcnkgYXJnc1syXTsKICAgICAgICAg
CkBAIC00MzgxLDYgKzQ0NjIsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyNpZiBVU0UoQURE
UkVTUzY0KQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIobm9kZSk7
CisjZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisg
ICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVE
ZWxldGVCeUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ0OTksNiArNDU4OCwxNSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjogewogICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNTU4OSw3ICs1Njg3LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4
R1BSLCB0Mik7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKICAgICAgICAgICAgIG1f
aml0LmFkZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKKyNpZiBVU0Uo
TEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRz
LCBKU1ZhbHVlUmVncygpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Okxlc3NUaGFuLCBpbmRleEdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAg
IG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisjZWxzZQorICAgICAgICAvLyBO
byBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjayBhZ2FpbnN0IDAgaGVyZSwgbmVnYXRpdmUgaW5k
aWNlcyBhcmUgY2F1Z2h0IGJ5IHRoZSBjb21wYXJpc29uIHdpdGggbGVuZ3RoIHJpZ2h0IGFmdGVy
CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisjZW5kaWYKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IHQyLCB0MSkpOwogCkBAIC01NzkwLDcgKzU4OTUsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5k
ZXhHUFIsIHQyKTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAg
bV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworI2lmIFVT
RShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6TGVzc1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAg
ICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbHNlCisgICAgICAgIC8v
IE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrIGFnYWluc3QgMCBoZXJlLCBuZWdhdGl2ZSBp
bmRpY2VzIGFyZSBjYXVnaHQgYnkgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggcmlnaHQgYWZ0
ZXIKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3
R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbmRpZgog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2Rl
LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgdDIsIHQxKSk7CiAKQEAgLTYwNDIsNiArNjE1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAg
IGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2Ug
Q2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2UgTXVsdGlH
ZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRl
eCA1ZjUxZjIyNTEwNGYuLmUxMGQ2MmU0MjdkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzksMTAg
KzI3OSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJ
bnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgog
ICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhp
bnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgpAQCAtMzU5LDYgKzM2
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
ICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUy
OgogICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCBjNWU1Y2YzNmE3
NzAuLmZiM2JkZDQ4NjFmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAKQEAgLTY0MCw2ICs2NDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2Ug
VXBzaWxvbjoKICAgICAgICAgICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgogICAgICAgICAg
ICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICAgICAgICAgICAgICBjYXNlIENoZWNrSW5C
b3VuZHNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEyNDhjOWZhZDY3Li43ODdlMTQ1NTYyZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAg
LTE3MCw2ICsxNzAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBOdWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBH
ZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgU3RvcmVCYXJy
aWVyOgpAQCAtMTk5LDYgKzIwMCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIEFzc2VydEluQm91
bmRzOgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1
MjoKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAg
ICBjYXNlIENoZWNrVmFyYXJnczoKQEAgLTM5MSw2ICszOTMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBv
aW50QXJndW1lbnRzOgogICAgIGNhc2UgQ1BVSW50cmluc2ljOgogICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGg6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICBjYXNlIEdl
dFZlY3Rvckxlbmd0aDoKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0QnlWYWxXaXRo
VGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCAzYThmNWNmYzc5NWUuLmQ4NmZhNjVlNjc1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjA1LDYgKzYwNSw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBDaGVja0luQm91bmRzKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gQ2hlY2tJbkJvdW5kc0ludDUyKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlID0gbV9pbnRlcnByZXRl
ci5mb3JOb2RlKG5vZGUpOwogICAgICAgICAgICAgewpAQCAtMTAyNSw2ICsxMDI3LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRBcnJheUxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlw
ZWRBcnJheUxlbmd0aEFzSW50NTI6CisgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxl
bmd0aEFzSW50NTIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFZlY3Rv
ckxlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTAzNCw2ICsxMDM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBD
aGVja0luQm91bmRzOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrSW5Cb3VuZHMoKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHNJbnQ1MjoKKyAgICAgICAg
ICAgIGNvbXBpbGVDaGVja0luQm91bmRzSW50NTIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsKCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTExNzUsNiArMTE4Myw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldEFzSW50NTIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEdldFByb3RvdHlwZU9mOgogICAgICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTQ4MjgsOSArNDgzOSw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBtX291dC5pc051bGwobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQXJyYXlCdWZm
ZXJWaWV3X3ZlY3RvcikpKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldCgpCisgICAgTFZhbHVlIGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2Vw
dFNldHRpbmdSZXN1bHQoKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpOyAgICAKKyAgICAgICAgTFZhbHVlIGJhc2VQdHIgPSBsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIHdhc3RlZnVsQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGwgPSBtX291dC5u
ZXdCbG9jaygpOwpAQCAtNDg0Niw3ICs0ODU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh3YXN0ZWZ1bENhc2UsIG5vdE51bGwpOwog
CiAgICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBtX291dC5sb2FkUHRyKGJhc2VQdHIsIG1faGVhcHMu
SlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVx
dWFsKHZlY3RvciwgbV9vdXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0
b3JQdHIoKSkpLCAKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKHZlY3RvciwgbV9v
dXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6Om51bGxWZWN0b3JQdHIoKSkpLAogICAg
ICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3ROdWxsKSk7CiAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obm90TnVsbCwgY29udGludWF0aW9uKTsKQEAgLTQ4NjYsOSArNDg3
NywyOSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgIHNl
dEludDMyKG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBudWxsVmVj
dG9yT3V0LCB3YXN0ZWZ1bE91dCkpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShwb2ludGVy
VHlwZSgpLCBudWxsVmVjdG9yT3V0LCB3YXN0ZWZ1bE91dCk7CiAgICAgfQogCisgICAgdm9pZCBj
b21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IGVtaXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICAvLyBBSSBwcm9taXNlcyB0aGF0
IHRoZSByZXN1bHQgb2YgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgd2lsbCBiZSBJbnQzMiwgc28g
d2UgbXVzdCB1cGhvbGQgdGhhdCBwcm9taXNlIGhlcmUuCisgICAgICAgIHNwZWN1bGF0ZShPdmVy
Zmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShyZXN1bHQsIG1fb3V0LmNvbnN0
SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisjZW5kaWYKKyAg
ICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIocmVzdWx0KSk7CisgICAgfQorCitJR05P
UkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4oIm1pc3Npbmctbm9yZXR1cm4iKQorICAgIHZvaWQgY29t
cGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MigpCisgICAgeworICAgICAgICAvLyBU
aGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNFX0FTU0VSVChVU0UoTEFSR0VfVFlQRURf
QVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6
ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQg
PSBlbWl0R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRFeGNlcHRTZXR0aW5nUmVzdWx0KCk7CisgICAg
ICAgIHNldFN0cmljdEludDUyKHJlc3VsdCk7CisgICAgfQorSUdOT1JFX0NMQU5HX1dBUk5JTkdT
X0VORAorCiAgICAgdm9pZCBjb21waWxlR2V0UHJvdG90eXBlT2YoKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKQEAgLTUwNTQsOCArNTA4NSwxMyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1v
ZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIo
Ci0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgICAgICAgICBMVmFsdWUgbGVuZ3RoID0g
bV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFw
cy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShP
dmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZShsZW5ndGgsIG1fb3V0LmNv
bnN0SW50NjQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CisgICAgICAg
ICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobGVuZ3RoKSk7CisjZWxzZQorICAg
ICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjZW5k
aWYKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTUwNjQsNiArNTEwMCwxNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCitJR05P
UkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4oIm1pc3Npbmctbm9yZXR1cm4iKQorICAgIHZvaWQgY29t
cGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAg
ICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxFQVNFX0FT
U0VSVChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgc2V0U3Ry
aWN0SW50NTIobV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICB9CitJR05PUkVfQ0xB
TkdfV0FSTklOR1NfRU5ECisKICAgICB2b2lkIGNvbXBpbGVHZXRWZWN0b3JMZW5ndGgoKQogICAg
IHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpAQCAtNTEw
OCw3ICs1MTU0LDIyIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRlcGVuZCBvbiBvdXIgdmFsdWUu
IFVzZXJzIG9mIHRoaXMgbm9kZSBqdXN0IG5lZWQgdG8gbWFpbnRhaW4gdGhhdAogICAgICAgICAv
LyB3ZSBkb21pbmF0ZSB0aGVtLgogICAgIH0KLSAgICAKKworSUdOT1JFX0NMQU5HX1dBUk5JTkdT
X0JFR0lOKCJtaXNzaW5nLW5vcmV0dXJuIikKKyAgICB2b2lkIGNvbXBpbGVDaGVja0luQm91bmRz
SW50NTIoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHByZXByb2Nlc3NvciBjaG9rZXMgb24gUkVM
RUFTRV9BU1NFUlQoVVNFKExBUkdFX1RZUEVEX0FSUkFZUykpLCB0aGlzIGlzIGVxdWl2YWxlbnQu
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNpemVvZihzaXplX3QpID09IHNpemVvZih1aW50NjRf
dCkpOworICAgICAgICAvLyBTaWduLWV4dGVuZGVkIHRvIGFsc28gY2F0Y2ggbmVnYXRpdmUgaW5k
aWNlcworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IGxvd1N0cmljdElu
dDUyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5v
VmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVxdWFsKGluZGV4LCBsZW5ndGgpKTsKKyAg
ICAgICAgLy8gRXZlbiB0aG91Z2ggd2UgY2xhaW0gdG8gaGF2ZSBKU1ZhbHVlIHJlc3VsdCwgbm8g
dXNlciBvZiB1cyBzaG91bGQKKyAgICAgICAgLy8gZGVwZW5kIG9uIG91ciB2YWx1ZS4gVXNlcnMg
b2YgdGhpcyBub2RlIGp1c3QgbmVlZCB0byBtYWludGFpbiB0aGF0CisgICAgICAgIC8vIHdlIGRv
bWluYXRlIHRoZW0uCisgICAgfQorSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAorCiAgICAgTFZh
bHVlIGNvbXBpbGVHZXRCeVZhbEltcGwoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKQEAgLTYwMDgsMTEgKzYwNjksMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgaXNJbkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGlzT3V0T2ZCb3VuZHMgPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKGluZGV4LCBs
b3dJbnQzMihjaGlsZDUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc3VyZShpc091dE9m
Qm91bmRzKSwgdW5zdXJlKGlzSW5Cb3VuZHMpKTsKLSAgICAgICAgICAgICAgICAgICAgCisKKyAg
ICAgICAgICAgICAgICAgICAgTFZhbHVlIGlzT3V0T2ZCb3VuZHNDb25kaXRpb247CisgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGlsZDUudXNlS2luZCgpID09IEludDUyUmVwVXNlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNF
X0FTU0VSVChVU0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNpemVvZihzaXplX3QpID09IHNp
emVvZih1aW50NjRfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaXNPdXRPZkJvdW5kc0Nv
bmRpdGlvbiA9IG1fb3V0LmFib3ZlT3JFcXVhbChtX291dC5zaWduRXh0MzJUbzY0KGluZGV4KSwg
bG93U3RyaWN0SW50NTIoY2hpbGQ1KSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hpbGQ1LnVzZUtpbmQoKSA9PSBJbnQzMlVz
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzQ29uZGl0aW9uID0gbV9v
dXQuYWJvdmVPckVxdWFsKGluZGV4LCBsb3dJbnQzMihjaGlsZDUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNPdXRPZkJvdW5kc0Nv
bmRpdGlvbiwgdW5zdXJlKGlzT3V0T2ZCb3VuZHMpLCB1bnN1cmUoaXNJbkJvdW5kcykpOworCiAg
ICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
aXNJbkJvdW5kcywgaXNPdXRPZkJvdW5kcyk7CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0
b3JlKHZhbHVlVG9TdG9yZSwgcG9pbnRlciwgc3RvcmVUeXBlKHR5cGUpKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtODE2OSw5NSArODIzNywxOCBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgICAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7
CiAKLSAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7
Ci0KLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2Ug
PSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmJy
YW5jaCgKLSAgICAgICAgICAgICAgICBtX291dC5hYm92ZShzaXplLCBtX291dC5jb25zdEludDMy
KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSksCi0gICAgICAgICAgICAgICAgcmFy
ZWx5KHNsb3dDYXNlKSwgdXN1YWxseShzbWFsbEVub3VnaENhc2UpKTsKLQotICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbWFsbEVub3VnaENhc2UsIHNs
b3dDYXNlKTsKLQotICAgICAgICAgICAgTFZhbHVlIGJ5dGVTaXplID0KLSAgICAgICAgICAgICAg
ICBtX291dC5zaGwobV9vdXQuemVyb0V4dFB0cihzaXplKSwgbV9vdXQuY29uc3RJbnQzMihsb2dF
bGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkpKTsKLSAgICAgICAgICAgIGlmIChlbGVtZW50U2l6
ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7Ci0gICAgICAgICAgICAgICAgYnl0ZVNpemUgPSBtX291
dC5iaXRBbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQu
Y29uc3RJbnRQdHIoNykpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDcpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBieXRlU2l6ZSwgc2xvd0Nhc2UpOwotICAgICAgICAg
ICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRvciwgc2xvd0Nhc2Up
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzcGxhdFdvcmRzKAotICAgICAgICAgICAgICAg
IHN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAotICAgICAgICAgICAg
ICAgIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50
UHRyKDMpKSksCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAotICAgICAgICAgICAg
ICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMpOwotCi0jaWYgQ1BVKEFSTTY0RSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9IG1fb3V0Lnplcm9F
eHRQdHIoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNh
dGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOwotICAgICAgICAgICAgICAgIGF1
dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3JhZ2UpOwotICAgICAgICAgICAgICAg
IGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChCMzo6VmFsdWVSZXA6
OlNvbWVMYXRlUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUtPnNldEdl
bmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0u
Z3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC50YWdBcnJh
eVB0cihwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsKLSAgICAgICAgICAg
IH0KLSNlbmRpZgotCi0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1f
b3V0LmFuY2hvcihzdG9yYWdlKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQuc2ln
bkV4dDMyVG82NChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSk7CiAKLSAgICAgICAgICAgIExW
YWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBudWxscHRyOwotICAgICAgICAgICAgc3dpdGNoICh0eXBl
ZEFycmF5VHlwZSkgewotI2RlZmluZSBUWVBFRF9BUlJBWV9UWVBFX0NBU0UobmFtZSkgXAotICAg
ICAgICAgICAgY2FzZSBUeXBlICMjIG5hbWU6IFwKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0
VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxKUyMjbmFtZSMjQXJyYXk+KHN0cnVjdHVyZSwgbV9vdXQu
aW50UHRyWmVybywgc2xvd0Nhc2UpOyBcCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoVFlQRURf
QVJSQVlfVFlQRV9DQVNFKQotI3VuZGVmIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRQotICAgICAgICAg
ICAgY2FzZSBUeXBlRGF0YVZpZXc6Ci0gICAgICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0g
YWxsb2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBz
bG93Q2FzZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRy
KHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0
b3IpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFsdWUsIG1f
aGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3Jl
MzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
bXV0YXRvckZlbmNlKCk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisgICAgICAgICAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplKHR5cGVk
QXJyYXlUeXBlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6ZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2Us
IGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBMVmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIG5vU3RvcmFnZSwgaGF2ZVN0b3JhZ2UpOworICAgICAgICBjYXNl
IEludDUyUmVwVXNlOiB7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3Ry
dWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7CiAKLSAgICAgICAgICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7Ci0gICAgICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6
eVNsb3dQYXRoKAotICAgICAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRp
b24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBl
KHR5cGVkQXJyYXlUeXBlKSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIHNpemUsIHN0b3JhZ2VWYWx1ZSk7Ci0gICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7Ci0gICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBMVmFsdWUgc2l6
ZSA9IGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFs
dWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAg
ICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC04Mjc3LDcgKzgyNjgsMTA0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGVtaXROZXdUeXBlZEFycmF5V2l0
aFNpemUoVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFsdWUgc2l6ZTY0Qml0
cykKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIHNtYWxsRW5vdWdoQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
KworICAgICAgICBWYWx1ZUZyb21CbG9jayBub1N0b3JhZ2UgPSBtX291dC5hbmNob3IobV9vdXQu
aW50UHRyWmVybyk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQu
YWJvdmUoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQ2NChKU0FycmF5QnVmZmVyVmlldzo6ZmFz
dFNpemVMaW1pdCkpLAorICAgICAgICAgICAgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShzbWFs
bEVub3VnaENhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOworICAgICAgICAvLyBXZSBhc3N1bWUg
dGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQgdGhlIHNpemUgaXMgYSAzMi1i
aXQgbnVtYmVyLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KGlzSW5Cb3VuZHM8aW50MzJfdD4oSlNB
cnJheUJ1ZmZlclZpZXc6OmZhc3RTaXplTGltaXQpKTsKKworICAgICAgICBMVmFsdWUgYnl0ZVNp
emUgPQorICAgICAgICAgICAgbV9vdXQuc2hsKHNpemU2NEJpdHMsIG1fb3V0LmNvbnN0SW50MzIo
bG9nRWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpKSk7CisgICAgICAgIGlmIChlbGVtZW50U2l6
ZSh0eXBlZEFycmF5VHlwZSkgPCA4KSB7CisgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJp
dEFuZCgKKyAgICAgICAgICAgICAgICBtX291dC5hZGQoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50
UHRyKDcpKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KDcpKSk7CisgICAgICAgIH0KKworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5
dGVTaXplLCBzbG93Q2FzZSk7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFw
Q2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKKworICAgICAgICBzcGxhdFdvcmRzKAorICAgICAg
ICAgICAgc3RvcmFnZSwKKyAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywKKyAgICAgICAgICAg
IG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoYnl0ZVNpemUsIG1fb3V0LmNvbnN0SW50UHRy
KDMpKSksCisgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCisgICAgICAgICAgICBtX2hlYXBz
LnR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsKKworI2lmIENQVShBUk02NEUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9vdXQucGF0Y2hwb2lu
dChwb2ludGVyVHlwZSgpKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJl
Z2lzdGVyKHN0b3JhZ2UpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZTY0
Qml0cywgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAg
ICAgICAgICAgYXV0aGVudGljYXRlLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
ICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAg
ICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigp
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc3RvcmFnZSA9IGF1dGhlbnRpY2F0ZTsK
KyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaGF2ZVN0b3JhZ2Ug
PSBtX291dC5hbmNob3Ioc3RvcmFnZSk7CisKKyAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1
ZSA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAodHlwZWRBcnJheVR5cGUpIHsKKyNkZWZpbmUg
VFlQRURfQVJSQVlfVFlQRV9DQVNFKG5hbWUpIFwKKyAgICAgICAgY2FzZSBUeXBlICMjIG5hbWU6
IFwKKyAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTIyNuYW1l
IyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7IFwKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElO
R19EQVRBX1ZJRVcoVFlQRURfQVJSQVlfVFlQRV9DQVNFKQorI3VuZGVmIFRZUEVEX0FSUkFZX1RZ
UEVfQ0FTRQorICAgICAgICBjYXNlIFR5cGVEYXRhVmlldzoKKyAgICAgICAgICAgIGZhc3RSZXN1
bHRWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0PEpTRGF0YVZpZXc+KHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX291dC5zdG9yZVB0cihzdG9yYWdlLCBmYXN0
UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKKyNpZiBVU0Uo
TEFSR0VfVFlQRURfQVJSQVlTKQorICAgICAgICBtX291dC5zdG9yZTY0KHNpemU2NEJpdHMsIGZh
c3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2Vsc2UK
KyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jYXN0VG9JbnQzMihzaXplNjRCaXRzKSwgZmFz
dFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZW5kaWYK
KyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKEZhc3RUeXBlZEFycmF5KSwg
ZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X21vZGUpOworCisgICAg
ICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9u
KTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2VWYWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgp
LCBub1N0b3JhZ2UsIGhhdmVTdG9yYWdlKTsKKworICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OworICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAg
ICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVm
UHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25O
ZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwgbG9jYXRpb25zWzBd
LmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0
R1BSKCksCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgc2l6ZTY0Qml0cywgc3RvcmFnZVZhbHVlKTsKKyAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0
VmFsdWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUo
bV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBvYmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpOwpAQCAtMTQ2NTYsNiArMTQ3NDQsOCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
fQogCisgICAgLy8gYmFzZSBhbmQgdmFsdWUgYXJlIDY0LWJpdHMsIGJlZ2luIGFuZCBlbmQgYXJl
IDMyLWJpdHMKKyAgICAvLyBzdG9yZXMgdmFsdWUgYXQgZXZlcnkgNjQtYml0cyB3b3JkIGJldHdl
ZW4gYmFzZStiZWdpbio4IGFuZCBiYXNlK2VuZCo4CiAgICAgdm9pZCBzcGxhdFdvcmRzKExWYWx1
ZSBiYXNlLCBMVmFsdWUgYmVnaW4sIExWYWx1ZSBlbmQsIExWYWx1ZSB2YWx1ZSwgY29uc3QgQWJz
dHJhY3RIZWFwJiBoZWFwKQogICAgIHsKICAgICAgICAgY29uc3QgdWludDY0X3QgdW5yb2xsaW5n
TGltaXQgPSAxMDsKQEAgLTE1NTkxLDcgKzE1NjgxLDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAg
RGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOwogCisjaWYgVVNFKExB
UkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVl
KCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5jb25zdEludDMyKDApKSk7
CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjROb25OZWdhdGl2ZShkYXRhVmll
dywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2Vsc2UKKyAgICAgICAgLy8g
Tm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY29tcGFyaXNvbiBvZiBpbmRleCB0byAwLCB0aGUgY2hl
Y2sgYWdhaW5zdCBsZW5ndGggY2F0Y2hlcyB0aGF0IGNhc2UKICAgICAgICAgTFZhbHVlIGxlbmd0
aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1f
aGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVl
IGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOwogICAgICAgICBpZiAoZGF0
YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5k
ZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CkBAIC0xNTcz
NCw3ICsxNTgzMCwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0g
bV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisg
ICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5s
ZXNzVGhhbihpbmRleCwgbV9vdXQuY29uc3RJbnQzMigwKSkpOworICAgICAgICBMVmFsdWUgbGVu
Z3RoID0gbV9vdXQubG9hZDY0Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxp
Y2l0IGNvbXBhcmlzb24gb2YgaW5kZXggdG8gMCwgdGhlIGNoZWNrIGFnYWluc3QgbGVuZ3RoIGNh
dGNoZXMgdGhhdCBjYXNlCiAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56ZXJvRXh0UHRy
KG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCkpOworI2VuZGlmCiAgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291
dC56ZXJvRXh0UHRyKGluZGV4KTsKICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAg
ICAgICAgICAgaW5kZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29u
c3RJbnQ2NChkYXRhLmJ5dGVTaXplIC0gMSkpOwpAQCAtMTcyMzYsNyArMTczMzgsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgYXV0byBkb1VudGFnQXJyYXlQdHIgPSBbJl0oTFZhbHVlIHRhZ2dlZFB0
cikgewogI2lmIENQVShBUk02NEUpCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6
UHJpbWl0aXZlKSB7CisjaWYgVVNFKEFERFJFU1M2NCkKKyAgICAgICAgICAgICAgICBMVmFsdWUg
c2l6ZSA9IG1fb3V0LmxvYWQ2NChiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0
aCk7CisjZWxzZQogICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQubG9hZDMyKGJh
c2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbmRpZgogICAgICAgICAg
ICAgICAgIHJldHVybiB1bnRhZ0FycmF5UHRyKHRhZ2dlZFB0ciwgc2l6ZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICByZXR1cm4gcHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0
cHV0LmgKaW5kZXggYTk0MjAwOTNmNTI5Li5lZDhmZjczZTFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMzI5LDYgKzMyOSw3IEBAIHB1YmxpYzoKICAgICBMVmFs
dWUgbm9uTmVnYXRpdmUzMihMVmFsdWUgbG9hZEluc3RydWN0aW9uKSB7IHJldHVybiBsb2FkSW5z
dHJ1Y3Rpb247IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoVHlwZWRQb2ludGVyIHBv
aW50ZXIpIHsgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsgfQogICAgIExWYWx1ZSBsb2FkMzJOb25O
ZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4g
bG9hZDMyKGJhc2UsIGZpZWxkKTsgfQorICAgIExWYWx1ZSBsb2FkNjROb25OZWdhdGl2ZShMVmFs
dWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDY0KGJhc2Us
IGZpZWxkKTsgfQogCiAgICAgTFZhbHVlIGVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKICAgICBMVmFs
dWUgbm90RXF1YWwoTFZhbHVlLCBMVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSW50cmluc2ljRW1pdHRlci5jcHAKaW5kZXggNWM3NjVlZDk3NjUwLi44OTU2OGQ0NjMwZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTg2LDIzICs4NiwzMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJ
bnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogCiAgICAgc3dpdGNo
IChpbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogewor
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RhdGUuYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpLCB2YWx1ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFs
dWVHUFIsIHN0YXRlLnNjcmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAg
ICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKICAgICAgICAgaml0
LmJveEludDMyKHZhbHVlR1BSLCB2YWx1ZVJlZ3MpOworI2VuZGlmCiAgICAgICAgIHN0YXRlLnN1
Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUJ5
dGVMZW5ndGhJbnRyaW5zaWM6IHsKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlOwotCisjaWYgVVNFKExB
UkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IHZhbHVlR1BSKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpID4gMSkKKyAgICAgICAg
ICAgIGppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1
ZUdQUik7CisgICAgICAgIGppdC5ib3hJbnQ1Mih2YWx1ZUdQUiwgdmFsdWVHUFIsIHN0YXRlLnNj
cmF0Y2hHUFIsIHN0YXRlLnNjcmF0Y2hGUFIpOworI2Vsc2UKICAgICAgICAgaml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlR1BSKTsKLQogICAgICAgICBpZiAoZWxlbWVudFNpemUo
dHlwZSkgPiAxKSB7Ci0gICAgICAgICAgICAvLyBXZSBjYW4gdXNlIGEgYml0c2hpZnQgaGVyZSBz
aW5jZSB3ZSBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBieXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dz
IGFuIGludDMyLgotICAgICAgICAgICAgaml0LmxzaGlmdDMyKHZhbHVlR1BSLCBJbW0zMihsb2dF
bGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiB1c2Ug
YSBiaXRzaGlmdCBoZXJlIHNpbmNlIG9uIEFERFJFU1MzMiBwbGF0Zm9ybXMgVHlwZWRBcnJheXMg
Y2Fubm90IGhhdmUgYnl0ZUxlbmd0aCB0aGF0IG92ZXJmbG93cyBhbiBpbnQzMi4KKyAgICAgICAg
ICAgIGppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIobG9nRWxlbWVudFNpemUodHlwZSkpLCB2YWx1
ZUdQUik7CiAgICAgICAgIH0KLQogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVHUFIsIHZhbHVl
UmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTMzLDggKzE0MiwxMiBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAg
ICAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUik7CiAgICAgICAg
IAogICAgICAgICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgIAorCisjaWYgVVNFKExBUkdFX1RZ
UEVEX0FSUkFZUykKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3Rh
dGUuc2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQuYm94
SW50MzIodmFsdWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2Vl
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNGE1YzA4MGMwNjBjLi5mYWM4ZTBhYzY2OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtOTM3LDEwICs5
MzcsOCBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdQogICAgICAgICB1aW50MzJfdCBpID0gKmlu
ZGV4OwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9i
amVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkgewotICAgICAgICAgICAgICAgIG9i
amVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAob2Jq
ZWN0LT50cnlTZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlLCBhcnJheVByb2ZpbGUpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFy
cmF5UHJvZmlsZSkKICAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRz
KCk7CkBAIC0yMzQyLDIxICsyMzQwLDIyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUg
Z2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQzMl90PiBpbmRleCA9IHN1
YnNjcmlwdC50cnlHZXRBc0ludDMyKCkpIHsKLSAgICAgICAgaW50MzJfdCBpID0gKmluZGV4Owor
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRB
c1VpbnQzMkluZGV4KCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAg
aWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgewotICAgICAgICAgICAgaWYgKGkgPj0gMCAmJiBh
c1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIGlmIChhc1N0
cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGdsb2JhbE9i
amVjdCwgaSkpOwogICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkKICAgICAgICAgICAgICAg
ICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlj
a2x5KHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0
ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0
T2ZCb3VuZHMgPSBmYWxzZTsKIAotICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5kZXhpbmdUeXBl
KCkgPT0gQXJyYXlXaXRoQ29udGlndW91cyAmJiBpID49IDAgJiYgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGkpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKKyAgICAgICAg
ICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMKKyAg
ICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgPCBvYmplY3QtPmJ1dHRl
cmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBleHBh
bmQgdGhpcyB0byBBcnJheVN0b3JhZ2UsIEludDMyLCBhbmQgbWF5YmUgRG91YmxlOgogICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5
NDAKICAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBvYmplY3QtPmdsb2JhbE9i
amVjdCh2bSk7CkBAIC0yMzcyLDggKzIzNzEsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1Zh
bHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGkgPj0gMCkKLSAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBpKSk7CiAgICAgfSBlbHNlIGlmIChz
dWJzY3JpcHQuaXNOdW1iZXIoKSAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgYXJyYXlQcm9maWxl
KQogICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAppbmRleCA0
MWM3MWI2MDA0NGUuLmU3NmRhZGEwZDMzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMTQ5LDYgKzE0OSwxMiBAQAog
I2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAwCiAjZW5kaWYKIAorI2lmIFVTRShMQVJHRV9U
WVBFRF9BUlJBWVMpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9MQVJHRV9UWVBFRF9BUlJBWVMgMAorI2VuZGlmCisK
ICNpZiBDUFUoQUREUkVTUzY0KQogI2RlZmluZSBPRkZMSU5FX0FTTV9BRERSRVNTNjQgMQogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmlu
ZGV4IDU2ODEzNzdiYjk4NC4uNDk0ZWY3NjFlMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEwNDcsOCArMTA0Nyw4IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlCiAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91
bmRzKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBvYmplY3QtPmdldEluZGV4UXVpY2tseShpKTsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVl
IHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGksIGFycmF5UHJvZmlsZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgYm9vbCBza2lwTWFy
a2luZ091dE9mQm91bmRzID0gZmFsc2U7CiAKQEAgLTExNzAsMTQgKzExNzAsMTMgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpCiAgICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKKyAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgCiAg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFz
VWludDMySW5kZXgoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBp
ZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5k
ZXhRdWlja2x5KGksIHZhbHVlKSkKLSAgICAgICAgICAgICAgICBvYmplY3QtPnNldEluZGV4UXVp
Y2tseSh2bSwgaSwgdmFsdWUpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCFv
YmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZSkpCiAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5
SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBpc1N0cmljdE1vZGUpOwogICAg
ICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBiNDIxYTdmYTQxMGUu
LjZjZGJkOGRlM2JhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjE3LDYgKzIxNywxMCBAQCBpZiBKU1ZBTFVFNjQK
ICAgICBjb25zdCBTdHJ1Y3R1cmVFbnRyb3B5Qml0c1NoaWZ0ID0gY29uc3RleHByIFN0cnVjdHVy
ZUlEVGFibGU6OnNfZW50cm9weUJpdHNTaGlmdEZvclN0cnVjdHVyZVBvaW50ZXIKIGVuZAogCitp
ZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICBjb25zdCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgg
PSBjb25zdGV4cHIgQXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aAorZW5k
CisKIGNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID0gY29uc3RleHByIG1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsCiAKIGlmIFg4Nl82NCBvciBYODZfNjRfV0lOIG9yIEFS
TTY0IG9yIEFSTTY0RSBvciBSSVNDVjY0CkBAIC0xMzEwLDcgKzEzMTQsOCBAQCBtYWNybyBhcnJh
eVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkK
ICAgICBsb2FkYiBKU0NlbGw6Om1faW5kZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdU
eXBlCiBlbmQKIAotbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5pc2hJ
bnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHNsb3dQYXRoKQorIyBOb3RlIHRoYXQg
aW5kZXggaXMgYWxyZWFkeSBzaWduLWV4dGVuZGVkIHRvIGJlIGEgcmVnaXN0ZXIgd2lkdGguCitt
YWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VUeXBlZEFycmF5LCBzbG93UGF0aCkKICAgICAj
IEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBoYXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0
cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZyb250LgogICAgIGxvYWRiIEpTQ2VsbDo6bV90
eXBlW2Jhc2VdLCB0MgogICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKQEAgLTEzMjEs
MTEgKzEzMjYsMjYgQEAgbWFjcm8gZ2V0QnlWYWxUeXBlZEFycmF5KGJhc2UsIGluZGV4LCBmaW5p
c2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIHMKICAgICBpZiBBUk02NEUKICAg
ICAgICAgY29uc3QgbGVuZ3RoID0gdDYKICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3Ci0gICAg
ICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgbGVuZ3RoCi0gICAg
ICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgICAgIGlmIExBUkdFX1RZUEVE
X0FSUkFZUworICAgICAgICAgICAgbG9hZHEgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jh
c2VdLCBsZW5ndGgKKyAgICAgICAgICAgIGJxYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0
aFtiYXNlXSwgbGVuZ3RoCisgICAgICAgICAgICBiaWFlcSBpbmRleCwgbGVuZ3RoLCBzbG93UGF0
aAorICAgICAgICBlbmQKICAgICBlbHNlCiAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFy
ZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJl
IG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KLSAgICAgICAgYmlhZXEgaW5kZXgsIEpTQXJy
YXlCdWZmZXJWaWV3OjptX2xlbmd0aFtiYXNlXSwgc2xvd1BhdGgKKyAgICAgICAgaWYgTEFSR0Vf
VFlQRURfQVJSQVlTCisgICAgICAgICAgICBicWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBlbHNlCisgICAgICAgICAgICBiaWFl
cSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAg
ICAgICBlbmQKKyAgICBlbmQKKworICAgIGlmIExBUkdFX1RZUEVEX0FSUkFZUworICAgICAgICBi
cWJlcSBpbmRleCwgU21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoLCAuc21hbGxUeXBlZEFycmF5Cisg
ICAgICAgIHNldExhcmdlVHlwZWRBcnJheSgpCisuc21hbGxUeXBlZEFycmF5OgogICAgIGVuZAog
CiAgICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW2Jhc2VdLCB0MwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQppbmRleCA1MGQ1ZGJkZjYwMmEuLjRlNzBmOGIxNWZmMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KQEAgLTE2MjQsNiArMTYyNCwxMCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92
YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAg
ICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKKyAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJyYXkoKQor
ICAgICAgICBjcmFzaCgpCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAgICAgZ2V0
KG1fYmFzZSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIs
IENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCkBAIC0xNjY5LDcgKzE2NzMsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRl
eGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBnZXRCeVZh
bFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlW
YWwsIHNldExhcmdlVHlwZWRBcnJheSwgLm9wR2V0QnlWYWxTbG93KQogCiAub3BHZXRCeVZhbFNs
b3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggZDg0YjZlYWQzN2ZkLi4wMjkyMGNhODQyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEz
LDYgKzE3MTMsMTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICAgICAgZmluaXNoR2V0
QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAogCisgICAgbWFjcm8gc2V0TGFyZ2VU
eXBlZEFycmF5KCkKKyAgICAgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgICAgICBz
dG9yZWIgMSwgT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlICsgQXJyYXlQcm9m
aWxlOjptX21heUJlTGFyZ2VUeXBlZEFycmF5W3Q1XQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjcmFzaCgpCisgICAgICAgIGVuZAorICAgIGVuZAorCiAgICAgbWV0YWRhdGEodDUsIHQyKQog
CiAgICAgZ2V0KG1fYmFzZSwgdDIpCkBAIC0xNzIzLDYgKzE3MzEsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZAogCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAjIFRoaXMg
c2lnbi1leHRlbnNpb24gbWFrZXMgdGhlIGJvdW5kcy1jaGVja2luZyBpbiBnZXRCeVZhbFR5cGVk
QXJyYXkgd29yayBldmVuIG9uIDRHQiBUeXBlZEFycmF5LgogICAgIHN4aTJxIHQxLCB0MQogCiAg
ICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgbnVtYmVy
VGFnKQpAQCAtMTc2Myw3ICsxNzcyLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBk
aXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgZ2V0QnlWYWxU
eXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFs
LCAub3BHZXRCeVZhbFNsb3cpCisgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNo
SW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdldEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIC5v
cEdldEJ5VmFsU2xvdykKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2dldF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggYzliOGYyYTcxOTFlLi40OTdmNDllOGExZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3
ICs0Miw3IEBAIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gQXJyYXlCdWZmZXI6OnByaW1p
dGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpCiAgICAgcmV0dXJuIGRlc3RydWN0b3IuZ2V0KCkuY29w
eVJlZigpOwogfQogCi1TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzOjpTaGFyZWRBcnJheUJ1ZmZl
ckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemUsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIEFycmF5QnVmZmVy
RGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKICAgICA6IG1fZGF0YShkYXRhLCBzaXpl
KQogICAgICwgbV9kZXN0cnVjdG9yKFdURk1vdmUoZGVzdHJ1Y3RvcikpCiAgICAgLCBtX3NpemVJ
bkJ5dGVzKHNpemUpCkBAIC02OCw3ICs2OCw3IEBAIEFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5
QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQogICAgIG90aGVyLnRy
YW5zZmVyVG8oKnRoaXMpOwogfQogCi1BcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNv
bnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemVJ
bkJ5dGVzKQogICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKIHsKQEAgLTEwOSwyMyAr
MTA5LDIxIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6cmVzZXQoKQogICAgIG1fc2l6ZUlu
Qnl0ZXMgPSAwOwogfQogCi12b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVu
c2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0
aW9uUG9saWN5IHBvbGljeSkKK3ZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUo
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0
aW9uUG9saWN5IHBvbGljeSkKIHsKLSAgICAvLyBEbyBub3QgYWxsb3cgMzEtYml0IG92ZXJmbG93
IG9mIHRoZSB0b3RhbCBzaXplLgotICAgIGlmIChudW1FbGVtZW50cykgewotICAgICAgICB1bnNp
Z25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKLSAgICAgICAg
aWYgKHRvdGFsU2l6ZSAvIG51bUVsZW1lbnRzICE9IGVsZW1lbnRCeXRlU2l6ZSB8fCB0b3RhbFNp
emUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBDaGVja2VkU2l6ZSBzaXplSW5CeXRlcyA9
IG51bUVsZW1lbnRzOworICAgIHNpemVJbkJ5dGVzICo9IGVsZW1lbnRCeXRlU2l6ZTsKKyAgICBp
ZiAoc2l6ZUluQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpIHx8IHNpemVJbkJ5dGVzLnZhbHVlKCkgPiBN
QVhfQVJSQVlfQlVGRkVSX1NJWkUpIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG51
bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudEJ5dGVTaXplKTsKLSAgICBz
aXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlczsKKworICAgIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZSA9IHNpemVJbkJ5dGVzLnZhbHVlKCk7CiAgICAgaWYgKCFhbGxvY2F0aW9uU2l6ZSkK
ICAgICAgICAgYWxsb2NhdGlvblNpemUgPSAxOyAvLyBNYWtlIHN1cmUgbWFsbG9jIGFjdHVhbGx5
IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11Y2guIFdlIHVzZSBudWxsIHRvIG1l
YW4gdGhhdCB0aGUgYnVmZmVyIGlzIGRldGFjaGVkLgogCiAgICAgdm9pZCogZGF0YSA9IEdpZ2Fj
YWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYWxsb2NhdGlvblNpemUpOwotICAg
IG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNpemVJbkJ5dGVzKTsKKyAgICBtX2RhdGEgPSBEYXRh
VHlwZShkYXRhLCBzaXplSW5CeXRlcy52YWx1ZSgpKTsKICAgICBpZiAoIWRhdGEpIHsKICAgICAg
ICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHZvaWQgQXJy
YXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlCiAgICAgaWYgKHBvbGljeSA9PSBaZXJvSW5pdGlhbGl6ZSkKICAgICAg
ICAgbWVtc2V0KGRhdGEsIDAsIGFsbG9jYXRpb25TaXplKTsKIAotICAgIG1fc2l6ZUluQnl0ZXMg
PSBzaXplSW5CeXRlczsKKyAgICBtX3NpemVJbkJ5dGVzID0gc2l6ZUluQnl0ZXMudmFsdWUoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0la
RSk7CiAgICAgbV9kZXN0cnVjdG9yID0gQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdlRGVz
dHJ1Y3RvcigpOwogfQpAQCAtMTc4LDcgKzE3Niw3IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50
czo6c2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQogICAgIFJFTEVBU0VfQVNT
RVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0KIAot
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7
CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0xOTEsNyArMTg5LDcgQEAgUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyJiBvdGhlcikKICAgICByZXR1cm4gQXJy
YXlCdWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAK
LVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBhdXRvIGJ1
ZmZlciA9IHRyeUNyZWF0ZShzb3VyY2UsIGJ5dGVMZW5ndGgpOwogICAgIGlmICghYnVmZmVyKQpA
QCAtMjA4LDcgKzIwNiw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShB
cnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMpCiAvLyBDdXJyZW50IHRoaXMgaXMgb25seSB1
c2VkIGZyb206CiAvLyAtIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PD46OnNsb3dEb3duQW5kV2Fz
dGVNZW1vcnkuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBtZW1vcnkgc2hvdWxkIGhhdmUgYWxyZWFk
eSBjb21lCiAvLyAgIGZyb20gdGhlIGNhZ2UuCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitS
ZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRW5hYmxl
ZCgpIHx8IChHaWdhY2FnZTo6Y29udGFpbnMoZGF0YSkgJiYgR2lnYWNhZ2U6OmNvbnRhaW5zKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIGJ5dGVMZW5ndGggLSAxKSkpOwogICAg
IHJldHVybiBjcmVhdGVGcm9tQnl0ZXMoZGF0YSwgYnl0ZUxlbmd0aCwgQXJyYXlCdWZmZXI6OnBy
aW1pdGl2ZUdpZ2FjYWdlRGVzdHJ1Y3RvcigpKTsKQEAgLTIyMCw3ICsyMTgsNyBAQCBSZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVu
c2lnbmVkIGJ5dGVMZW5ndAogLy8gICBsb25nZXIgY2FnZWQsIG9yIHdlIGNvdWxkIGludHJvZHVj
ZSBhIG5ldyBzZXQgb2YgdHlwZWQgYXJyYXkgdHlwZXMgdGhhdCBhcmUgdW5jYWdlZCBhbmQgZ2V0
IGFjY2Vzc2VkCiAvLyAgIGRpZmZlcmVudGx5LgogLy8gLSBXZWJBc3NlbWJseS4gV2FzbSBzaG91
bGQgYWxsb2NhdGUgZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoLCBB
cnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3IpCitSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikK
IHsKICAgICBpZiAoZGF0YSAmJiAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgZGF0YSkpCiAgICAgICAgIEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKTsK
QEAgLTIyOSw3ICsyMjcsNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVG
cm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbgogICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShjb250ZW50cykpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSkKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4g
dHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVu
dHM6Olplcm9Jbml0aWFsaXplKTsKIH0KQEAgLTIzOSw3ICsyMzcsNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJl
dHVybiB0cnlDcmVhdGUob3RoZXIuZGF0YSgpLCBvdGhlci5ieXRlTGVuZ3RoKCkpOwogfQogCi1S
ZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAg
ICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgICBjb250ZW50cy50cnlBbGxvY2F0
ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpEb250SW5pdGlhbGl6ZSk7CkBA
IC0yNDgsMTcgKzI0NiwxNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZwogICAgIHJldHVybiBj
cmVhdGVJbnRlcm5hbChXVEZNb3ZlKGNvbnRlbnRzKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKIH0K
IAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1l
bnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXpl
KTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQor
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChz
aXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICByZXR1
cm4gdHJ5Q3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29u
dGVudHM6OkRvbnRJbml0aWFsaXplKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Q
b2xpY3kgcG9saWN5KQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKG51bUVsZW1lbnRz
LCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yNjYsMTUg
KzI2NCwxNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlUwogICAgIHJldHVybiBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
SW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3Vy
Y2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpj
cmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQq
IHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFieXRlTGVuZ3RoIHx8
IHNvdXJjZSk7CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdFJlZigqbmV3IEFycmF5QnVmZmVyKFdU
Rk1vdmUoY29udGVudHMpKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5
dGVMZW5ndGgpOworICAgIGlmIChieXRlTGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChzb3VyY2Up
OworICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7Cisg
ICAgfQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
CitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNv
bnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0
ZVNpemUsIHBvbGljeSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQXJyYXlCdWZmZXI6OkFycmF5QnVm
ZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cykKIHsKIH0KIAotdW5zaWduZWQgQXJy
YXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJp
Z2h0KQorc2l6ZV90IEFycmF5QnVmZmVyOjpjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVm
dCwgc2l6ZV90IHJpZ2h0KQogewogICAgIEFTU0VSVChsZWZ0IDw9IHJpZ2h0KTsKICAgICBpZiAo
eCA8IGxlZnQpCkBAIC0zMDEsOSArMzAxLDkgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1w
VmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KQogICAgIHJldHVy
biB4OwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgp
IGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25z
dAogewotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CisgICAgc2l6
ZV90IGN1cnJlbnRMZW5ndGggPSBieXRlTGVuZ3RoKCk7CiAgICAgaWYgKGluZGV4IDwgMCkKICAg
ICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsgaW5kZXg7CiAgICAgcmV0dXJuIGNsYW1wVmFs
dWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3QKICAgICBy
ZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZVdpdGhDbGFt
cGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVnaW4s
IHNpemVfdCBlbmQpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/
IGVuZCAtIGJlZ2luIDogMDsKKyAgICBzaXplX3Qgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAt
IGJlZ2luIDogMDsKICAgICBhdXRvIHJlc3VsdCA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7CiAgICAgaWYgKHJl
c3VsdCkKICAgICAgICAgcmVzdWx0LT5zZXRTaGFyaW5nTW9kZShzaGFyaW5nTW9kZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IDY4ZmY5MGUx
M2ViYS4uZWFjY2EyYzIzM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMywxMyArMzMsMjIgQEAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1NoYXJlZFRhc2suaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAor
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3Qp
ID09IHNpemVvZih1aW50NjRfdCkpOworI2RlZmluZSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUgKDF1
bGwgPDwgMzIpCisjZWxzZQorc3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2Yo
dWludDMyX3QpKTsKKy8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2l6ZV90IHRvIHN0b3JlIHRo
ZSBzaXplIGluIGJ5dGVzIG9mIGFycmF5IGJ1ZmZlcnMsIHdlIGNhbm5vdCBzdXBwb3J0IDRHQiBv
biAzMi1iaXQgcGxhdGZvcm1zLgorLy8gU28gd2UgYXJlIHN0aWNraW5nIHdpdGggMkdCLiBJdCBz
aG91bGQgaW4gdGhlb3J5IGJlIHBvc3NpYmxlIHRvIHN1cHBvcnQgdXAgdG8gKDRHQiAtIDFCKSBp
ZiBhbnlvbmUgY2FyZXMuCiAjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAweDdmZmZmZmZm
dQorI2VuZGlmCiAKIGNsYXNzIFZNOwogY2xhc3MgQXJyYXlCdWZmZXI7CkBAIC01MSw3ICs2MCw3
IEBAIHVzaW5nIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uID0gUGFja2VkUmVm
UHRyPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+CiAKIGNsYXNzIFNoYXJlZEFycmF5QnVmZmVyQ29u
dGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQXJyYXlCdWZmZXJDb250
ZW50cz4gewogcHVibGljOgotICAgIFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0
YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAg
U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3QsIEFycmF5QnVmZmVy
RGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwogICAgIH5TaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzKCk7
CiAgICAgCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51
bGwobV9zaXplSW5CeXRlcyk7IH0KQEAgLTYwLDE0ICs2OSwxNCBAQCBwcml2YXRlOgogICAgIHVz
aW5nIERhdGFUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2Fn
ZWRQdHI+OwogICAgIERhdGFUeXBlIG1fZGF0YTsKICAgICBQYWNrZWRBcnJheUJ1ZmZlckRlc3Ry
dWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7Ci0gICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsK
KyAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVyQ29udGVu
dHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMpOwogcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMoKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVk
IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCBzaXpl
SW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyQ29udGVudHMmIG9wZXJhdG9yPShB
cnJheUJ1ZmZlckNvbnRlbnRzJiYpOwpAQCAtNzksNyArODgsNyBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAgICAgdm9p
ZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUluQnl0ZXMo
KSk7IH0KLSAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUlu
Qnl0ZXM7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJ
bkJ5dGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
cmVkOyB9CiAgICAgCkBAIC05NCw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICBEb250SW5p
dGlhbGl6ZQogICAgIH07CiAKLSAgICB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAg
ICB2b2lkIHRyeUFsbG9jYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgCiAgICAgdm9pZCBtYWtlU2hhcmVk
KCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsKQEAgLTEwNSwy
OCArMTE0LDI4IEBAIHByaXZhdGU6CiAgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsKICAgICBQYWNrZWRSZWZQ
dHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7Ci0gICAgdW5zaWduZWQgbV9z
aXplSW5CeXRlczsKKyAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5
QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiBwdWJs
aWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRl
KHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShzaXplX3QgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5
dGVMZW5ndGgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+
IGNyZWF0ZShBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVM
ZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNv
bnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCiAgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4
Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRy
eUNyZWF0ZUFycmF5QnVmZmVyLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIAogICAgIGlubGluZSB2b2lkKiBk
YXRhKCk7CiAgICAgaW5saW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBpbmxpbmUg
dW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OworICAgIGlubGluZSBzaXplX3QgYnl0ZUxlbmd0
aCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJlZCgpOwogICAgIHZvaWQgc2V0U2hh
cmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CkBAIC0xMzcsNyArMTQ2LDcgQEAgcHVi
bGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShk
b3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNp
Z25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlV2l0aENsYW1wZWRJbmRleChzaXplX3QgYmVnaW4sIHNp
emVfdCBlbmQpIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlubGlu
ZSB2b2lkIHVucGluKCk7CkBAIC0xNjEsMTIgKzE3MCwxMiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj4gcHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxBcnJheUJ1
ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKLSAgICBzdGF0
aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYs
IGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUs
IEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKKyAgICBzdGF0aWMg
UmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsK
KyAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNv
bnRlbnRzJiYsIGNvbnN0IHZvaWQqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIEFy
cmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNs
YW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKLSAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsKKyAg
ICBpbmxpbmUgc2l6ZV90IGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKKyAgICBzdGF0
aWMgaW5saW5lIHNpemVfdCBjbGFtcFZhbHVlKGRvdWJsZSB4LCBzaXplX3QgbGVmdCwgc2l6ZV90
IHJpZ2h0KTsKIAogICAgIHZvaWQgbm90aWZ5RGV0YWNoaW5nKFZNJik7CiAKQEAgLTE5Miw3ICsy
MDEsNyBAQCBjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY29udGVudHMuZGF0YSgpOwogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0
aCgpIGNvbnN0CitzaXplX3QgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogewogICAg
IHJldHVybiBtX2NvbnRlbnRzLnNpemVJbkJ5dGVzKCk7CiB9CkBAIC0yMDUsNyArMjE0LDcgQEAg
Ym9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdAogc2l6ZV90IEFycmF5QnVmZmVyOjpn
Y1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJs
eSB3YW50IHRvIHNjYWxlIHRoaXMgYnkgdGhlIHNoYXJlZCByZWYgY291bnQgb3Igc29tZXRoaW5n
LgotICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
eXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBzaXplb2YoQXJyYXlCdWZmZXIpICsgYnl0ZUxlbmd0
aCgpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyOjpwaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNzY4ZmVhOTA5YmFiLi40
NzM3MjI3NDUzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNSwxOCArMjUsMTcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZl
clZpZXcoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgICAgIDogbV9i
eXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9pc0RldGFjaGFibGUodHJ1ZSkKICAg
ICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkKICAgICAgICAgLCBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCiB7Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgQ3Jhc2hPbk92ZXJmbG93PiBs
ZW5ndGgoYnl0ZU9mZnNldCk7CisgICAgQ2hlY2tlZDxzaXplX3QsIENyYXNoT25PdmVyZmxvdz4g
bGVuZ3RoKGJ5dGVPZmZzZXQpOwogICAgIGxlbmd0aCArPSBieXRlTGVuZ3RoOwogICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obGVuZ3RoIDw9IG1fYnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwogICAgIGlmIChtX2J1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggN2UzOTYwNzc3OGE5Li4wOTk5NTRi
ODY1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NywxNCArNzgsMTQgQEAgcHVibGljOgogCiAgICAgdm9p
ZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VBZGRyZXNzKCk7IH0KIAotICAgIHVuc2lnbmVk
IGJ5dGVPZmZzZXQoKSBjb25zdAorICAgIHNpemVfdCBieXRlT2Zmc2V0KCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0RGV0YWNoYWJsZShib29sKTsKICAgICBib29sIGlzRGV0YWNoYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEZXRhY2hhYmxlOyB9CkBAIC05MiwxOSArOTMsMTggQEAgcHVibGljOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOwogCiAgICAg
Ly8gSGVscGVyIHRvIHZlcmlmeSBieXRlIG9mZnNldCBpcyBzaXplIGFsaWduZWQuCi0gICAgc3Rh
dGljIGJvb2wgdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBz
aXplX3Qgc2l6ZSkKKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICByZXR1
cm4gIShieXRlT2Zmc2V0ICYgKHNpemUgLSAxKSk7CisgICAgICAgIHJldHVybiAhKGJ5dGVPZmZz
ZXQgJiAoZWxlbWVudFNpemUgLSAxKSk7CiAgICAgfQogCi0gICAgLy8gSGVscGVyIHRvIHZlcmlm
eSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCi0gICAgLy8gd2l0
aGluIHJhbmdlLgotICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFy
cmF5QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVsZW1l
bnRzLCBzaXplX3Qgc2l6ZSkKKyAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBz
dWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMgd2l0aGluIHJhbmdlLgorICAgIHN0YXRpYyBi
b29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHNpemVf
dCBieXRlT2Zmc2V0LCBzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQog
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7
CisgICAgICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAg
ICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBzaXplOworICAgICAgICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnl0
ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7
CiAgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHJlbWFpbmluZ0VsZW1lbnRzKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMyw0MyArMTEzLDQ4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFs
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIGlubGluZSBib29sIHNldEltcGwoQXJy
YXlCdWZmZXJWaWV3KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgc2V0
SW1wbChBcnJheUJ1ZmZlclZpZXcqLCBzaXplX3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUg
Ym9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3Ro
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKLSAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUltcGwodm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNl
dCk7CisgICAgaW5saW5lIGJvb2wgc2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBkYXRhQnl0ZUxlbmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpOworICAgIGlubGluZSBib29sIGdl
dFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXpl
X3QgYnl0ZU9mZnNldCk7CiAKLSAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwotCi0gICAgc3RhdGljIGlubGlu
ZSB2b2lkIGNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICAgICAgaW50IHN0YXJ0LCBpbnQg
ZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsCi0gICAgICAgIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2ln
bmVkKiBsZW5ndGgpOworICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVP
ZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwogCiAgICAgLy8gSW5wdXQgb2Zmc2V0IGlz
IGluIG51bWJlciBvZiBlbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkncyB2aWV3OwogICAgIC8vIG91
dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlpbmcgYnVm
ZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBj
bGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAogICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYgYnVm
ZmVyLAotICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVPZmZzZXQsCi0gICAgICAgIHVuc2lnbmVk
ICpvZmZzZXQsCi0gICAgICAgIHVuc2lnbmVkICpudW1FbGVtZW50cykKKyAgICAgICAgc2l6ZV90
IGFycmF5Qnl0ZU9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpvZmZzZXQsCisgICAgICAgIHNpemVf
dCAqbnVtRWxlbWVudHMpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlO
VF9NQVggLSBhcnJheUJ5dGVPZmZzZXQpIC8gc2l6ZW9mKFQpOworICAgICAgICBzaXplX3QgbWF4
T2Zmc2V0ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBhcnJheUJ5dGVP
ZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewog
ICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAq
bnVtRWxlbWVudHMgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
ICpvZmZzZXQgPSBhcnJheUJ5dGVPZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAg
ICAqb2Zmc2V0ID0gc3RkOjptaW4oYnVmZmVyLmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAg
ICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVuZ3RoKCkgLSAq
b2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgQ2hlY2tlZFNpemUgYWRqdXN0ZWRPZmZzZXQg
PSAqb2Zmc2V0OworICAgICAgICBhZGp1c3RlZE9mZnNldCAqPSBzaXplb2YoVCk7CisgICAgICAg
IGFkanVzdGVkT2Zmc2V0ICs9IGFycmF5Qnl0ZU9mZnNldDsKKyAgICAgICAgaWYgKGFkanVzdGVk
T2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSB8fCBhZGp1c3RlZE9mZnNldC52YWx1ZSgpID4gYnVmZmVy
LmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICAqb2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQudmFs
dWUoKTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRlTGVu
Z3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3Rk
OjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdW5z
aWduZWQgbV9ieXRlT2Zmc2V0IDogMzE7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAg
ICB1aW50NjRfdCBtX2J5dGVPZmZzZXQgOiA2MzsKKyNlbHNlCisgICAgdWludDMyX3QgbV9ieXRl
T2Zmc2V0IDogMzE7CisjZW5kaWYKICAgICBib29sIG1faXNEZXRhY2hhYmxlIDogMTsKLSAgICB1
bnNpZ25lZCBtX2J5dGVMZW5ndGg7CisgICAgVUNQVVJlZ2lzdGVyIG1fYnl0ZUxlbmd0aDsKIAog
ICAgIHVzaW5nIEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9p
ZCwgdGFnQ2FnZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFycmF5
QnVmZmVyJ3Mgc3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCkBAIC0xNjAsODEgKzE2NSw0
NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCi1i
b29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1bnNp
Z25lZCBieXRlT2Zmc2V0KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldEltcGwoQXJyYXlCdWZm
ZXJWaWV3KiBhcnJheSwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQg
PiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVuZ3Ro
KCkgPiBieXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGFycmF5LT5ieXRlTGVu
Z3RoKCkgPCBieXRlT2Zmc2V0KSB7Ci0gICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Ig
b3ZlcmZsb3cKKyAgICBpZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGFy
cmF5LT5ieXRlTGVuZ3RoKCksIGJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGFycmF5LT5i
YXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVm
ZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxl
bmd0aCwgc2l6ZV90IGJ5dGVPZmZzZXQpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVu
Z3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnl0ZUxlbmd0
aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQp
IHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlmICgh
aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgsIGJ5dGVM
ZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICB1aW50OF90KiBi
YXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbW1vdmUo
YmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQorYm9vbCBB
cnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRh
dGFCeXRlTGVuZ3RoLCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+
IGJ5dGVMZW5ndGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBi
eXRlTGVuZ3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0
ZU9mZnNldCkgewotICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93Cisg
ICAgaWYgKCFpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0
aCwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIGNv
bnN0IHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmFzZUFkZHJl
c3MoKSk7CiAgICAgbWVtbW92ZShkZXN0aW5hdGlvbiwgYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGFC
eXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJheUJ1ZmZlclZpZXc6
Onplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0
aCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3Ojp6ZXJvUmFuZ2VJbXBsKHNpemVfdCBieXRlT2Zmc2V0
LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxl
bmd0aCgpCi0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVMZW5ndGggPiBieXRlTGVu
Z3RoKCkKLSAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA8IGJ5dGVPZmZz
ZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAgIGlm
ICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBi
eXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAorCiAgICAg
dWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAg
ICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRBbmRM
ZW5ndGgoCi0gICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJheVNpemUsIHVuc2ln
bmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpCi17Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAg
ICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOwotICAgIGlmIChzdGFydCA8IDApCi0gICAgICAgIHN0
YXJ0ID0gMDsKLSAgICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kICs9IGFycmF5U2l6ZTsKLSAg
ICBpZiAoZW5kIDwgMCkKLSAgICAgICAgZW5kID0gMDsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGVuZCkgPiBhcnJheVNpemUpCi0gICAgICAgIGVuZCA9IGFycmF5U2l6ZTsKLSAgICBp
ZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIGVuZCA9IHN0YXJ0OwotICAgICpvZmZzZXQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOwotICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZW5kIC0gc3RhcnQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogdXNpbmcgSlND
OjpBcnJheUJ1ZmZlclZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BdG9taWNzT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0
b21pY3NPYmplY3QuY3BwCmluZGV4IDY4ODNhMTdjNDcyZC4uZDM2MjQ1MGEyZjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAtMTIw
LDggKzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2YWxpZGF0ZUF0b21pY0FjY2VzcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQXJyCiAgICAgICAgIGFjY2Vzc0luZGV4
ID0gYWNjZXNzSW5kZXhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgImFjY2Vzc0luZGV4Iik7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIH0KLSAgICAKLSAg
ICBBU1NFUlQodHlwZWRBcnJheVZpZXctPmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihJTlRfTUFYKSk7CisKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlwZWRBcnJheVZpZXctPmxl
bmd0aCgpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nlc3MuIl9zKTsKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAK
aW5kZXggZGNjMmY1MDY0YWYyLi5mYmM5ODQ3ZDJkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjAgKzMyLDIwIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1EYXRhVmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK0RhdGFWaWV3OjpE
YXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwg
c2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIp
LCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3
OjpjcmVhdGUoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBi
eXRlTGVuZ3RoKSk7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZShSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZm
ZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpOwogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBieXRlTGVuZ3Ro
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXggZGEw
NmI0YmIyMTQ0Li4zNDAyNjU0MTAzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0YVZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERh
dGFWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIFJl
ZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAgVHlw
ZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFs
T2JqZWN0KikgZmluYWw7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGdl
dCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxs
cHRyKQorICAgIFQgZ2V0KHNpemVfdCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBz
dGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAg
ICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
VCByZWFkKHVuc2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMg
PSBudWxscHRyKQorICAgIFQgcmVhZChzaXplX3QmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4s
IGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBUIHJlc3VsdCA9IHRoaXMt
PnRlbXBsYXRlIGdldDxUPihvZmZzZXQsIGxpdHRsZUVuZGlhbiwgc3RhdHVzKTsKICAgICAgICAg
aWYgKCFzdGF0dXMgfHwgKnN0YXR1cykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH0K
ICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9m
ZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIp
CisgICAgdm9pZCBzZXQoc2l6ZV90IG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4s
IGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAg
ICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC04
Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGF0YVZpZXcoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKKyAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKaW5kZXggYmU3ZTZjMDUzNGZhLi41YmU4MTY1ZjcyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDI0ICsz
MywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBjbGFz
cyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNy
ZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNy
ZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKHNpemVfdCBs
ZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0
YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVy
PiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShzaXplX3QgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
Jiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBS
ZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNU
eXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbGVuZ3RoKTsKICAgICAKICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSo+KGJh
c2VBZGRyZXNzKCkpOyB9CiAgICAgCi0gICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wgc2V0KEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogYXJyYXksIHNpemVfdCBvZmZzZXQpCiAgICAgewogICAg
ICAgICByZXR1cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzZXRSYW5nZShjb25zdCB0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIG9mZnNldCkKKyAg
ICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVf
dCBjb3VudCwgc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBzZXRSYW5nZUlt
cGwoCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwKQEAg
LTU4LDM5ICs1OCwzOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIHplcm9SYW5nZSh1
bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBjb3VudCkKKyAgICBib29sIHplcm9SYW5nZShzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgY291bnQpCiAgICAgewogICAgICAgICByZXR1cm4gemVyb1JhbmdlSW1w
bChvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksIGNvdW50ICogc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB6ZXJvRmls
bCgpIHsgemVyb1JhbmdlKDAsIGxlbmd0aCgpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNEZXRhY2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBieXRl
TGVuZ3RoKCkgLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgfQogCi0gICAg
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbShzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgewogICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0
aCgpKTsKICAgICAgICAgcmV0dXJuIGRhdGEoKVtpbmRleF07CiAgICAgfQogICAgIAotICAgIHZv
aWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXQo
c2l6ZV90IGluZGV4LCBkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAg
ICAgZGF0YSgpW2luZGV4XSA9IEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXROYXRpdmUodW5zaWduZWQgaW5kZXgsIHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUgdmFsdWUpIGNvbnN0CisgICAgdm9pZCBzZXROYXRpdmUoc2l6ZV90IGluZGV4LCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCB0aGlzLT5sZW5ndGgoKSk7CiAgICAg
ICAgIGRhdGEoKVtpbmRleF0gPSB2YWx1ZTsKICAgICB9CiAKLSAgICBib29sIGdldFJhbmdlKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0
KQorICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90
IGNvdW50LCBzaXplX3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGdldFJhbmdlSW1w
bCgKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpLApAQCAtOTgsMTgg
Kzk4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSk7CiAgICAgfQogCi0gICAgYm9vbCBjaGVja0luYm91bmREYXRhKHVuc2ln
bmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KSBjb25zdAorICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0
YShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY291bnQpIGNvbnN0CiAgICAgewotICAgICAgICB1bnNp
Z25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIChvZmZzZXQgPD0g
bGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA8PSBsZW5ndGgKLSAgICAgICAg
ICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBjb3VudCA+PSBv
ZmZzZXQpOworICAgICAgICByZXR1cm4gaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBj
b3VudCwgdGhpcy0+bGVuZ3RoKCkpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwotICAgIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7Ci0g
ICAgCiAgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsCiAgICAgewogICAg
ICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwpAQCAtMTE4LDcgKzExMSw3IEBAIHB1Ymxp
YzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFs
T2JqZWN0KikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBhZTViZGQ4YzZhMzEuLmYxYTc2ZGZkM2JiMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygKLVJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK1JlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQog
ICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogeworICAgIEFTU0VSVCgobGVuZ3Ro
IC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwogICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdCk7CkBAIC00Nyw3ICs0OCw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVu
c2lnCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAg
ICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQor
ICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCBzaXplX3QgbGVuZ3RoKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGFycmF5LCBsZW5ndGgpOwogICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdCk7CkBAIC01Niw3ICs1Nyw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKFdURk1v
dmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQpOwpAQCAtNjQsNyArNjUsNyBAQCBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIGxlbmd0
aCkKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTc0LDcgKzc1LDcgQEAgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlKAotICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJy
YXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4g
cmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04NSw3ICs4
Niw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAwLDcg
KzEwMSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkK
K0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXpl
X3QgbGVuZ3RoKQogewogICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC0xMDksNyArMTEwLDcgQEAg
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCkKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKSk7CkBAIC0xMTgsMjUgKzExOSw2IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRy
eUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgotR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Pgot
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgY2FsY3VsYXRl
T2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIHRoaXMtPmxlbmd0aCgpLCAmb2Zmc2V0LCAmbGVu
Z3RoKTsKLSAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsK
LSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0
b3I6OlR5cGU+KCpidWZmZXIsIGJ5dGVPZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAg
cmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIEpTQXJyYXlCdWZmZXJWaWV3KiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OndyYXAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggODllYWViZDNjMmNjLi4z
ZDhlNDc0NTA2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpT
QXJyYXlCdWZmZXJWaWV3OjpzX2luZm8gPSB7CiB9OwogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpCisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKICAgICA6IG1fc3RydWN0dXJl
KHN0cnVjdHVyZSkKICAgICAsIG1fdmVjdG9yKHZlY3RvciwgbGVuZ3RoKQogICAgICwgbV9sZW5n
dGgobGVuZ3RoKQpAQCAtNTQsNyArNTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0
aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6
OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0gICAgVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6
ZSwKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoLCB1bnNp
Z25lZCBlbGVtZW50U2l6ZSwKICAgICBJbml0aWFsaXphdGlvbk1vZGUgbW9kZSkKICAgICA6IG1f
c3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC04MSwxOCArODEs
MTggQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBEb24ndCBhbGxvdyBh
IHR5cGVkIGFycmF5IHRvIHVzZSBtb3JlIHRoYW4gMkdCLgotICAgIGlmIChsZW5ndGggPiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkgLyBlbGVtZW50U2l6ZSkKKyAgICBDaGVja2VkU2l6
ZSBzaXplID0gbGVuZ3RoOworICAgIHNpemUgKj0gZWxlbWVudFNpemU7CisgICAgaWYgKHNpemUu
aGFzT3ZlcmZsb3dlZCgpIHx8IHNpemUgPiBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudFNpemUpOwotICAgIG1fdmVjdG9yID0g
VmVjdG9yVHlwZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUp
LCBsZW5ndGgpOworCisgICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdpZ2FjYWdlOjp0cnlNYWxs
b2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZS52YWx1ZSgpKSwgbGVuZ3RoKTsKICAgICBpZiAo
IW1fdmVjdG9yKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpCiAg
ICAgICAgIG1lbXNldCh2ZWN0b3IoKSwgMCwgc2l6ZSk7CiAgICAgCi0gICAgdm0uaGVhcC5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVt
ZW50U2l6ZSk7CisgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplLnZh
bHVlKCkpOwogICAgIAogICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIG1fbW9kZSA9
IE92ZXJzaXplVHlwZWRBcnJheTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1
ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAg
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5
QnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBz
aXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVj
dHVyZSkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVk
QXJyYXkpCkBAIC0xMTQsNyArMTE0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZykKKyAgICBzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBtX3N0cnVjdHVyZShz
dHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX21vZGUoRGF0YVZpZXdN
b2RlKQpAQCAtMjM4LDkgKzIzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBlbGVtZW50U2l6
ZShKU1R5cGUgdHlwZSkKICAgICByZXR1cm4gRWxlbWVudFNpemVEYXRhW3R5cGUgLSBJbnQ4QXJy
YXlUeXBlXTsKIH0KIAotdW5zaWduZWQgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBj
b25zdAorc2l6ZV90IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKIHsKKyNp
ZiBBU1NFUlRfRU5BQkxFRAorICAgIENoZWNrZWQ8c2l6ZV90PiByZXN1bHQgPSBsZW5ndGgoKTsK
KyAgICByZXN1bHQgKj0gZWxlbWVudFNpemUodHlwZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0LnZh
bHVlKCk7CisjZWxzZQorICAgIC8vIFRoZSBhYnNlbmNlIG9mIG92ZXJmbG93IGlzIGFscmVhZHkg
Y2hlY2tlZCBpbiB0aGUgY29uc3RydWN0b3IsIHNvIEkgb25seSBhZGQgdGhlIGV4dHJhIHNhbml0
eSBjaGVjayB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQuCiAgICAgcmV0dXJuIGxlbmd0aCgpICog
ZWxlbWVudFNpemUodHlwZSgpKTsKKyNlbmRpZgogfQogCiBBcnJheUJ1ZmZlciogSlNBcnJheUJ1
ZmZlclZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQpAQCAtMjY3LDcgKzI3NCw3IEBAIEFy
cmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBidWZmZXI7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IHRoaXMt
PmJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IHRoaXMtPmJ5dGVMZW5ndGgo
KTsKIAogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBGYXN0VHlwZWRBcnJheTogewpA
QCAtMzE1LDggKzMyMiw4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJW
aWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3Nz
aWJseVNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOwotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIHNpemVfdCBieXRlT2Zmc2V0
ID0gdGhpcy0+Ynl0ZU9mZnNldCgpOworICAgIHNpemVfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgo
KTsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBGQUNUT1JZKHR5cGUpIFwKICAgICBj
YXNlIHR5cGUgIyMgQXJyYXlUeXBlOiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCBkZDAxZjdmODJhNTMuLjE0ZmE1YmJhNWEw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
ZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZmFzdFNp
emVMaW1pdCA9IDEwMDA7CiAgICAgdXNpbmcgVmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKIAogICAgIHN0YXRpYyB2b2lk
KiBudWxsVmVjdG9yUHRyKCkKQEAgLTExNywxMCArMTE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG51bGwucmF3Qml0cygpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgc2l6ZV90IHNp
emVPZih1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQorICAgIHN0YXRpYyBz
aXplX3Qgc2l6ZU9mKHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBlbGVtZW50U2l6
ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKQotICAgICAgICAgICAgJiB+KHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgLSAxKTsKKyAgICAgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxl
bmd0aDsKKyAgICAgICAgcmVzdWx0ICo9IGVsZW1lbnRTaXplOworICAgICAgICByZXN1bHQgKz0g
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDE7CisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUo
KSAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAtIDEpOwogICAgIH0KIAogICAgIHN0YXRpYyBz
aXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQpAQCAt
MTM2LDI1ICsxMzgsMjUgQEAgcHJvdGVjdGVkOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBJ
bml0aWFsaXphdGlvbk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxpemUgfTsKICAgICAgICAg
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRleHQoVk0mLCBTdHJ1
Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLCBJbml0aWFsaXph
dGlvbk1vZGUgPSBaZXJvRmlsbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVj
dGlvbkNvbnRleHQoVk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBlbGVt
ZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOwogICAgICAgICAKICAgICAg
ICAgLy8gVGhpcyBpcyBvbmx5IGZvciBjb25zdHJ1Y3RpbmcgZmFzdCB0eXBlZCBhcnJheXMuIEl0
J3MgdXNlZCBieSB0aGUgSklUJ3Mgc2xvdyBwYXRoLgotICAgICAgICBDb25zdHJ1Y3Rpb25Db250
ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKKyAgICAgICAg
Q29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0
b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29u
dGV4dCgKICAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYm
LAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgCiAg
ICAgICAgIGVudW0gRGF0YVZpZXdUYWcgeyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rp
b25Db250ZXh0KAogICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYm
LAotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRh
Vmlld1RhZyk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCwg
RGF0YVZpZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICAgdm9pZCogdmVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQot
ICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAg
ICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICAgICAg
VHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICBC
dXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5OyB9CiAgICAg
ICAgIApAQCAtMTYyLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBt
X3N0cnVjdHVyZTsKICAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENhZ2VkUHRyPEdpZ2FjYWdl
OjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsKICAgICAgICAgVmVjdG9yVHlwZSBtX3Zl
Y3RvcjsKLSAgICAgICAgdWludDMyX3QgbV9sZW5ndGg7CisgICAgICAgIHNpemVfdCBtX2xlbmd0
aDsKICAgICAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgICBCdXR0ZXJmbHkqIG1f
YnV0dGVyZmx5OwogICAgIH07CkBAIC0xOTAsMTEgKzE5MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0aCgp
KTsgfQogICAgIHZvaWQqIHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV92ZWN0b3IuZ2V0VW5zYWZlKCk7IH0KICAgICAKLSAgICBpbmxpbmUgdW5zaWduZWQgYnl0
ZU9mZnNldCgpOwotICAgIGlubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0
Q29uY3VycmVudGx5KCk7CisgICAgaW5saW5lIHNpemVfdCBieXRlT2Zmc2V0KCk7CisgICAgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAKLSAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OwogCiAgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKICAgICAKQEAgLTIxOSw3ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsKIAogICAgIFZlY3Rv
clB0ciBtX3ZlY3RvcjsKLSAgICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICBzaXplX3QgbV9sZW5n
dGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRl
eCAxZDA3MmI3MWFjYjcuLmQ4NWIzMjgzMDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKQEAgLTk5LDcg
Kzk5LDcgQEAgaW5saW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJ
bXBsKCkKICAgICBwdHJkaWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhf
dCo+KHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGJ1ZmZlci0+ZGF0YSgpKTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkZWx0YSk7CisgICAgc2l6ZV90IHJlc3VsdCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
ZGVsdGEpOwogICAgIGlmIChyZXF1ZXN0ZXIgPT0gTXV0YXRvcikKICAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSA9PSBkZWx0YSk7CiAgICAgZWxzZSB7CkBAIC0x
MTAsMTQgKzExMCwxNCBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0
ZU9mZnNldEltcGwoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBK
U0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCitpbmxpbmUgc2l6ZV90IEpTQXJyYXlCdWZm
ZXJWaWV3OjpieXRlT2Zmc2V0KCkKIHsKLSAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRv
ciwgdW5zaWduZWQ+KCk7CisgICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHNpemVf
dD4oKTsKIH0KIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQogewotICAgIHJl
dHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPj4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+PigpOwogfQogCiBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmll
dz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggMDg2N2RjYmVh
ZDgxLi5lOGE0ZTdhNjIzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9ubW92YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKQEAgLTI5OCw2ICsyOTksNyBAQCBwdWJs
aWM6CiAgICAgaW50MzJfdCB0b0ludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWlu
dDMyX3QgdG9VSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b0lu
ZGV4KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogZXJyb3JOYW1lKSBjb25zdDsKKyAgICBz
aXplX3QgdG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJv
ck5hbWUpIGNvbnN0OwogICAgIGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKaW5kZXggZjdhOWU3MGVkNmUwLi44ZjVjMDcxOTg4NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtNjks
MTQgKzY5LDQ3IEBAIGlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b0luZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGVycm9yCiAgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpIHsKKworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMy
KCk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJv
ck5hbWUsICIgdG9vIGxhcmdlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0M6OnRvSW50MzIoZCkpOworfQorCitpbmxpbmUg
c2l6ZV90IEpTVmFsdWU6OnRvVHlwZWRBcnJheUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKKyAgICBpZiAoZCA8PSAtMSkgeworICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgY2Fubm90IGJlIG5lZ2F0aXZlIikpKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0
dXJuIGFzSW50MzIoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQz
MihkKSk7CisKKyAgICBpZiAoZCA+IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgdG9v
IGxhcmdlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gQWxsIG9mIHRo
aXMgbW9uc3Ryb3NpdHkgaXMganVzdCB0byBnaXZlIHRoZSBjb3JyZWN0IHJlc3VsdCBvbiAxPDwz
Mi4KKyAgICBzaXplX3Qgb3V0cHV0T2Zmc2V0ID0gMDsKKyAgICBkb3VibGUgaW5wdXRPZmZzZXQg
PSAwOworICAgIHNpemVfdCBpbnQzMk1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpOworICAgIGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnQzMk1heCkpIHsKKyAg
ICAgICAgb3V0cHV0T2Zmc2V0ID0gaW50MzJNYXg7CisgICAgICAgIGlucHV0T2Zmc2V0ID0gaW50
MzJNYXg7CisgICAgfQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3V0cHV0T2Zmc2V0
ICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNDOjp0b0ludDMy
KGQgLSBpbnB1dE9mZnNldCkpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNz
ZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmNwcAppbmRleCA2ZmFiNDY1ZGQzYjkuLmRmZDZhNTExZDE5NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3
IEBAIEpTRGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBj
b250ZXh0LCBBcnJheUJ1ZmZlciogYnVmZmVyCiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNy
ZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3Qg
Ynl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzAsMjUgKzcwLDI1IEBAIEpT
RGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1K
U0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCitKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGVV
bmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6ZV90KQogewogICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1K
U0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCitib29s
IEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNPYmplY3QqLCBzaXpl
X3QsIHNpemVfdCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCwgSlNWYWx1ZSkKK2Jvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoSlNHbG9iYWxP
YmplY3QqLCBzaXplX3QsIEpTVmFsdWUpCiB7CiAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlldy5oCmluZGV4IDJjNzg1ZTQ3NjExYS4uYTVlNzhjNDY5YjM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMTUgKzQ2LDE0IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyog
Y3JlYXRlKAotICAgICAgICBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxl
bmd0aCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIAog
ICAgIC8vIER1bW15IG1ldGhvZHMsIHdoaWNoIGRvbid0IGFjdHVhbGx5IHdvcms7IHRoZXNlIGFy
ZSBqdXN0IGluIHBsYWNlIHRvCiAgICAgLy8gcGxhY2F0ZSBzb21lIHRlbXBsYXRlIHNwZWNpYWxp
emF0aW9uIHdlIGRvIGVsc2V3aGVyZS4KLSAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlVW5p
bml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIHNl
dEluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgIHN0YXRpYyBK
U0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgc2V0KEpTR2xv
YmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHNpemVfdCwgSlNWYWx1ZSk7CiAgICAg
CiAgICAgQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KICAgICBBcnJheUJ1ZmZlciogdW5zaGFyZWRCdWZmZXIoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAppbmRleCA5NDkwNjI0N2VhNjUuLmUwZmJjNTJmODc1OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
MzYsMTEgKzEzNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNl
aXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGds
b2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAg
ICAgYm9vbCBsaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4g
MSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7CiAgICAgICAgIGxpdHRsZUVu
ZGlhbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKGRhdGFW
aWV3LT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVk
IGZyb20gdGhlIHZpZXciX3MpOwogCi0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3
LT5sZW5ndGgoKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsK
ICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVu
Z3RoIC0gZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOwogCkBAIC0xODIsNyAr
MTgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIWRhdGFWaWV3KQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2Yg
RGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CiAgICAgCi0gICAgdW5zaWdu
ZWQgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmpl
Y3QsICJieXRlT2Zmc2V0Iik7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgY29uc3QgdW5z
aWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CkBAIC0xOTUs
NyArMTk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZh
bHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpID49IDMpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgyKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDQsNyArMjA0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgc2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlp
bmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CiAKLSAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOworICAgIHNpemVfdCBi
eXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5
dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2Yg
Ym91bmRzIGFjY2VzcyJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGMyMmM1NWEwZDgxZC4uZWEx
ZWY5YzEzZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJK
U0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJU
b05hdGl2ZUZyb21WYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTUsMTAgKzU2LDEwIEBAIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IENsYXNzSW5mbyogZ2V0QmlnVWludDY0QXJyYXlDbGFzc0luZm8oKTsKIC8vICAgICBT
dHJ1Y3R1cmUqIFMgICAgIC8vIGZyb20gSlNDZWxsCiAvLyAgICAgQnV0dGVyZmx5KiBCICAgICAv
LyBmcm9tIEpTT2JqZWN0CiAvLyAgICAgRWxlbWVudFR5cGUqIFYKLS8vICAgICB1aW50MzJfdCBM
CisvLyAgICAgc2l6ZV90IEwKIC8vICAgICBUeXBlZEFycmF5TW9kZSBNCiAvLwotLy8gVGhlc2Ug
ZmllbGRzIHRha2UgdXAgYSB0b3RhbCBvZiBmb3VyIHBvaW50ZXItd2lkdGggd29yZHMuIEZJWE1F
OiBNYWtlCisvLyBUaGVzZSBmaWVsZHMgdGFrZSB1cCBhIHRvdGFsIG9mIGZpdmUgcG9pbnRlci13
aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKIC8vIGl0IHRha2UgbGVzcyB3b3JkcyEKIC8vCiAvLyBC
IGlzIHVzdWFsbHkgdW51c2VkIGJ1dCBtYXkgc3RvcmVkIHNvbWUgYWRkaXRpb25hbCAib3ZlcmZs
b3ciIGRhdGEgZm9yCkBAIC0xMDMsMTQgKzEwNCwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwogCi0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7Ci0gICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgIHN0YXRpYyBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgc3RhdGljIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8dHlw
ZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgc3RhdGljIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQdHI8
dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCi0gICAgdW5zaWduZWQg
Ynl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpOyB9CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsgfQogICAgIHNpemVfdCBi
eXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwgc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsgfQogICAgIAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIHR5cGVkVmVjdG9yKCkgY29uc3QKQEAgLTEyMiw0NiArMTIzLDQ2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4odmVjdG9y
KCkpOwogICAgIH0KIAotICAgIGJvb2wgaW5Cb3VuZHModW5zaWduZWQgaSkgY29uc3QKKyAgICBi
b29sIGluQm91bmRzKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBt
X2xlbmd0aDsKICAgICB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBtZWFudCB0byBtYXRj
aCBpbmRleGVkIGFjY2VzcyBtZXRob2RzIHRoYXQgSlNPYmplY3QKICAgICAvLyBzdXBwb3J0cyAt
IGhlbmNlIHRoZSBzbGlnaHQgcmVkdW5kYW5jeS4KLSAgICBib29sIGNhbkdldEluZGV4UXVpY2ts
eSh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHNpemVfdCBp
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGluQm91bmRzKGkpICYmIEFkYXB0b3I6OmNh
bkNvbnZlcnRUb0pTUXVpY2tseTsKICAgICB9Ci0gICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHko
dW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKKyAgICBib29sIGNhblNldEluZGV4UXVp
Y2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBpIDwgbV9sZW5ndGggJiYgdmFsdWUuaXNOdW1iZXIoKSAmJiBBZGFwdG9yOjpjYW5Db252ZXJ0
VG9KU1F1aWNrbHk7CiAgICAgfQogICAgIAotICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0
SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZSh1bnNpZ25lZCBpKSBjb25zdAorICAgIHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShzaXplX3QgaSkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICByZXR1cm4g
dHlwZWRWZWN0b3IoKVtpXTsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSkgY29uc3QKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseShzaXplX3Qg
aSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b0pTVmFsdWUobnVsbHB0
ciwgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpKSk7CiAgICAgfQogICAgIAotICAgIHZv
aWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZSh1bnNpZ25lZCBpLCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIHZhbHVlKQorICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShz
aXplX3QgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChpIDwgbV9sZW5ndGgpOwogICAgICAgICB0eXBlZFZlY3RvcigpW2ldID0gdmFsdWU7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUg
dmFsdWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUp
CiAgICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICBzZXRJ
bmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKGksIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KHZh
bHVlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1ZhbHVlKQorICAgIGJvb2wgc2V0SW5k
ZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IGksIEpTVmFsdWUganNWYWx1
ZSkKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE3Niw5ICsxNzcsMTUg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWxl
bWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRv
cj4oZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0Fk
YXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0
b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7CisgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lv
bihKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJj
aW9uPEFkYXB0b3I+KGpzVmFsdWUpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVu
dFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpz
VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29l
cmNpb248QWRhcHRvcj4oanNWYWx1ZSk7CisgICAgfQogCiAgICAgdm9pZCBzb3J0KCkKICAgICB7
CkBAIC0xOTgsMjEgKzIwNSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBi
b29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAg
ICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVj
ayBvdmVyZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgbGVuZ3RoID49IG9mZnNldDsKKyAg
ICAgICAgcmV0dXJuIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKG9mZnNldCwgbGVuZ3RoLCBtX2xl
bmd0aCk7CiAgICAgfQogICAgIAogICAgIC8vIExpa2UgY2FuU2V0UXVpY2tseSwgZXhjZXB0OiBp
ZiBpdCByZXR1cm5zIGZhbHNlLCBpdCB3aWxsIHRocm93IHRoZQogICAgIC8vIGFwcHJvcHJpYXRl
IGV4Y2VwdGlvbi4KLSAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpT
R2xvYmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCByZXR1
cm5zIGZhbHNlCiAgICAgLy8gdGhlbiBpdCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4K
LSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3Qq
LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9
IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOworICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0Kiwg
c2l6ZV90IG9mZnNldCwgSlNPYmplY3QqLCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVu
Z3RoLCBDb3B5VHlwZSA9IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOwogICAgIAogICAgIFJlZlB0
cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsK
ICAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJbXBs
KCk7CkBAIC0zMTgsOCArMzIyLDggQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
c3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9yLgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4KICAgICBib29sIHNldFdpdGhTcGVj
aWZpY1R5cGUoCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0b3I+KiwKLSAgICAgICAgdW5zaWduZWQgb2Jq
ZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqLCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxPdGhlckFkYXB0
b3I+KiwKKyAgICAgICAgc2l6ZV90IG9iamVjdE9mZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5
cGUpOwogCiAgICAgLy8gVGhlIEVDTUEgNiBzcGVjIHN0YXRlcyB0aGF0IGZsb2F0aW5nIHBvaW50
IFR5cGVkIEFycmF5cyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIG9yZGVyaW5nOgogICAgIC8v
CkBAIC0zNDksNyArMzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1cmlmeUFycmF5KCkKICAg
ICB7CiAgICAgICAgIEVsZW1lbnRUeXBlKiBhcnJheSA9IHR5cGVkVmVjdG9yKCk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBhcnJheVtpXSA9IHB1
cmlmeU5hTihhcnJheVtpXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3RvcklubGluZXMuaAppbmRleCBkMjU4NDA2N2U4M2YuLjMzNmYxYWVlM2Y3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xNDMs
NyArMTQzLDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNvbnN0cnVjdEN1c3RvbUFycmF5QnVm
ZmVySWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNpZ25lZCBvZmZz
ZXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aE9wdCkKK2lubGluZSBKU09iamVjdCog
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmly
c3RBcmd1bWVudCwgc2l6ZV90IG9mZnNldCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aE9w
dCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIGlubGluZSBKU09i
amVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2Jh
bE9iamVjdCogZ2xvCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0g
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSAwOwog
ICAgICAgICBpZiAobGVuZ3RoT3B0KQogICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZh
bHVlKCk7CiAgICAgICAgIGVsc2UgewpAQCAtMTgyLDcgKzE4Miw3IEBAIGlubGluZSBKU09iamVj
dCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9i
amVjdCogZ2xvCiAgICAgLy8gLSBBIHByaW1pdGl2ZS4gVGhpcyBjcmVhdGVzIGEgbmV3IHR5cGVk
IGFycmF5IG9mIHRoYXQgbGVuZ3RoIGFuZCB6ZXJvLWluaXRpYWxpemVzIGl0LgogCiAgICAgaWYg
KEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGZpcnN0VmFs
dWUpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsK
ICAgICAgICAgSlNBcnJheUJ1ZmZlciogY3VzdG9tQnVmZmVyID0gbnVsbHB0cjsKIAogICAgICAg
ICBpZiAoaXNUeXBlZFZpZXcob2JqZWN0LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFn
ZVR5cGUpKSB7CkBAIC0yNTAsNyArMjUwLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBmaXJz
dFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7CisgICAgc2l6ZV90IGxlbmd0
aCA9IGZpcnN0VmFsdWUudG9UeXBlZEFycmF5SW5kZXgoZ2xvYmFsT2JqZWN0LCAibGVuZ3RoIik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgbGVuZ3RoKSk7CiB9CkBAIC0yNzUsOCArMjc1LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0
KgogICAgIH0KIAogICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CisgICAgc2l6ZV90IG9mZnNldCA9IDA7
CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGZpcnN0VmFsdWUpICYmIGFyZ0Nv
dW50ID4gMSkgewogICAgICAgICBvZmZzZXQgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4NSw3ICsyODUsNyBA
QCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICAvLyBJZiB0aGUgbGVuZ3RoIHZh
bHVlIGlzIHByZXNlbnQgYnV0IHVuZGVmaW5lZCwgdHJlYXQgaXQgYXMgbWlzc2luZy4KICAgICAg
ICAgICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDIpOwogICAgICAgICAgICAgaWYgKCFsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9JbmRleChnbG9iYWxPYmplY3QsIFZp
ZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldyA/ICJieXRlTGVu
Z3RoIiA6ICJsZW5ndGgiKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50
b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsIFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3Jh
Z2VUeXBlID09IFR5cGVEYXRhVmlldyA/ICJieXRlTGVuZ3RoIiA6ICJsZW5ndGgiKTsKICAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRl
eCA0NTAyMzg3OTJkMTAuLmEzZGRjMWY4MzZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
IgogI2luY2x1ZGUgIlR5cGVFcnJvci5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlzLmgiCisjaW5j
bHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDcsNyArNDgsNyBA
QCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5z
aWduZWQgbGVuZ3RoKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02
NSw3ICs2Niw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmFzdFZlY3RvcigKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoLCB2
b2lkKiB2ZWN0b3IpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHN0
cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwpAQCAtNzgsNyArNzksNyBAQCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZVdpdGhGYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpj
cmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCitKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTk5LDE3ICsxMDAsMTcg
QEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXQKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKLSAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBzaXplX3Qgc2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKKyAgICBzaXplX3QgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7Ci0g
ICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpidWZmZXIsIGJ5
dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKKyAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVy
aWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoLCBlbGVtZW50U2l6
ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGlmICghQXJyYXlCdWZmZXJW
aWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemUpKSB7CisgICAg
aWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNl
dCwgZWxlbWVudFNpemUpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQnl0ZSBvZmZzZXQgaXMgbm90
IGFsaWduZWQiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE0NSw3ICsx
NDYsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTU5LDggKzE2MCw4
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2Uo
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJBZGFw
dG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNp
ZmljVHlwZSgKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZz
ZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qIG90aGVyLAotICAgIHVu
c2lnbmVkIG90aGVyT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCisgICAgc2l6ZV90IG90aGVyT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC0yMTgsNyArMjE5LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgfHwgZXhpc3RpbmdCdWZmZXIoKSAhPSBvdGhl
ci0+ZXhpc3RpbmdCdWZmZXIoKQogICAgICAgICB8fCAoZWxlbWVudFNpemUgPT0gb3RoZXJFbGVt
ZW50U2l6ZSAmJiB2ZWN0b3IoKSA8PSBvdGhlci0+dmVjdG9yKCkpCiAgICAgICAgIHx8IHR5cGUg
PT0gQ29weVR5cGU6OkxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKAogICAg
ICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRv
PEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+Z2V0SW5kZXhRdWlja2x5QXNO
YXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMjgsNyArMjI5LDcgQEAgYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKIAog
ICAgIC8vIE5vdyB3ZSBlaXRoZXIgaGF2ZSAoMkIpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0
byBjb3ZlciAoMkIpLgogICAgIGlmIChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplKSB7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KSB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlU
b05hdGl2ZVZhbHVlKAogICAgICAgICAgICAgICAgIG9mZnNldCArIGksIE90aGVyQWRhcHRvcjo6
dGVtcGxhdGUgY29udmVydFRvPEFkYXB0b3I+KAogICAgICAgICAgICAgICAgICAgICBvdGhlci0+
Z2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpICsgb3RoZXJPZmZzZXQpKSk7CkBAIC0yMzgs
MTEgKzIzOSwxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRX
aXRoU3BlY2lmaWNUeXBlKAogICAgIAogICAgIC8vIEZhaWw6IHdlIG5lZWQgYW4gaW50ZXJtZWRp
YXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNlICgzKSkuCiAgICAgVmVjdG9yPHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IGxlbmd0aDsgaS0tOykgeworICAgIGZvciAoc2l6ZV90IGkgPSBsZW5ndGg7IGkt
LTspIHsKICAgICAgICAgdHJhbnNmZXJCdWZmZXJbaV0gPSBPdGhlckFkYXB0b3I6OnRlbXBsYXRl
IGNvbnZlcnRUbzxBZGFwdG9yPigKICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSBsZW5ndGg7IGktLTspCisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykKICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1
ZmZlcltpXSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBl
KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c2V0KAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVu
c2lnbmVkIG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIENvcHlUeXBlIHR5cGUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgc2l6ZV90IG9mZnNldCwgSlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG9iamVjdE9m
ZnNldCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjaSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKICAg
ICBpZiAoY2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBBZGFwdG9yOjp0eXBlVmFsdWUpIHsK
LSAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVtY3B5IHNpbmNl
IHdlJ3JlIHRoZSBzYW1lIHR5cGUuCisgICAgICAgIC8vIFRoZSBzdXBlciBmYXN0IGNhc2U6IHdl
IGNhbiBqdXN0IG1lbW1vdmUgc2luY2Ugd2UncmUgdGhlIHNhbWUgdHlwZS4KICAgICAgICAgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIG90aGVyID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Kj4ob2JqZWN0KTsKICAgICAgICAgbGVuZ3RoID0gc3RkOjptaW4obGVuZ3RoLCBvdGhlci0+
bGVuZ3RoKCkpOwogICAgICAgICAKQEAgLTMxMiw5ICszMTMsMTEgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2Ugd29uJ3Qg
ZXZlciBjYWxsIG9iamVjdC0+Z2V0KCkgd2l0aCBhbiBpbmRleCBvZiBVSU5UX01BWCBvciBtb3Jl
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzU3VtU21hbGxlclRoYW5PckVxdWFsKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihsZW5ndGgpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2JqZWN0T2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkpKTsKICAgICAgICAgLy8gV2UgY291bGQgb3B0aW1pemUgdGhpcyBjYXNlLiBCdXQgcmln
aHQgbm93LCB3ZSBkb24ndC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCBpICsgb2JqZWN0T2Zmc2V0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0
KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkgKyBvYmplY3RPZmZzZXQpKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IHNldEluZGV4KGdsb2JhbE9iamVjdCwgb2Zmc2V0ICsgaSwgdmFs
dWUpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwg
IXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXgg
YjYzYjY4YTI1YjQ1Li4xOTg2MzkwZDhiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaApAQCAtNjAsNiArNjAsNyBAQCBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0
aW9uKEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNzIEFycmF5
UHJvZmlsZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIElu
dGVybmFsRnVuY3Rpb247CkBAIC0yMTEsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
CiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBp
ZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAg
ICBzZXRJbmRleFF1aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICBpZiAo
dHJ5U2V0SW5kZXhRdWlja2x5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSkt
PnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yODksNyArMjg4LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7
Ci0gICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25z
dDsKKyAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEFy
cmF5UHJvZmlsZSogPSBudWxscHRyKSBjb25zdDsKICAgICAKICAgICBib29sIGNhbkdldEluZGV4
UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTM0NSwxNCArMzQ0LDE1IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgICAgIAotICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0
CisKKyAgICAvLyBVc2VzIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0IHRoZSBt
X21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgSlNWYWx1ZSB0cnlH
ZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBu
dWxscHRyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkg
PSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewog
ICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGlmIChj
YW5HZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpKQotICAgICAgICAgICAgICAgIHJldHVy
biBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGkpOworICAgICAgICAgICAgICAgIHJldHVy
biBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIGFycmF5UHJvZmlsZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgog
ICAgICAgICAgICAgYnJlYWs7CkBAIC00MTEsMzUgKzQxMSw3MyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0LCBpKTsKICAgICB9CiAKLSAgICBib29sIGNhblNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUpIGNvbnN0OwogICAgIHZv
aWQgc2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSk7Ci0gICAg
ICAgIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFs
dWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUo
Vk0mLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRpY2F0
ZSBzdWNjZXNzCisgICAgLy8gVXNlIHRoZSAob3B0aW9uYWwpIGFycmF5IHByb2ZpbGUgdG8gc2V0
IHRoZSBtX21heUJlTGFyZ2VUeXBlZEFycmF5IGJpdCB3aGVuIHJlbGV2YW50CisgICAgYm9vbCB0
cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlLCBBcnJheVBy
b2ZpbGUqKTsKKyAgICBib29sIHRyeVNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGks
IEpTVmFsdWUgdiwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsKICAgICAg
ICAgc3dpdGNoIChpbmRleGluZ01vZGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRF
WElOR19UWVBFUzoKLSAgICAgICAgICAgIHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBl
ZEFycmF5KGksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnlTZXRJbmRleFF1aWNrbHlG
b3JUeXBlZEFycmF5KGksIHYsIGFycmF5UHJvZmlsZSk7CiAgICAgICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
Y2FzZSBBTExfV1JJVEFCTEVfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGNhc2UgQUxM
X1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFC
TEVfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVf
SU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKCF2LmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91
YmxlT3JDb250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfQ09OVElHVU9VU19J
TkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBidXR0
ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYp
OworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAg
ICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCB2KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgICAgIGNhc2UgQUxMX1dSSVRBQkxFX0RPVUJMRV9JTkRFWElOR19U
WVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNOdW1i
ZXIoKSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBl
cmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSB2LmFzTnVtYmVyKCk7
CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBjb252
ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSB2YWx1ZTsKKyAgICAg
ICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCisgICAgICAgICAgICAg
ICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaSArIDEpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6
CiAgICAgICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJu
IGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUodm0s
IGksIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgTm9uQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlOgotICAgICAgICAgICAgcmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5U3RvcmFn
ZSgpLT52ZWN0b3JMZW5ndGgoKQotICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5LT5hcnJh
eVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBp
ZiAoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICBpZiAoaSA+PSBi
dXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSB8fCAhYnV0dGVyZmx5LT5h
cnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCisKICAgICB2b2lkIHNl
dEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7CiAgICAg
ICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDhmZmM1Zjkz
ODIyZi4uNzYwYTlhOWUyZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaApAQCAtNDY1LDIxICs0NjUsMTUgQEAgaW5saW5lIGJvb2wgSlNP
YmplY3Q6OmNhbkdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29uc3QK
ICAgICB9CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JU
eXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0CitpbmxpbmUgSlNWYWx1
ZSBKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpLCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHR5cGUoKSkgewot
I2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZUEUobmFtZSkgXAotICAgIGNhc2UgbmFtZSAjIyBB
cnJheVR5cGUgOlwKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKUyAjIyBuYW1lICMjIEFy
cmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOwotICAgICAgICBGT1Jf
RUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJB
WV9UWVBFKQotI3VuZGVmIENBU0VfVFlQRURfQVJSQVlfVFlQRQotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyAgICBpZiAoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggJiYg
YXJyYXlQcm9maWxlKQorICAgICAgICBhcnJheVByb2ZpbGUtPnNldE1heUJlTGFyZ2VUeXBlZEFy
cmF5KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhcnJheVByb2ZpbGUpOworI2VuZGlmCiAK
LWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVu
c2lnbmVkIGkpIGNvbnN0Ci17CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgQ0FTRV9U
WVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKICAgICBjYXNlIG5hbWUgIyMgQXJyYXlUeXBlIDoge1wK
QEAgLTUxMiw3ICs1MDYsNTAgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVpY2ts
eUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIH0KLSAgICAKKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEluZGV4UXVpY2ts
eUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUg
dikKK3sKKyAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSB0aGlzLT5idXR0ZXJmbHkoKS0+YXJy
YXlTdG9yYWdlKCk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB4ID0gc3RvcmFnZS0+bV92
ZWN0b3JbaV07CisgICAgSlNWYWx1ZSBvbGQgPSB4LmdldCgpOworICAgIHguc2V0KHZtLCB0aGlz
LCB2KTsKKyAgICBpZiAoIW9sZCkgeworICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5W
ZWN0b3I7CisgICAgICAgIGlmIChpID49IHN0b3JhZ2UtPmxlbmd0aCgpKQorICAgICAgICAgICAg
c3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAxKTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIEpTT2Jq
ZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUg
diwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCit7CisgICAgc3dpdGNoICh0eXBlKCkpIHsK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorI2RlZmluZSBVUERBVEVfQVJSQVlfUFJPRklM
RShpLCBhcnJheVByb2ZpbGUpIGRvIHsgXAorICAgICAgICBpZiAoKGkgPiBBcnJheVByb2ZpbGU6
OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoKSAmJiBhcnJheVByb2ZpbGUpXAorICAgICAgICAg
ICAgYXJyYXlQcm9maWxlLT5zZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpO1wKKyAgICB9IHdoaWxl
IChmYWxzZSkKKyNlbHNlCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJv
ZmlsZSkgZG8geyBcCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7XAorICAgIH0gd2hp
bGUgKGZhbHNlKQorI2VuZGlmCisjZGVmaW5lIENBU0VfVFlQRURfQVJSQVlfVFlQRShuYW1lKSBc
CisgICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6IHsgXAorICAgICAgICBhdXRvKiB0eXBlZEFy
cmF5ID0ganNDYXN0PEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcyk7XAorICAgICAgICBpZiAo
IXR5cGVkQXJyYXktPmNhblNldEluZGV4UXVpY2tseShpLCB2KSlcCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7XAorICAgICAgICB0eXBlZEFycmF5LT5zZXRJbmRleFF1aWNrbHkoaSwgdik7XAor
ICAgICAgICBVUERBVEVfQVJSQVlfUFJPRklMRShpLCBhcnJheVByb2ZpbGUpO1wKKyAgICAgICAg
cmV0dXJuIHRydWU7XAorICAgIH0KKyAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xV
RElOR19EQVRBX1ZJRVcoQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKQorI3VuZGVmIENBU0VfVFlQRURf
QVJSQVlfVFlQRQorI3VuZGVmIFVQREFURV9BUlJBWV9QUk9GSUxFCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnZh
bGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGNlNzMwZjNiZjk2NS4uMDkxOWU3MjE4
NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC04
OTgsOCArODk4LDggQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdpdGhJ
bmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBpZiAoYmFzZS0+
aXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7
Ci0gICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpbmRleCkpCi0gICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGluZGV4
KSk7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IG9iamVjdC0+dHJ5R2V0SW5kZXhRdWlj
a2x5KGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
ICAgICB9CiAKICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAmJiBhc1N0cmluZyhiYXNlKS0+Y2Fu
R2V0SW5kZXgoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBhZ2VDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3Vu
dC5oCmluZGV4IGU4ZGMxYTMwYWVkZC4uYjdkOGM5ZmNmNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorCiAjaW5jbHVkZSA8
bGltaXRzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtOTYsNyArOTgsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhZ2VTaXplID0gNjQgKiBLQjsKIHByaXZh
dGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXhQYWdlQ291bnQgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oKDF1bGwgPDwgMzIpIC8gcGFnZVNpemUpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgbWF4UGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE1BWF9B
UlJBWV9CVUZGRVJfU0laRSAvIHN0YXRpY19jYXN0PHVpbnQ2NF90PihwYWdlU2l6ZSkpOwogCiAg
ICAgdWludDMyX3QgbV9wYWdlQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3Y2Q1OTZmODcyZWMuLjIwYTY4MGZj
NDIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTgsNiArOCwyMSBAQAogICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sOgogICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmg6CiAKKzIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNv
bT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8v
ODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAg
IE1hZGUgc29tZSBvZiBDaGVja2VkQXJpdGhtZXRpYyBjb25zdGV4cHIsIGFuZCBhZGRlZCBpc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbCBzaW5jZSBpdCBpcyBhIGNvbW1vbmx5IHVzZWQgdGVzdCBpbiBB
cnJheUJ1ZmZlciBhbmQgZWFzeSB0byBnZXQgd3JvbmcgaW4gdGVybXMgb2Ygb3ZlcmZsb3cuCisK
KyAgICAgICAgKiB3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaDoKKyAgICAgICAgKFdURjo6aXNJbkJv
dW5kcyk6CisgICAgICAgIChXVEY6OmNvbnZlcnRTYWZlbHkpOgorICAgICAgICAoV1RGOjppc1N1
bVNtYWxsZXJUaGFuT3JFcXVhbCk6CisKIDIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0ICA8cm1v
cmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjI4NDIzMCwgbXkgbGFzdCBmaXhl
cyB0byB0aGUgd2F0Y2ggYnVpbGQgbWFrZSBpdCBicmVhayB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRB
cml0aG1ldGljLmgKaW5kZXggZmYxNTY1ZjExZGVkLi5lZmFiNGFkM2JjOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKKysrIGIvU291cmNlL1dURi93dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCwxNCArMTQ0LDE0IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+PjsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIGlzVGFyZ2V0QmlnZ2VyID0gc2l6
ZW9mKFRhcmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJvb2wgdGFyZ2V0U2lnbmVkID0gc3RkOjpu
dW1lcmljX2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQsIGJvb2wgc291cmNlU2lnbmVkID0gc3Rk
OjpudW1lcmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWduZWQ+IHN0cnVjdCBCb3VuZHNDaGVja2Vy
OwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4gewotICAgIHN0
YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4
cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRu
ZXNzIHNvIGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVj
aXNpb24gdG8gd2lkZXN0IHR5cGUuCiAgICAgICAgIHJldHVybiB2YWx1ZSA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPFRhcmdldD46Om1heCgpOwogICAgIH0KIH07CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJj
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWduZWRuZXNzIHNvIGltcGxpY2l0IHR5cGUgY29u
dmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNyZWFzZSBwcmVjaXNpb24gdG8gd2lkZXN0IHR5cGUuCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1pbigpIDw9IHZhbHVl
ICYmIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7CkBAIC0xNTks
NyArMTU5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0
LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRz
KFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNl
IHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gV2hlbiBjb252ZXJ0aW5nIHZhbHVlIHRvIHVuc2ln
bmVkIFNvdXJjZSwgdmFsdWUgd2lsbCBiZWNvbWUgYSBiaWcgdmFsdWUgaWYgdmFsdWUgaXMgbmVn
YXRpdmUuCiAgICAgICAgIC8vIENhc3RlZCB2YWx1ZSB3aWxsIGJlY29tZSBiaWdnZXIgdGhhbiBU
YXJnZXQ6Om1heCBhcyBTb3VyY2UgaXMgYmlnZ2VyIHRoYW4gVGFyZ2V0LgpAQCAtMTY4LDcgKzE2
OCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0
IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3Vy
Y2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIC8vIFRoZSB1bnNpZ25lZCBTb3VyY2UgdHlwZSBoYXMgZ3JlYXRl
ciBwcmVjaXNpb24gdGhhbiB0aGUgdGFyZ2V0IHNvIG1heChUYXJnZXQpIC0+IFNvdXJjZSB3aWxs
IHdpZGVuLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291cmNlPihzdGQ6
Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlw
ZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwg
ZmFsc2UsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQorICAgIHN0
YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UpCiAgICAgewogICAgICAgICAvLyBT
YW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1l
IFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVj
a2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCB0cnVlPiB7Ci0gICAgc3RhdGljIGJvb2wg
aW5Cb3VuZHMoU291cmNlKQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3Vy
Y2UpCiAgICAgewogICAgICAgICAvLyBTYW1lIHNpZ24sIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNp
b24uCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCB0cnVlLCBm
YWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAg
Ly8gVGFyZ2V0IGlzIHNpZ25lZCB3aXRoIGdyZWF0ZXIgb3Igc2FtZSBwcmVjaXNpb24uIElmIHN0
cmljdGx5IGdyZWF0ZXIsIGl0IGlzIGFsd2F5cyBzYWZlLgogICAgICAgICBpZiAoc2l6ZW9mKFRh
cmdldCkgPiBzaXplb2YoU291cmNlKSkKQEAgLTIwMiwxOSArMjAyLDE5IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFy
Z2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBT
b3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwg
dHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKKyAgICBzdGF0
aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgIHsKICAgICAgICAg
Ly8gVGFyZ2V0IGlzIHVuc2lnbmVkIHdpdGggZ3JlYXRlciBwcmVjaXNpb24uCiAgICAgICAgIHJl
dHVybiB2YWx1ZSA+PSAwOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZh
bHVlKQordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMg
aW5saW5lIGNvbnN0ZXhwciBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQogewogICAgIHJl
dHVybiBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlPjo6aW5Cb3VuZHModmFsdWUpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxp
bmUgYm9vbCBjb252ZXJ0U2FmZWx5KFNvdXJjZSBpbnB1dCwgVGFyZ2V0JiBvdXRwdXQpCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgY29u
c3RleHByIGJvb2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQog
ewogICAgIGlmICghaXNJbkJvdW5kczxUYXJnZXQ+KGlucHV0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtOTk2LDYgKzk5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4u
LiBBcmdzPiBib29sIHByb2R1Y3RPdmVyZmxvd3MoQXJncy4uLiBhcmdzKQogICAgIHJldHVybiBj
aGVja2VkUHJvZHVjdDxUPihhcmdzLi4uKS5oYXNPdmVyZmxvd2VkKCk7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IGJvb2wgaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoVCBhLCBUIGIsIFQgYm91
bmQpCit7CisgICAgQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4gc3VtID0gYTsKKyAgICBzdW0g
Kz0gYjsKKyAgICByZXR1cm4gIXN1bS5oYXNPdmVyZmxvd2VkKCkgJiYgc3VtLnZhbHVlKCkgPD0g
Ym91bmQ7Cit9CisKIH0KIAogdXNpbmcgV1RGOjpBc3NlcnROb092ZXJmbG93OwpAQCAtMTAxNywz
ICsxMDI0LDQgQEAgdXNpbmcgV1RGOjpkaWZmZXJlbmNlT3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpp
c0luQm91bmRzOwogdXNpbmcgV1RGOjpwcm9kdWN0T3ZlcmZsb3dzOwogdXNpbmcgV1RGOjpzdW1P
dmVyZmxvd3M7Cit1c2luZyBXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
VXNlLmgKaW5kZXggOWM5ZjgwZTNmZDFiLi42NDZlOWJlYTU4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2Uu
aApAQCAtMTQxLDYgKzE0MSwxNSBAQAogI2RlZmluZSBVU0VfSlNWQUxVRTMyXzY0IDEKICNlbmRp
ZgogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgaW5zdGVhZCBiZSBiYXNlZCBvbiBTSVpFX01BWCA9
PSBVSU5UNjRfTUFYCisvLyBCdXQgdGhpcyByZXF1aXJlcyBpbmNsdWRpbmcgPGNzdGRpbnQ+IGFu
ZCBQbGF0Zm9ybS5oIGlzIGluY2x1ZGVkIGluIGFsbCBraW5kIG9mIHdlaXJkIHBsYWNlcywgaW5j
bHVkaW5nIG5vbi1jcHAgZmlsZXMKKy8vIEFuZCBpbiBwcmFjdGljZSBDUFUoQUREUkVTUzY0KSBp
cyBlcXVpdmFsZW50IG9uIGFsbCBwbGF0Zm9ybXMgd2Ugc3VwcG9ydCAodmVyaWZpZWQgYnkgc3Rh
dGljX2Fzc2VydHMgaW4gQXJyYXlCdWZmZXIuaCkKKyNpZiBDUFUoQUREUkVTUzY0KQorI2RlZmlu
ZSBVU0VfTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisjZGVmaW5lIFVTRV9MQVJHRV9UWVBF
RF9BUlJBWVMgMAorI2VuZGlmCisKICNpZiBVU0UoSlNWQUxVRTY0KQogLyogRklYTUU6IEVuYWJs
ZSBCSUdJTlQzMiBvcHRpbWl6YXRpb24gYWdhaW4gYWZ0ZXIgd2UgZW5zdXJlIFNwZWVkb21ldGVy
MiBhbmQgSmV0U3RyZWFtMiByZWdyZXNzaW9ucyBhcmUgZml4ZWQuICovCiAvKiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0Nzc3ICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Zh
YWRjN2EzYzdmLi5hYmFlM2MwM2ZjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTE1NSw2ICsxNTUsNDYgQEAK
ICAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwOgogICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRVc2VyQWdlbnRTdHJpbmcpOgogCisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3Nl
dCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAg
dG8gNEdCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjkzNTMKKyAgICAgICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVz
dWtlIFN1enVraS4KKworICAgICAgICBTb21lIHBhcnRzIG9mIFdlYkNvcmUgdXNlIFR5cGVkQXJy
YXlzLCBhbmQgd291bGQgbm90IGJ1aWxkIGFmdGVyIEkgbWFkZSB0aGUgbGVuZ3RoKCkgZnVuY3Rp
b24gb24gdHlwZWQgYXJyYXlzIHJldHVybiBVQ1BVUmVnaXN0ZXIgaW5zdGVhZCBvZiB1aW50MzJf
dC4KKyAgICAgICAgTW9zdCBmaXhlcyB3ZXJlIHRyaXZpYWwsIHRoZSBvbmx5IGV4Y2VwdGlvbiBp
cyBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwLCB3aGVyZSBJIGhhZCB0byBpbmNyZW1lbnQgdGhl
IHZlcnNpb24gbnVtYmVyLCBhcyBBcnJheUJ1ZmZlciAoYW5kIEFycmF5QnVmZmVyVmlld3MpIG5v
dyB3cml0ZS9yZWFkIHRoZWlyIGxlbmd0aCBpbiBhIDY0LWJpdCBmaWVsZCAoYW5kIHNhbWUgZm9y
IHRoZSBieXRlT2Zmc2V0IG9mIEFycmF5QnVmZmVyVmlldykuCisKKyAgICAgICAgSSBhbHNvIGhh
ZCB0byBhZGQgYSB0ZXN0IGluIFBpeGVsQnVmZmVyLmNwcCB0aGF0IHRoZSBzaXplIG9mIHRoZSBB
cnJheUJ1ZmZlciBpdCB3aWxsIHRyeSB0byBhbGxvY2F0ZSBpcyA8IElOVDMyX01BWC4KKyAgICAg
ICAgT3RoZXJ3aXNlLCB0aGUgdGVzdCBMYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRz
aWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlZGF0YS1vdmVyZmxvdy5odG1sIHdoaWNoIGNo
ZWNrcyB0aGF0IHZlcnkgbGFyZ2UgaW1hZ2VzIGFyZSBwcm9wZXJseSByZWplY3RlZCB3aXRob3V0
IGNyYXNoaW5nLCB3b3VsZCB0aW1lb3V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhl
IGNvZGUgaXMgYWxyZWFkeSBleHRlbnNpdmVseSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBh
bmQgSSBpbXBsZW1lbnRlZCBubyBuZXcgZmVhdHVyZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpj
b3B5RnJvbUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNvcHlUb0No
YW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21h
aW5EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1l
RG9tYWluRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEFycmF5QnVmZmVy
Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZp
ZXdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlC
dWZmZXJWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oOgorCiAyMDIxLTEw
LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxkIG1ha2UgaXQgYnJl
YWsgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
ci5jcHAKaW5kZXggY2I3ZTg0ZDQ1MzgzLi5iMThkOGZkNmEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbChSZWY8Rmxv
YXQzMkFycmF5PiYmIGRlc3RpbmF0aW9uLAogICAgIGlmIChidWZmZXJPZmZzZXQgPj0gZGF0YUxl
bmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGRh
dGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgc2l6ZV90IGNvdW50ID0gZGF0YUxlbmd0aCAt
IGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKGRlc3RpbmF0aW9uLmdldCgpLmxl
bmd0aCgpLCBjb3VudCk7CiAgICAgCiAgICAgY29uc3QgZmxvYXQqIHNyYyA9IGNoYW5uZWxEYXRh
LT5kYXRhKCk7CkBAIC0yMjYsNyArMjI2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZm
ZXI6OmNvcHlUb0NoYW5uZWwoUmVmPEZsb2F0MzJBcnJheT4mJiBzb3VyY2UsIHVuc2lnbmUKICAg
ICBpZiAoYnVmZmVyT2Zmc2V0ID49IGRhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OworICAg
IHNpemVfdCBjb3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CiAgICAgY291bnQgPSBz
dGQ6Om1pbihzb3VyY2UuZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAgICAKICAgICBjb25zdCBm
bG9hdCogc3JjID0gc291cmNlLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCA2YzFjOTQ0MDIyZWQuLmQ1
M2I5ZTY0NGViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0xOTYsOCArMTk2LDkgQEAgdm9pZCBSZWFsdGltZUFu
YWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlvbkFycmF5
KQogICAgIGRvRkZUQW5hbHlzaXNJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIC8vIENvbnZlcnQg
ZnJvbSBsaW5lYXIgbWFnbml0dWRlIHRvIHVuc2lnbmVkLWJ5dGUgZGVjaWJlbHMuCi0gICAgdW5z
aWduZWQgc291cmNlTGVuZ3RoID0gbWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpOwotICAgIHNpemVf
dCBsZW5ndGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3Ro
KCkpOworICAgIHNpemVfdCBzb3VyY2VMZW5ndGggPSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7
CisgICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0gZGVzdGluYXRpb25BcnJheS5sZW5ndGgo
KTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oc291cmNlTGVuZ3RoLCBkZXN0aW5hdGlv
bkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgY29uc3QgZG91YmxlIHJh
bmdlU2NhbGVGYWN0b3IgPSBtX21heERlY2liZWxzID09IG1fbWluRGVjaWJlbHMgPyAxIDogMSAv
IChtX21heERlY2liZWxzIC0gbV9taW5EZWNpYmVscyk7CiAgICAgICAgIGNvbnN0IGRvdWJsZSBt
aW5EZWNpYmVscyA9IG1fbWluRGVjaWJlbHM7CkBAIC0yMjcsOCArMjI4LDkgQEAgdm9pZCBSZWFs
dGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5EYXRhKEZsb2F0MzJBcnJheSYgZGVzdGlu
YXRpb25BcnJheSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIHVu
c2lnbmVkIGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0
ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBk
ZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90
IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWlu
KGZmdFNpemUsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAg
ICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5w
dXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAg
QVNTRVJUKGlzSW5wdXRCdWZmZXJHb29kKTsKQEAgLTI1MSw4ICsyNTMsOSBAQCB2b2lkIFJlYWx0
aW1lQW5hbHlzZXI6OmdldEJ5dGVUaW1lRG9tYWluRGF0YShVaW50OEFycmF5JiBkZXN0aW5hdGlv
bkFycmF5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICB1bnNpZ25lZCBm
ZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihm
ZnRTaXplLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKKyAgICBzaXplX3QgZGVzdGluYXRp
b25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBmZnRTaXpl
ID0gdGhpcy0+ZmZ0U2l6ZSgpOworICAgIHNpemVfdCBsZW5ndGggPSBzdGQ6Om1pbihmZnRTaXpl
LCBkZXN0aW5hdGlvbkxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgYm9v
bCBpc0lucHV0QnVmZmVyR29vZCA9IG1faW5wdXRCdWZmZXIuc2l6ZSgpID09IElucHV0QnVmZmVy
U2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+IGZmdFNpemU7CiAgICAgICAgIEFTU0VSVChp
c0lucHV0QnVmZmVyR29vZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBhMWE4ZmEyOTI5Y2EuLjljNWUyYzUwNzli
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
V2FzbU1vZHVsZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1lhcnJGbGFncy5oPgogI2lu
Y2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0zNDIsOCArMzQzLDkgQEAgc3RhdGljIHVu
c2lnbmVkIGNvdW50VXNhZ2VzKENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKICAqIFZlcnNp
b24gNy4gYWRkZWQgc3VwcG9ydCBmb3IgRmlsZSdzIGxhc3RNb2RpZmllZCBhdHRyaWJ1dGUuCiAg
KiBWZXJzaW9uIDguIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlRGF0YSdzIGNvbG9yU3BhY2UgYXR0
cmlidXRlLgogICogVmVyc2lvbiA5LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZUJpdG1hcCBjb2xv
ciBzcGFjZS4KKyAqIFZlcnNpb24gMTAuIGNoYW5nZWQgdGhlIGxlbmd0aCAoYW5kIG9mZnNldHMp
IG9mIEFycmF5QnVmZmVycyAoYW5kIEFycmF5QnVmZmVyVmlld3MpIGZyb20gMzIgdG8gNjQgYml0
cwogICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSA5Oworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0gMTA7CiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgVGVybWluYXRvclRhZyA9IDB4RkZGRkZGRkY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9uSW5kZXhQ
cm9wZXJ0aWVzVGFnID0gMHhGRkZGRkZGRDsKQEAgLTM5OSw3ICs0MDEsNyBAQCBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBP
YmplY3RSZWZlcmVuY2UKICAqICAgIHwgTWVzc2FnZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVp
bnQzMl90PgogICogICAgfCBBcnJheUJ1ZmZlcgotICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcg
QXJyYXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmd0aDp1
aW50MzJfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQorICogICAgfCBBcnJheUJ1
ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQ2NF90PiA8
Ynl0ZUxlbmd0aDp1aW50NjRfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQogICog
ICAgfCBDcnlwdG9LZXlUYWcgPHdyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0
ZXt3cmFwcGVkS2V5TGVuZ3RofT4KICAqICAgIHwgRE9NUG9pbnQKICAqICAgIHwgRE9NUmVjdApA
QCAtNDYzLDcgKzQ2NSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0
RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICBPYmplY3RSZWZlcmVuY2VUYWcgPG9wSW5kZXg6SW5k
ZXhUeXBlPgogICoKICAqIEFycmF5QnVmZmVyIDotCi0gKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVu
Z3RoOnVpbnQzMl90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgorICogICAgQXJyYXlCdWZmZXJU
YWcgPGxlbmd0aDp1aW50NjRfdD4gPGNvbnRlbnRzOmJ5dGV7bGVuZ3RofT4KICAqICAgIEFycmF5
QnVmZmVyVHJhbnNmZXJUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgU2hhcmVkQXJyYXlCdWZm
ZXJUYWcgPHZhbHVlOnVpbnQzMl90PgogICoKQEAgLTkxMCw3ICs5MTIsNiBAQCBwcml2YXRlOgog
I2lmIFVTRShCSUdJTlQzMikKICAgICB2b2lkIGR1bXBCaWdJbnQzMkRhdGEoaW50MzJfdCBpbnRl
Z2VyKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YodWludDY0X3QpID09IHNp
emVvZih1bnNpZ25lZCBsb25nIGxvbmcpKTsKICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oaW50ZWdlciA8IDApKTsKICAgICAgICAgaWYgKCFpbnRlZ2VyKSB7CiAgICAgICAgICAg
ICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oMCkpOyAvLyBMZW5ndGgtaW4tdWludDY0X3QK
QEAgLTkyMCwxOCArOTIxLDE3IEBAIHByaXZhdGU6CiAgICAgICAgIGludDY0X3QgdmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihpbnRlZ2VyKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCkKICAg
ICAgICAgICAgIHZhbHVlID0gLXZhbHVlOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KHZhbHVlKSk7CisgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih2YWx1ZSkpOwogICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBkdW1wSGVhcEJpZ0ludERh
dGEoSlNCaWdJbnQqIGJpZ0ludCkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KHVpbnQ2NF90KSA9PSBzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSk7CiAgICAgICAgIHdyaXRl
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGJpZ0ludC0+c2lnbigpKSk7CiAgICAgICAgIGlmIGNvbnN0
ZXhwciAoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSkgewogICAg
ICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpZ0ludC0+bGVuZ3RoKCkpKTsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJpZ0ludC0+bGVu
Z3RoKCk7ICsraW5kZXgpCi0gICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihiaWdJbnQtPmRpZ2l0KGluZGV4KSkpOworICAgICAgICAgICAgICAgIHdy
aXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaWdJbnQtPmRpZ2l0KGluZGV4KSkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHNpemVvZihKU0JpZ0ludDo6RGlnaXQpID09
IHNpemVvZih1aW50MzJfdCkpOwogICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoSW5VaW50NjQg
PSBiaWdJbnQtPmxlbmd0aCgpIC8gMjsKQEAgLTk0NCwxMiArOTQ0LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYmlnSW50LT5kaWdpdChpbmRleCk7CiAgICAgICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihiaWdJbnQtPmRpZ2l0KGluZGV4KSkgPDwgMzIpIHwgdmFsdWU7Ci0gICAgICAg
ICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4odmFsdWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYmlnSW50LT5sZW5ndGgoKSAmIDB4MSkKLSAg
ICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHZhbHVl
KSk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk5OCw4ICs5OTgsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBh
cnJheUJ1ZmZlclZpZXcgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXJWaWV3KHZtLCBvYmop
OwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5i
eXRlT2Zmc2V0KCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5
QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVPZmZzZXQg
PSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKTsKKyAgICAgICAgd3JpdGUoYnl0ZU9mZnNl
dCk7CisgICAgICAgIHVpbnQ2NF90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlclZpZXctPmJ5dGVM
ZW5ndGgoKTsKKyAgICAgICAgd3JpdGUoYnl0ZUxlbmd0aCk7CiAgICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXctPnBvc3NpYmx5U2hhcmVkQnVm
ZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgICAgIGNvZGUgPSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwpAQCAtMTEzMSw4ICsxMTMz
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYnVmZmVy
LT5yZXNvbHV0aW9uU2NhbGUoKSkpOwogICAgICAgICB3cml0ZShidWZmZXItPmNvbG9yU3BhY2Uo
KSk7CiAKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpKTsKLSAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgQ2hlY2tlZFVpbnQzMiBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgaWYgKGJ5dGVMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICBj
b2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB3cml0ZShieXRlTGVuZ3RoKTsKKyAgICAg
ICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBieXRlTGVuZ3RoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKQpAQCAtMTI1NiwxNSArMTI2MywyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IG1fYmxvYkhhbmRsZXMuYXBwZW5kKGJsb2ItPmhhbmRsZSgpKTsKICAgICAgICAgICAgICAgICB3
cml0ZShibG9iLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoYmxvYi0+
dHlwZSgpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShibG9iLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHVpbnQ2NF90KSA9PSBzaXplb2YoZGVjbHR5cGUo
YmxvYi0+c2l6ZSgpKSkpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNpemUgPSBibG9iLT5z
aXplKCk7CisgICAgICAgICAgICAgICAgd3JpdGUoc2l6ZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYXV0byogZGF0YSA9IEpT
SW1hZ2VEYXRhOjp0b1dyYXBwZWQodm0sIG9iaikpIHsKICAgICAgICAgICAgICAgICB3cml0ZShJ
bWFnZURhdGFUYWcpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPndpZHRoKCkpOwogICAg
ICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICB3cml0
ZShkYXRhLT5kYXRhKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRh
dGEoKS5kYXRhKCksIGRhdGEtPmRhdGEoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQ2hl
Y2tlZFVpbnQzMiBkYXRhTGVuZ3RoID0gZGF0YS0+ZGF0YSgpLmxlbmd0aCgpOworICAgICAgICAg
ICAgICAgIGlmIChkYXRhTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgd3JpdGUoZGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+
ZGF0YSgpLmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+
Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KQEAgLTEzMTEsOCArMTMyNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHdyaXRlKEFycmF5QnVmZmVyVGFnKTsKLSAg
ICAgICAgICAgICAgICB3cml0ZShhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAg
ICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRh
dGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHVpbnQ2
NF90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICAgICAg
ICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYnl0ZUxlbmd0aCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
b2JqLT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKSB7CkBAIC0xNTAyLDcgKzE1MTcs
NyBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihtX2J1ZmZlciwgaSk7CiAg
ICAgfQogCi0gICAgdm9pZCB3cml0ZSh1bnNpZ25lZCBsb25nIGxvbmcgaSkKKyAgICB2b2lkIHdy
aXRlKHVpbnQ2NF90IGkpCiAgICAgewogICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihtX2J1ZmZl
ciwgaSk7CiAgICAgfQpAQCAtMjM5MSw3ICsyNDA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCByZWFkKHVuc2lnbmVkIGxvbmcgbG9uZyYgaSkK
KyAgICBib29sIHJlYWQodWludDY0X3QmIGkpCiAgICAgewogICAgICAgICByZXR1cm4gcmVhZExp
dHRsZUVuZGlhbihpKTsKICAgICB9CkBAIC0yNTU1LDkgKzI1NzAsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCByZWFkQXJyYXlCdWZmZXIoUmVm
UHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGVu
Z3RoVHlwZT4KKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlckltcGwoUmVmUHRyPEFycmF5QnVmZmVy
PiYgYXJyYXlCdWZmZXIpCiAgICAgewotICAgICAgICB1aW50MzJfdCBsZW5ndGg7CisgICAgICAg
IExlbmd0aFR5cGUgbGVuZ3RoOwogICAgICAgICBpZiAoIXJlYWQobGVuZ3RoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fcHRyICsgbGVuZ3RoID4gbV9lbmQpCkBA
IC0yNTY5LDE1ICsyNTg1LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlldyhWTSYgdm0sIEpTVmFsdWUmIGFycmF5
QnVmZmVyVmlldykKKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+
JiBhcnJheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmIChtX3ZlcnNpb24gPCAxMCkKKyAgICAg
ICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBsPHVpbnQzMl90PihhcnJheUJ1ZmZlcik7
CisgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJJbXBsPHVpbnQ2NF90PihhcnJheUJ1ZmZl
cik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExlbmd0aFR5cGU+CisgICAgYm9v
bCByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbChWTSYgdm0sIEpTVmFsdWUmIGFycmF5QnVmZmVyVmll
dykKICAgICB7CiAgICAgICAgIEFycmF5QnVmZmVyVmlld1N1YnRhZyBhcnJheUJ1ZmZlclZpZXdT
dWJ0YWc7CiAgICAgICAgIGlmICghcmVhZEFycmF5QnVmZmVyVmlld1N1YnRhZyhhcnJheUJ1ZmZl
clZpZXdTdWJ0YWcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50MzJf
dCBieXRlT2Zmc2V0OworICAgICAgICBMZW5ndGhUeXBlIGJ5dGVPZmZzZXQ7CiAgICAgICAgIGlm
ICghcmVhZChieXRlT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
dWludDMyX3QgYnl0ZUxlbmd0aDsKKyAgICAgICAgTGVuZ3RoVHlwZSBieXRlTGVuZ3RoOwogICAg
ICAgICBpZiAoIXJlYWQoYnl0ZUxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlck9iaiA9IGFzT2JqZWN0KHJlYWRUZXJtaW5hbCgp
KTsKQEAgLTI1ODcsNyArMjYxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGVsZW1l
bnRTaXplID0gdHlwZWRBcnJheUVsZW1lbnRTaXplKGFycmF5QnVmZmVyVmlld1N1YnRhZyk7CiAg
ICAgICAgIGlmICghZWxlbWVudFNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBlbGVtZW50U2l6ZTsKKyAgICAgICAg
TGVuZ3RoVHlwZSBsZW5ndGggPSBieXRlTGVuZ3RoIC8gZWxlbWVudFNpemU7CiAgICAgICAgIGlm
IChsZW5ndGggKiBlbGVtZW50U2l6ZSAhPSBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0yNjM0LDYgKzI2NTgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH0KIAorICAgIGJvb2wgcmVhZEFycmF5QnVmZmVyVmlldyhWTSYgdm0sIEpTVmFsdWUmIGFycmF5
QnVmZmVyVmlldykKKyAgICB7CisgICAgICAgIGlmIChtX3ZlcnNpb24gPCAxMCkKKyAgICAgICAg
ICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbDx1aW50MzJfdD4odm0sIGFycmF5QnVm
ZmVyVmlldyk7CisgICAgICAgIHJldHVybiByZWFkQXJyYXlCdWZmZXJWaWV3SW1wbDx1aW50NjRf
dD4odm0sIGFycmF5QnVmZmVyVmlldyk7CisgICAgfQorCiAgICAgYm9vbCByZWFkKFZlY3Rvcjx1
aW50OF90PiYgcmVzdWx0KQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlc3VsdC5pc0VtcHR5KCkp
OwpAQCAtMzM0NSw3ICszMzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBjb2xvclNwYWNl
ID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXI7CiAKLSAgICAgICAgaWYgKCFyZWFkKHNlcmlhbGl6YXRpb25TdGF0
ZSkgfHwgIXJlYWQobG9naWNhbFdpZHRoKSB8fCAhcmVhZChsb2dpY2FsSGVpZ2h0KSB8fCAhcmVh
ZChyZXNvbHV0aW9uU2NhbGUpIHx8IChtX3ZlcnNpb24gPiA4ICYmICFyZWFkKGNvbG9yU3BhY2Up
KSB8fCAhcmVhZEFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSkgeworICAgICAgICBpZiAoIXJlYWQo
c2VyaWFsaXphdGlvblN0YXRlKSB8fCAhcmVhZChsb2dpY2FsV2lkdGgpIHx8ICFyZWFkKGxvZ2lj
YWxIZWlnaHQpIHx8ICFyZWFkKHJlc29sdXRpb25TY2FsZSkgfHwgKG1fdmVyc2lvbiA+IDggJiYg
IXJlYWQoY29sb3JTcGFjZSkpIHx8ICFyZWFkQXJyYXlCdWZmZXJJbXBsPHVpbnQzMl90PihhcnJh
eUJ1ZmZlcikpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgIH0KQEAgLTM0MTEsOCArMzQ0Miw3IEBAIHByaXZhdGU6CiAjaWYgVVNF
KEJJR0lOVDMyKQogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihKU0JpZ0ludDo6RGlnaXQp
ID09IHNpemVvZih1aW50NjRfdCkpOwogICAgICAgICBpZiAobGVuZ3RoSW5VaW50NjQgPT0gMSkg
ewotICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSA9
PSBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkaWdp
dDY0ID0gMDsKKyAgICAgICAgICAgIHVpbnQ2NF90IGRpZ2l0NjQgPSAwOwogICAgICAgICAgICAg
aWYgKCFyZWFkKGRpZ2l0NjQpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgICAgICAgICBpZiAoc2lnbikgewpAQCAtMzQ0Nyw4ICszNDc3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZm9yICh1aW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoSW5VaW50NjQ7ICsraW5k
ZXgpIHsKLSAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih1bnNpZ25lZCBsb25n
IGxvbmcpID09IHNpemVvZih1aW50NjRfdCkpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBkaWdpdDY0ID0gMDsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkaWdpdDY0ID0g
MDsKICAgICAgICAgICAgICAgICBpZiAoIXJlYWQoZGlnaXQ2NCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdChp
bmRleCwgZGlnaXQ2NCk7CkBAIC0zNDYxLDggKzM0OTAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3Ig
KHVpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGhJblVpbnQ2NDsgKytpbmRleCkgewot
ICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykg
PT0gc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGRpZ2l0NjQgPSAwOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRpZ2l0NjQgPSAwOwogICAg
ICAgICAgICAgICAgIGlmICghcmVhZChkaWdpdDY0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KGluZGV4ICog
Miwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpZ2l0NjQpKTsKQEAgLTM2MTgsNyArMzY0Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgdHlwZTsKICAgICAgICAgICAg
IGlmICghcmVhZFN0cmluZ0RhdGEodHlwZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplID0gMDsKKyAgICAgICAg
ICAgIHVpbnQ2NF90IHNpemUgPSAwOwogICAgICAgICAgICAgaWYgKCFyZWFkKHNpemUpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIW1fY2FuQ3Jl
YXRlRE9NT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCBmYjc1N2E0ZDc0ZjYuLjdlNDlhOWU3MzIyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
QEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgaWYgKGhhc0FycmF5KSB7CiAgICAgICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5z
aXplKCkpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmFycmF5QnVmZmVyQ29udGVudHMgOiAq
bV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgYXJy
YXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpOworICAgICAgICAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygpKTsK
ICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlckNvbnRlbnRzLmRhdGEoKSksIGFycmF5QnVmZmVyQ29u
dGVudHMuc2l6ZUluQnl0ZXMoKSwgMSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTksOSArMTk5
LDEyIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgICAg
IHdoaWxlIChhcnJheUxlbmd0aC0tKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBidWZmZXJTaXpl
OworICAgICAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6ZTsKICAgICAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkQnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7
CisgICAgICAgICAgICBpZiAoY2hlY2tlZEJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLnRl
bXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxMiw3ICsyMTUsNyBAQCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFw
cGVuZCh7IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgQXJyYXlCdWZmZXI6OnByaW1pdGl2ZUdpZ2FjYWdl
RGVzdHJ1Y3RvcigpIH0pOworICAgICAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LT5h
cHBlbmQoeyBidWZmZXIsIGNoZWNrZWRCdWZmZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZl
R2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IGE2NmIxOTFkNjg2ZC4uNTU5
ZWJjYzQ4YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5k
UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKQEAgLTY4LDcgKzY4LDkgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKFdlYkNv
cmU6OkJsb2ImIGJsb2IpCiAKICAgICBhdXRvIGJ5dGVMZW5ndGggPSBibG9iLnNpemUoKTsKICAg
ICBpZiAoIWJ5dGVMZW5ndGgpIHsKLSAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpj
cmVhdGUoMFUsIDEpLCAwLCAwKTsKKyAgICAgICAgLy8gVGhlIGNhc3QgbG9va3Mgd2VpcmQsIGJ1
dCBpcyByZXF1aXJlZCBmb3IgdGhlIG92ZXJsb2FkaW5nIHJlc29sdXRpb24gdG8gc3VjY2VlZC4K
KyAgICAgICAgLy8gV2l0aG91dCBpdCwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IHdoZXJlIEFycmF5
QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkgY291
bGQgYmUgY2FsbGVkIGluc3RlYWQuCisgICAgICAgIGVucXVldWUoSlNDOjpBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PHNpemVfdD4oMFUpLCAxKSwgMCwgMCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgYXV0byBibG9iTG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxCbG9iTG9hZGVy
PihbdGhpc10oQmxvYkxvYWRlciYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyLmNwcAppbmRleCAyNWJmZjE1M2QxMmMuLjc1NDNmNDc1YTI3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNw
cApAQCAtNzQsNiArNzQsOCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVm
ZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZl
clNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IGlmIChidWZmZXJTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAgaWYg
KCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IDg3MGJkYzgwZjM1NS4u
ZDgzZTRhNDA0MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT0JveC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjMsNyArNjQsMTAg
QEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFImIHJldHVyblZhbHVl
LCBWJiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5lc3MpCiAgICAg
ewogICAgICAgICBib29sIHJlYWRTdGF0dXMgPSBmYWxzZTsKLSAgICAgICAgVCB2YWx1ZSA9IHZp
ZXcudGVtcGxhdGUgcmVhZDxUPihvZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFuLCAm
cmVhZFN0YXR1cyk7CisgICAgICAgIHNpemVfdCBhY3R1YWxPZmZzZXQgPSBvZmZzZXQ7CisgICAg
ICAgIFQgdmFsdWUgPSB2aWV3LnRlbXBsYXRlIHJlYWQ8VD4oYWN0dWFsT2Zmc2V0LCBlbmRpYW5u
ZXNzID09IExpdHRsZUVuZGlhbiwgJnJlYWRTdGF0dXMpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc0luQm91bmRzPHVpbnQzMl90PihhY3R1YWxPZmZzZXQpKTsKKyAgICAgICAgb2Zmc2V0ID0g
YWN0dWFsT2Zmc2V0OwogICAgICAgICBpZiAoIXJlYWRTdGF0dXMpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAK
</data>
<flag name="commit-queue"
          id="465783"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441513</attachid>
            <date>2021-10-16 19:25:40 -0700</date>
            <delta_ts>2021-10-16 21:00:27 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>WIP_Wasm4GB</filename>
            <type>text/plain</type>
            <size>277184</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjI2MmNkYTM4M2Q1Li5lYzZiYjNjMWQ4NTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTAtMTUgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNN
IHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoZSBiaWctd2FzbS1tZW1vcnkvd2Fz
bS1tZW1vcnktcmVxdWVzdGVkLi4uIHRlc3RzIHVzZWQgdG8gc2ltcGx5IGV4cGVjdCBhbiBPT00g
YXQgMkdCLgorICAgICAgICBUaGV5IG5vdyBleHBlY3Qgc3VjY2VzcyBhdCA0R0IsIGFuZCBmYWls
dXJlIGF0IDRHQisxLgorICAgICAgICBUaGUgZXhjZXB0aW9ucyB0aGV5IGV4cGVjdCBhcmUgbm93
IG1vcmUgc3BlY2lmaWMsIGFzIHByZXZpb3VzbHkgdGhlcmUgd2FzIGEgcm91bmRpbmcgaXNzdWUg
dGhhdCB3YXMgY2F1c2luZyB0aGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBub3QgdG8gYmUgdGhyb3du
IChyZXN1bHRpbmcgaW4gdGhlIGdlbmVyaWMgT09NIGV4Y2VwdGlvbiBsYXRlciBpbiB0aGUgY29k
ZSkuCisgICAgICAgIEZpbmFsbHkgSSBtYWRlIHRoZW0gb25seSBydW4gb24gNjQtYml0IHBsYXRm
b3JtcyBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHR5cGVkIGFycmF5cyA+PTJHQiBvbiAzMi1iaXRz
LCBhbmQgSSBtYWRlIHRoZW0gb25seSBydW4gaW4gb25lIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhl
eSBjYW4gdGFrZSBhIGxpdHRsZSBiaXQgb2YgdGltZS4KKworICAgICAgICBJIGFsc28gYWRkZWQg
YSBmZXcgbmV3IHRlc3RzLCBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgb3VyIGhhbmRsaW5nIG9mIGxh
cmdlIHR5cGVkIGFycmF5cywgYW5kIGVzcGVjaWFsbHkgb2YgaW5kaWNlcyBhYm92ZSBJTlQzMl9N
QVguCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLXdhc20tbWVtb3J5LWdyb3ctbm8tbWF4LmpzOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93Lmpz
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qczoK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlZC1hcnJheS1hbHdheXMtbGFy
Z2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlW
YWwpOgorICAgICAgICAocHV0QnlWYWwpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoZ2V0QnlWYWwpOgorICAgICAgICAocHV0QnlWYWwpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFycmF5TGVuZ3RoKToKKyAgICAgICAg
KGdldEJ5VmFsKToKKyAgICAgICAgKHB1dEJ5VmFsKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1yZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJB
WV9CVUZGRVJfU0laRS0yLmpzOgorICAgICAgICAqIHdhc20vcmVncmVzcy93YXNtLW1lbW9yeS1y
ZXF1ZXN0ZWQtbW9yZS10aGFuLU1BWF9BUlJBWV9CVUZGRVJfU0laRS5qczoKKwogMjAyMS0xMC0x
NSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCByMjg0MjMwLCBteSBsYXN0IGZpeGVzIHRvIHRoZSB3YXRjaCBidWlsZCBtYWtlIGl0IGJyZWFr
IHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1u
by1tYXguanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMK
aW5kZXggZWI0ODAyNzFhYTJlLi5mODY1ODkzMzZkY2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy13YXNtLW1lbW9yeS1ncm93LW5vLW1heC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy1uby1tYXguanMKQEAgLTEsNCArMSw1IEBACi0vL0Agc2tpcCBp
ZiAkbWVtb3J5TGltaXRlZAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRl
Y3R1cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRl
ZmF1bHQoKQogCiBmdW5jdGlvbiB0ZXN0KCkgewogCkBAIC0yNCwxOSArMjUsMjUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCiAgICAgICAg
IGZvbyhva0FycmF5KTsKIAotICAgIHZhciBvayA9IGZhbHNlOwotICAgIHRyeSB7CisgICAgbGV0
IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKICAgICAgICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAgfSk7Ci0gICAgICAgIG1lbW9yeS5ncm93
KDB4NzAwMCk7CisgICAgICAgIG1lbW9yeS5ncm93KG1heFNpemUgLSAweDEwMDApOwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpKTsKICAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
IGluaXRpYWw6IDB4MTAwMCB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSAtIDB4MTAw
MCArIDEpOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9yeS5i
dWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
aWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAg
IGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGdyb3duIHNpemUgdG8gYmUgYSB2YWxpZCBwYWdlIGNvdW50IikKICAgICAg
ICAgICAgIHRocm93IGU7CiAgICAgfQotCiAgICAgaWYgKG9rKQogICAgICAgICB0aHJvdyAiRXJy
b3I6IGRpZCBub3QgdGhyb3cgZXJyb3IiOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS1n
cm93LmpzCmluZGV4IDExYWE1ZTVkMjU3MS4uZGJlZjA0ZDk2NWY1IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9iaWctd2FzbS1tZW1vcnktZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctd2FzbS1tZW1vcnktZ3Jvdy5qcwpAQCAtMSw0ICsxLDUgQEAKLS8vQCBza2lwIGlmICRtZW1v
cnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE5ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKICAgICAgICAgZm9vKG9r
QXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1l
bW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAsIG1heGltdW06
IDB4ODAwMCB9KTsKLSAgICAgICAgbWVtb3J5Lmdyb3coMHg3MDAwKTsKKworICAgIGxldCBtYXhT
aXplID0gMHgxMDAwMDsKKyAgICB7CisgICAgICAgIHZhciBtZW1vcnkgPSBuZXcgV2ViQXNzZW1i
bHkuTWVtb3J5KHsgaW5pdGlhbDogMHgxMDAwLCBtYXhpbXVtOiBtYXhTaXplIH0pOworICAgICAg
ICBtZW1vcnkuZ3JvdyhtYXhTaXplIC0gMHgxMDAwKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
byhuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT09
IHZvaWQgMCkKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG9rID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAweDEwMDAs
IG1heGltdW06IG1heFNpemUrMSB9KTsKKyAgICAgICAgbWVtb3J5Lmdyb3cobWF4U2l6ZSArIDEg
LSAweDEwMDApOworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG1lbW9y
eS5idWZmZXIpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgaWYgKGUudG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAg
ICAgIGlmIChlLnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAn
bWF4aW11bScgcGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICB9Ci0KICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJv
dyBlcnJvciI7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwppbmRleCBkOGU3ZmI2OWI0YmEu
LjgwZmYwNmIyNjdhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLXdhc20tbWVtb3J5
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy13YXNtLW1lbW9yeS5qcwpAQCAtMSw0ICsxLDUg
QEAKLS8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkCisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRl
ZCBvciAoJGFyY2hpdGVjdHVyZSAhPSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02
NCIpCisvL0AgcnVuRGVmYXVsdCgpCiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKQEAgLTI0LDE3ICsy
NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKICAgICAgICAgZm9vKG9rQXJyYXkpOwogCi0gICAgdmFyIG9rID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNz
ZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogMHg4MDAwLCBtYXhpbXVtOiAweDgwMDAgfSkuYnVmZmVy
KSk7CisgICAgbGV0IG1heFNpemUgPSAweDEwMDAwOworICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhuZXcgVWludDhBcnJheShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDog
bWF4U2l6ZSwgbWF4aW11bTogbWF4U2l6ZSB9KS5idWZmZXIpKTsKICAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdm9pZCAwKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVu
ZDogIiArIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgb2sgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKG5ldyBVaW50OEFycmF5KG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoeyBpbml0aWFsOiBtYXhTaXplKzEsIG1heGltdW06IG1heFNpemUrMSB9KS5idWZmZXIp
KTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUu
dG9TdHJpbmcoKSAhPSAiUmFuZ2VFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIGlmIChl
LnRvU3RyaW5nKCkgIT0gIlJhbmdlRXJyb3I6IFdlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcg
cGFnZSBjb3VudCBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgdGhyb3cgZTsKICAgICB9Ci0K
ICAgICBpZiAob2spCiAgICAgICAgIHRocm93ICJFcnJvcjogZGlkIG5vdCB0aHJvdyBlcnJvciI7
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNWVhMTZkODVmYwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWFsd2F5cy1sYXJnZS5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZCBvciAoJGFyY2hpdGVjdHVyZSAh
PSAiYXJtNjQiICYmICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIpCisvL0AgcnVuRGVmYXVsdCgp
CisKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7CitmdW5jdGlvbiBnZXRCeVZhbChh
cnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKGdl
dEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpCit7CisgICAg
YXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShwdXRCeVZhbCk7CisKK2xldCBvbmVH
aWdhID0gMTAyNCAqIDEwMjQgKiAxMDI0OworCitmdW5jdGlvbiB0ZXN0KGFycmF5LCBhY3R1YWxM
ZW5ndGgsIHN0cmluZykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBsID0gZ2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgICAgICBpZiAobCAh
PSBhY3R1YWxMZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAoIldyb25nIGFycmF5IGxlbmd0aDog
IiArIGwgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyBhY3R1YWxMZW5ndGggKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7CisgICAgICAgIHZhciBpbmRleCA9ICgyICogb25lR2lnYSkgKyBp
OworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4
cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBz
dHJpbmcpOworICAgIH0KK30KKworbGV0IHRocmVlR2lncyA9IDMgKiBvbmVHaWdhOworbGV0IGZv
dXJHaWdzID0gNCAqIG9uZUdpZ2E7CisKK3Rlc3QobmV3IEludDhBcnJheSh0aHJlZUdpZ3MpLCB0
aHJlZUdpZ3MsICJJbnQ4QXJyYXkvM0dCIik7Cit0ZXN0KG5ldyBVaW50OEFycmF5KGZvdXJHaWdz
KSwgZm91ckdpZ3MsICJVaW50OEFycmF5LzRHQiIpOwordGVzdChuZXcgVWludDhDbGFtcGVkQXJy
YXkodGhyZWVHaWdzKSwgdGhyZWVHaWdzLCAiVWludDhDbGFtcGVkQXJyYXkvM0dCIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1ldmVudHVhbGx5LWxhcmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktZXZlbnR1YWxseS1sYXJnZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlZWVkZDAxNGQwNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWV2ZW50dWFsbHktbGFyZ2UuanMKQEAg
LTAsMCArMSw0OCBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgKCRhcmNoaXRlY3R1
cmUgIT0gImFybTY0IiAmJiAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiKQorLy9AIHJ1bkRlZmF1
bHQoKQorCitmdW5jdGlvbiBnZXRBcnJheUxlbmd0aChhcnJheSkKK3sKKyAgICByZXR1cm4gYXJy
YXkubGVuZ3RoOworfQorbm9JbmxpbmUoZ2V0QXJyYXlMZW5ndGgpOworZnVuY3Rpb24gZ2V0QnlW
YWwoYXJyYXksIGluZGV4KQoreworICAgIHJldHVybiBhcnJheVtpbmRleF07Cit9Citub0lubGlu
ZShnZXRCeVZhbCk7CitmdW5jdGlvbiBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKQorewor
ICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQg
b25lR2lnYSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0
dWFsTGVuZ3RoLCBzdHJpbmcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgICAgICB2YXIgbCA9IGdldEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYg
KGwgIT0gYWN0dWFsTGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5n
dGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsg
IiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2
YXIgdmFsdWUgPSBpICUgMTAwOworICAgICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVl
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAg
IGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2
YWx1ZSArICIgYnV0IGdvdCAiICsgcmVzdWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAg
IH0KKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB2YXIgaW5kZXggPSAyICogb25lR2lnYSArIDEw
OworICAgIHB1dEJ5VmFsKGFycmF5LCBpbmRleCwgdmFsdWUpOworICAgIHZhciByZXN1bHQgPSBn
ZXRCeVZhbChhcnJheSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAg
IHRocm93ICgiRXhwZWN0ZWQgIiArIHZhbHVlICsgIiBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXktbGFyZ2UtZXZlbnR1YWxseS1v
b2IuanMgYi9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1sYXJnZS1ldmVudHVhbGx5LW9vYi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1MzliNTBkMmU1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWxhcmdlLWV2ZW50
dWFsbHktb29iLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVk
IG9yICgkYXJjaGl0ZWN0dXJlICE9ICJhcm02NCIgJiYgJGFyY2hpdGVjdHVyZSAhPSAieDg2LTY0
IikKKy8vQCBydW5EZWZhdWx0KCkKK2Z1bmN0aW9uIGdldEFycmF5TGVuZ3RoKGFycmF5KQorewor
ICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZShnZXRBcnJheUxlbmd0aCk7Citm
dW5jdGlvbiBnZXRCeVZhbChhcnJheSwgaW5kZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4
XTsKK30KK25vSW5saW5lKGdldEJ5VmFsKTsKK2Z1bmN0aW9uIHB1dEJ5VmFsKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFycmF5W2luZGV4XSA9IHZhbHVl
OworfQorbm9JbmxpbmUocHV0QnlWYWwpOworCitsZXQgb25lR2lnYSA9IDEwMjQgKiAxMDI0ICog
MTAyNDsKKworZnVuY3Rpb24gdGVzdChhcnJheSwgYWN0dWFsTGVuZ3RoLCBzdHJpbmcpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgbCA9IGdl
dEFycmF5TGVuZ3RoKGFycmF5KTsKKyAgICAgICAgaWYgKGwgIT0gYWN0dWFsTGVuZ3RoKQorICAg
ICAgICAgICAgdGhyb3cgKCJXcm9uZyBhcnJheSBsZW5ndGg6ICIgKyBsICsgIiBpbnN0ZWFkIG9m
IHRoZSBleHBlY3RlZCAiICsgYWN0dWFsTGVuZ3RoICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOwor
ICAgICAgICB2YXIgaW5kZXggPSBpOworICAgICAgICB2YXIgdmFsdWUgPSBpICUgMTAwOworICAg
ICAgICBwdXRCeVZhbChhcnJheSwgaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IGdldEJ5VmFsKGFycmF5LCBpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisg
ICAgICAgICAgICB0aHJvdyAoIkV4cGVjdGVkICIgKyB2YWx1ZSArICIgYnV0IGdvdCAiICsgcmVz
dWx0ICsgIiBpbiBjYXNlICIgKyBzdHJpbmcpOworICAgIH0KKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB2YXIgaW5kZXggPSBhY3R1YWxMZW5ndGggKyAxMDsKKyAgICBwdXRCeVZhbChhcnJheSwg
aW5kZXgsIHZhbHVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZ2V0QnlWYWwoYXJyYXksIGluZGV4KTsK
KyAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgKCJJbiBvdXQtb2Yt
Ym91bmRzIGNhc2UsIGV4cGVjdGVkIHVuZGVmaW5lZCBidXQgZ290ICIgKyByZXN1bHQgKyAiIGlu
IGNhc2UgIiArIHN0cmluZyk7Cit9CisKK2xldCB0aHJlZUdpZ3MgPSAzICogb25lR2lnYTsKK2xl
dCBmb3VyR2lncyA9IDQgKiBvbmVHaWdhOworCit0ZXN0KG5ldyBJbnQ4QXJyYXkodGhyZWVHaWdz
KSwgdGhyZWVHaWdzLCAiSW50OEFycmF5LzNHQiIpOwordGVzdChuZXcgVWludDhBcnJheShmb3Vy
R2lncyksIGZvdXJHaWdzLCAiVWludDhBcnJheS80R0IiKTsKK3Rlc3QobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KHRocmVlR2lncyksIHRocmVlR2lncywgIlVpbnQ4Q2xhbXBlZEFycmF5LzNHQiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVxdWVzdGVkLW1v
cmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNz
L3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLTIu
anMKaW5kZXggNzdkNTBjMzUwYjQ2Li5lZDBlN2FmMDkxM2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
d2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JV
RkZFUl9TSVpFLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mvd2FzbS1tZW1vcnktcmVx
dWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUtMi5qcwpAQCAtNzYsMTMgKzc2
LDEzIEBAIGNsYXNzIFdhc21Nb2R1bGVCdWlsZGVyIHsKIHZhciBleGNlcHRpb247CiB0cnkgewog
ICAgIHZhciBtb2R1bGUgPSBuZXcgV2FzbU1vZHVsZUJ1aWxkZXIoKTsKLSAgICBtb2R1bGUuYWRk
TWVtb3J5KDMyNzY4KTsKKyAgICBtb2R1bGUuYWRkTWVtb3J5KCgyKioxNikgKyAxKTsKICAgICBt
b2R1bGUuaW5zdGFudGlhdGUoKTsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwog
fQogCi1pZiAoZXhjZXB0aW9uICE9ICJSYW5nZUVycm9yOiBPdXQgb2YgbWVtb3J5IikgeworaWYg
KGV4Y2VwdGlvbiAhPSAiQ29tcGlsZUVycm9yOiBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDE1OiBNZW1vcnkncyBpbml0aWFsIHBhZ2UgY291bnQgb2YgNjU1MzcgaXMg
aW52YWxpZCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0aGlzLnRvQnVmZmVy
KCkpJykiKSB7CiAgICAgcHJpbnQoZXhjZXB0aW9uKTsKICAgICB0aHJvdyAiRkFJTEVEIjsKIH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1t
b3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzIGIvSlNUZXN0cy93YXNtL3JlZ3Jlc3Mv
d2FzbS1tZW1vcnktcmVxdWVzdGVkLW1vcmUtdGhhbi1NQVhfQVJSQVlfQlVGRkVSX1NJWkUuanMK
aW5kZXggYmE2MmQ5MTQ3NmFhLi4wMWYwNmQyZjQ5NzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3RlZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZF
Ul9TSVpFLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWdyZXNzL3dhc20tbWVtb3J5LXJlcXVlc3Rl
ZC1tb3JlLXRoYW4tTUFYX0FSUkFZX0JVRkZFUl9TSVpFLmpzCkBAIC0xLDEwICsxLDEwIEBACiB2
YXIgZXhjZXB0aW9uOwogCiB0cnkgewotICAgIG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0
aWFsOiAweDgwMDAsIG1heGltdW06IDB4ODAwMCB9KS5idWZmZXI7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7IGluaXRpYWw6IDB4MTAwMDEsIG1heGltdW06IDB4MTAwMDEgfSkuYnVmZmVy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CiAKLWlmIChleGNlcHRpb24g
IT0gIlJhbmdlRXJyb3I6IE91dCBvZiBtZW1vcnkiKQotICAgIHRocm93ICJGQUlMRUQiOworaWYg
KGV4Y2VwdGlvbiAhPSAiUmFuZ2VFcnJvcjogV2ViQXNzZW1ibHkuTWVtb3J5ICdpbml0aWFsJyBw
YWdlIGNvdW50IGlzIHRvbyBsYXJnZSIpCisgICAgdGhyb3cgIkZBSUxFRCwgZXhjZXB0aW9uIHdh
czogIiArIGV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDEzYWFkNjZjNTEuLjFmZDVmZjZiNzljMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3Nl
dEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAg
ICAgcmRhcjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBSZWJhc2VsaW5lZCB0aHJlZSBmb2xsb3dpbmcgdGVzdHMgYXMgZGlmZmVyZW50
IG9yIGZld2VyIGVycm9yIG1lc3NhZ2VzIGFwcGVhciBvbiB0aGUgY29uc29sZS4KKyAgICAgICAg
QWxzbyBjaGFuZ2VkIGN1cnJlbnRWZXJzaW9uIGluIHNlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0
bWwgZnJvbSA5IHRvIDEwLgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWdldEltYWdl
RGF0YS1pbnZhbGlkLXJlc3VsdC1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sOgorICAgICAgICAqIHdl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0
aC1leHBlY3RlZC50eHQ6CisKIDIwMjEtMTAtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI3NjM3MCk6IEVsZW1lbnRzIHdp
dGggYW5pbWF0ZWQgdHJhbnNmb3JtIHByb3BlcnR5IG1pZ2h0IG5vdCBwcm9wZXJseSByZW5kZXJl
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0
LXZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3N0b3JhZ2Uvc2VyaWFsaXplZC1zY3JpcHQt
dmFsdWUuaHRtbAppbmRleCA1NTRhMDJkZjE3YWQuLjg3YmNjNDQ5MmMxNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwK
QEAgLTYsNyArNiw3IEBACiAgICAgPGJvZHk+CiAgICAgICAgIDxzY3JpcHQ+CiAKLWNvbnN0IGN1
cnJlbnRWZXJzaW9uID0gMHgwOTsKK2NvbnN0IGN1cnJlbnRWZXJzaW9uID0gMHgwYTsKIAogLy8g
SGVyZSdzIGEgbGl0dGxlIFEmRCBoZWxwZXIgZm9yIGZ1dHVyZSBhZHZlbnR1cmVycyBuZWVkaW5n
IHRvIHJlYmFzZWxpbmUgdGhpcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1leHBl
Y3RlZC50eHQKaW5kZXggNDk4YmRhY2ZkZGM1Li41YjhmMzY2NTljYjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQtYmFkLWJ1ZmZlci1jcmFzaC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4
dC1iYWQtYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUg
TUVTU0FHRTogRmFpbGVkIHRvIGNvbnN0cnVjdCBpbnRlcm5hbCBBdWRpb0J1ZmZlciB3aXRoIDEg
Y2hhbm5lbChzKSwgYSBzYW1wbGUgcmF0ZSBvZiA0NDAwMCBhbmQgYSBsZW5ndGggb2YgNTM2ODcw
OTEyLgogVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaC4KIAogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0L2JhZC1idWZmZXItbGVuZ3RoLWV4cGVjdGVk
LnR4dAppbmRleCA5NTZhNTc3OTc5NDkuLmQwNzM2MDAxNDMwMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9iYWQtYnVmZmVyLWxlbmd0aC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC9i
YWQtYnVmZmVyLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1F
U1NBR0U6IEZhaWxlZCB0byBjb25zdHJ1Y3QgaW50ZXJuYWwgQXVkaW9CdWZmZXIgd2l0aCAxIGNo
YW5uZWwocyksIGEgc2FtcGxlIHJhdGUgb2YgNDQwMDAgYW5kIGEgbGVuZ3RoIG9mIDUzNjg3MDkx
Mi4KIE1ha2Ugc3VyZSB0aGF0IHRoZSBsZW5ndGggcmV0dXJuZWQgYnkgT2ZmbGluZUF1ZGlvQ29u
dGV4dCBldmVuIGlmIHdlIGZhaWxlZCB0byBjb25zdHJ1Y3QgdGhlIHJlbmRlcmluZyBidWZmZXIu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IGQ3NjA0NjgxMTJjZi4uZDI0NzAxMmE3N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNzUgQEAKKzIwMjEtMTAtMTUgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXQVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICBy
ZGFyOi8vODE2MDM0NDcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIFdoaWxlIGluY3JlYXNpbmcgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIHRvIDRHQiB3YXMg
ZWFzeSwgaXQgd2FzIG5vdCByZW1vdGVseSB0aGUgb25seSB0aGluZyByZXF1aXJlZCB0byBnZXQg
dGhpcyB0byB3b3JrOgorICAgICAgICAtIDRHQiBpcyBub3QgcmVwcmVzZW50YWJsZSBpbiBhIHVp
bnQzMl90LCBzbyBJIGNoYW5nZWQgYWxsIGxlbmd0aCBvZiBBcnJheUJ1ZmZlci9UeXBlZEFycmF5
L2V0Yy4uIHRvIGJlaW5nIHNpemVfdC4KKyAgICAgICAgLSBUaGlzIGFsc28gcmVxdWlyZWQgY2hh
bmdpbmcgTmV3VHlwZWRBcnJheSBpbiBhbGwgb2YgTExJbnQvQmFzZWxpbmUvREZHL0ZUTCB0byBh
Y2NlcHQgYSBub24taW50MzIgc2l6ZS4KKyAgICAgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHBl
cmZvcm1hbmNlIHJlZ3Jlc3Npb25zLCBJIGhhZCB0byBhZGQgc3BlY3VsYXRpb24gaW4gdGhlIERG
Ry9GVEwsIHdoaWNoIG5vdyBoYXZlIHR3byB2ZXJzaW9ucyBvZiBOZXdUeXBlZEFycmF5IChvbmUg
dGhhdCB0YWtlcyBhbiBJbnQzMiBhbmQgb25lIHRoYXQgdGFrZXMgYSBTdHJpY3RJbnQ1MikKKyAg
ICAgICAgLSBTaW1pbGFybHksIEdldEFycmF5TGVuZ3RoIGFuZCBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldCBub3cgY2FuIGVpdGhlciByZXR1cm4gYW4gSW50MzIgb3IgYSBsYXJnZXIgbnVtYmVyLgor
ICAgICAgICAgICAgSSBhbHNvIGhhZCB0byBzcGxpdCB0aGVtIGluIHRoZSBERkcvRlRMLCBzZWUg
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgYW5kIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJ
bnQ1MiBmb3IgZXhhbXBsZXMKKyAgICAgICAgLSBJbiB0dXJucywgSSBoYWQgdG8gYWRkIENoZWNr
SW5Cb3VuZHNJbnQ1MiBzaW5jZSBDaGVja0luQm91bmRzIGNvdWxkIG5vdCBhY2NlcHQgdGhlIHJl
c3VsdCBvZiBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MgorICAgICAgICAtIEkgbW9kaWZpZWQg
dGhlIHJ1bnRpbWUgZnVuY3Rpb25zIGZvciBHZXRCeVZhbC9QdXRCeVZhbC9EYXRhVmlld0dldC9E
YXRhVmlld1NldC9BdG9taWNzWFhYIHRvIGFjY2VwdCBub24tSW50MzIgaW5kaWNlcywgc2luY2Ug
Zm9yIHtJbnQ4L1VJbnQ4L1VJbnQ4Q2xhbXBlZH1BcnJheSwgYSBtYXhpbXVtIHNpemUgb2YgNEdC
IGltcGxpZXMgaW5kaWNlcyA+IDJCLgorICAgICAgICAtIEkgYWRkZWQgYSAibWF5QmVMYXJnZVR5
cGVkQXJyYXkiIGJpdCB0byBBcnJheVByb2ZpbGUvVW5saW5rZWRBcnJheVByb2ZpbGUvREZHOjpB
cnJheU1vZGUgdG8gdHJhY2sgd2hldGhlciBzdWNoIGEgbm9uLUludDMyIGluZGV4IHdhcyBzZWVu
IHRvIGFsbG93IHByb3BlciBzcGVjdWxhdGlvbiBhbmQgc3BlY2lhbGl6YXRpb24gb2YgZmFzdCBw
YXRocyBpbiB0aGUgREZHL0ZUTC4KKyAgICAgICAgICAgIEkgdGhlbiB1cGRhdGVkIHRoZSBydW50
aW1lIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzbG93IHBhdGhzIHRvIGNvcnJlY3RseSB1cGRhdGUg
aXQuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSBJIHJhbiBvdXQgb2YgdGltZSB0byBhZGQgYWxs
IHRoZSBzcGVjdWxhdGlvbnMvdXBkYXRlIGFsbCB0aGUgZmFzdCBwYXRocy4KKyAgICAgICAgU28g
dGhlIGZvbGxvd2luZyB3aWxsIGhhdmUgdG8gd2FpdCBmb3IgYSBmb2xsb3ctdXAgcGF0Y2g6Cisg
ICAgICAgIC0gQWNjZXB0aW5nIGxhcmdlIGluZGljZXMgaW4gdGhlIGZhc3QgcGF0aCBvZiBHZXRC
eVZhbCBpbiB0aGUgTExJbnQKKyAgICAgICAgLSBBY2NlcHRpbmcgbGFyZ2UgaW5kaWNlcyBpbiB0
aGUgZmFzdCBwYXRocyBnZW5lcmF0ZWQgYnkgQWNjZXNzQ2FzZS9Qb2x5bW9ycGhpY0FjY2Vzcwor
ICAgICAgICAtIEFjY2VwdGluZyBsYXJnZSBpbmRpY2VzIGluIHRoZSBmYXN0IHBhdGhzIGdlbmVy
YXRlZCBieSB0aGUgREZHL0ZUTCBmb3IgZWFjaCBvZiBHZXRCeVZhbC9QdXRCeVZhbC9EYXRhVmll
d0dldC9EYXRhVmlld1NldC9BdG9taWNzWFhYCisKKyAgICAgICAgVGhlIGN1cnJlbnQgcGF0Y2gg
aXMgZnVuY3Rpb25hbCwgaXQgd2lsbCBqdXN0IGhhdmUgZHJlYWRmdWwgcGVyZm9ybWFuY2UgaWYg
dHJ5aW5nIHRvIHVzZSBpbmRpY2VzID4yQiBpbiBhIHtJbnQ4L1VJbnQ4L1VJbnQ4Q2xhbXBlZH1B
cnJheS4KKworICAgICAgICBPdGhlciBtaW5vciBjaGFuZ2VzIGluIHRoaXMgcGF0Y2g6CisgICAg
ICAgIC0gRml4ZWQgYW4gdW5kZWZpbmVkIGJlaGF2aW9yIGluIEFycmF5QnVmZmVyOjpjcmVhdGVJ
bnRlcm5hbCB3aGVyZSBtZW1jcHkgY291bGQgYmUgY2FsbGVkIG9uIG51bGxwdHIgKHRoZSBzcGVj
IGV4cGxpY2l0bHkgYmFucyB0aGlzIGV2ZW4gd2hlbiBsZW5ndGggaXMgMCkKKyAgICAgICAgLSBS
ZXBsYWNlZCBzb21lIHJlcGV0aXRpdmUgYW5kIGVycm9yLXByb25lIGJvdW5kcyBjaGVja2luZyBi
eSBjYWxscyB0byBXVEY6OmlzU3VtU21hbGxlclRoYW5PckVxdWFsLCB3aGljaCBpcyBjbGVhcmVy
LCBzaG9ydGVyLCBhbmQgcmV1c2UgQ2hlY2tlZEFyaXRobWV0aWMgZmFjaWxpdGllcyB0byBhdm9p
ZCBvdmVyZmxvdyBpc3N1ZXMuCisgICAgICAgIC0gRml4ZWQgYSB2YXJpZXR5IG9mIG9ic29sZXRl
IGNvbW1lbnRzCisgICAgICAgIC0gQWRkZWQgc3VwcG9ydCBmb3IgYnJhbmNoNjQoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTY0IHJpZ2h0KQorICAgICAgICAg
ICAgKHRoZXJlIHdhcyBhbHJlYWR5IHN1cHBvcnQgZm9yIHRoZSBzYW1lIGJ1dCB3aXRoIFRydXN0
ZWRJbW02NCkKKyAgICAgICAgLSBNYWRlIHZhcmlvdXMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciBm
dW5jdGlvbiBjb25zdGV4cHIgYXMgcGFydCBvZiB0aGUgcHJldmlvdXMgcG9pbnQKKworICAgICAg
ICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyOjpUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpT
Qzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cjo6YXNJbnRwdHIpOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyOjphc1B0cik6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkltbVB0cjo6SW1tUHRyKToK
KyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyOjphc1RydXN0ZWRJ
bW1QdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzI6OlRydXN0ZWRJbW0zMik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OkltbTMyOjpJbW0zMik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6Oklt
bTMyOjphc1RydXN0ZWRJbW0zMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW02NDo6VHJ1c3RlZEltbTY0KToKKyAgICAgICAgKEpTQzo6QWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjo6SW1tNjQ6OkltbTY0KToKKyAgICAgICAgKEpTQzo6QWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjo6SW1tNjQ6OmFzVHJ1c3RlZEltbTY0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6Y2FuQmxpbmQpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpicmFuY2g2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c2hvdWxkQmxpbmRGb3JT
cGVjaWZpY0FyY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2g2
NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjp1bnRhZ0FycmF5UHRyTGVuZ3RoNjQpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdBcnJheVB0ckxlbmd0aDMyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbkJsaW5kKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmls
ZS5oOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OnNldE1heUJlTGFyZ2VUeXBlZEFycmF5
KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjptYXlCZUxhcmdlVHlwZWRBcnJheSBjb25z
dCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQXJyYXlQcm9maWxlOjpVbmxpbmtlZEFycmF5UHJv
ZmlsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQXJyYXlQcm9maWxlOjp1cGRhdGUpOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6cmVmaW5lIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpBcnJheU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OkFycmF5TW9kZTo6bWF5QmVMYXJnZVR5cGVkQXJyYXkgY29uc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6d2l0aFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6d2l0aFNwZWN1bGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1v
ZGU6OndpdGhDb252ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6
OndpdGhUeXBlQW5kQ29udmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlN
b2RlOjp3aXRoQXJyYXlDbGFzc0FuZFNwZWN1bGF0aW9uQW5kTWF5QmVMYXJnZVR5cGVkQXJyYXkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6c3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9t
UHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmls
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpvcGVyYXRvcj09IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhBcnJheUNsYXNzIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAg
ICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6
CisgICAgICAgICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAoSlNDOjpERkc6OmVuYWJsZUlu
dDUyKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNvbnZlcnRU
b0dldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpwcmVwZW5k
R2V0QXJyYXlMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHZW5lcmF0aW9uSW5m
by5oOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24uY3BwOgorICAgICAgICAoV1RGOjpw
cmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmg6CisgICAgICAg
ICogZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1N0b3JhZ2VDaGlsZCBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3RvcmFnZUNoaWxkSW5kZXgpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR05v
ZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OnB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5V2l0aFNp
emUpOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTU0FMb3dlcmluZ1BoYXNlOjpoYW5kbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTU0FMb3dlcmluZ1BoYXNlOjpsb3dlckJvdW5kc0NoZWNrKToKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5k
c0NoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsT25JbnRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFy
cmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJyYXlT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhhc2U6
OmlkZW50aWZ5UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudEFycmF5Q2hlY2tzKToKKyAg
ICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojp2YWxpZGF0ZUFJU3RhdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVt
aXRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlw
ZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdE5ld1R5
cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQuaDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ2NE5vbk5lZ2F0aXZlKToKKyAgICAgICAgKiBq
aXQvSW50cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpnZXRCeVZh
bCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwp
OgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyk6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMp
OgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
cjo6Y3JlYXRlQWRvcHRlZCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGVGcm9t
Qnl0ZXMpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAgICAgICAg
KEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpjcmVhdGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyOjpjbGFt
cFZhbHVlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXggY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFycmF5QnVm
ZmVyQ29udGVudHM6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXI6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6Z2NTaXpl
RXN0aW1hdGVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmll
dy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJh
eUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZl
clZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6
OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZp
ZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3
OjpjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJW
aWV3OjpzZXRJbXBsKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUlt
cGwpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCk6CisgICAg
ICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCk6CisgICAgICAgIChKU0M6
OkFycmF5QnVmZmVyVmlldzo6Y2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRGF0
YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpEYXRhVmlldzo6RGF0YVZpZXcpOgorICAgICAgICAo
SlNDOjpEYXRhVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGFWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcpOgorICAgICAg
ICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxp
emVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpzdWJhcnJheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpD
b25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkpT
QXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OnNp
emVPZik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6bGVu
Z3RoIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvSW5kZXggY29uc3QpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjp0b1R5cGVkQXJyYXlJbmRleCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6
OkpTRGF0YVZpZXc6OnNldCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnNldEluZGV4KToK
KyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXREYXRhKToKKyAgICAgICAgKEpT
Qzo6c2V0RGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlV2l0aEZhc3RWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUpOgor
ICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRC
eUluZGV4SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyeUdldEluZGV4UXVpY2ts
eSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cnlTZXRJbmRleFF1aWNrbHkpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5kZXhRdWlja2x5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpzZXRJbmRleFF1aWNrbHlGb3JBcnJheVN0b3JhZ2VJbmRleGluZ1R5cGUpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6dHJ5U2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWxXaXRoSW5kZXgpOgorICAgICAgICAqIHdhc20vV2FzbVBhZ2VDb3VudC5o
OgorCiAyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2ZXJ0IHIyODQyMzAsIG15IGxhc3QgZml4ZXMgdG8gdGhlIHdhdGNoIGJ1aWxk
IG1ha2UgaXQgYnJlYWsgdGVzdHMKQEAgLTI1NCw3ICs1MjYsNyBAQAogICAgICAgICBSZXZpZXdl
ZCBieSBZdXN1a2UgU3V6dWtpLgogCiAgICAgICAgIFdoaWxlIGluY3JlYXNpbmcgTUFYX0FSUkFZ
X0JVRkZFUl9TSVpFIHRvIDRHQiB3YXMgZWFzeSwgaXQgd2FzIG5vdCByZW1vdGVseSB0aGUgb25s
eSB0aGluZyByZXF1aXJlZCB0byBnZXQgdGhpcyB0byB3b3JrOgotICAgICAgICAtIDRHQiBpcyBu
b3QgcmVwcmVzZW50YWJsZSBpbiBhIHVpbnQzMl90LCBzbyBJIGNoYW5nZWQgYWxsIGxlbmd0aCBv
ZiBBcnJheUJ1ZmZlci9UeXBlZEFycmF5L2V0Yy4uIHRvIGJlaW5nIFVDUFVSZWdpc3Rlci4KKyAg
ICAgICAgLSA0R0IgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gYSB1aW50MzJfdCwgc28gSSBjaGFu
Z2VkIGFsbCBsZW5ndGggb2YgQXJyYXlCdWZmZXIvVHlwZWRBcnJheS9ldGMuLiB0byBiZWluZyBz
aXplX3QuCiAgICAgICAgIC0gVGhpcyBhbHNvIHJlcXVpcmVkIGNoYW5naW5nIE5ld1R5cGVkQXJy
YXkgaW4gYWxsIG9mIExMSW50L0Jhc2VsaW5lL0RGRy9GVEwgdG8gYWNjZXB0IGEgbm9uLWludDMy
IHNpemUuCiAgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBwZXJmb3JtYW5jZSByZWdyZXNz
aW9ucywgSSBoYWQgdG8gYWRkIHNwZWN1bGF0aW9uIGluIHRoZSBERkcvRlRMLCB3aGljaCBub3cg
aGF2ZSB0d28gdmVyc2lvbnMgb2YgTmV3VHlwZWRBcnJheSAob25lIHRoYXQgdGFrZXMgYW4gSW50
MzIgYW5kIG9uZSB0aGF0IHRha2VzIGEgU3RyaWN0SW50NTIpCiAgICAgICAgIC0gU2ltaWxhcmx5
LCBHZXRBcnJheUxlbmd0aCBhbmQgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQgbm93IGNhbiBlaXRo
ZXIgcmV0dXJuIGFuIEludDMyIG9yIGEgbGFyZ2VyIG51bWJlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3Bw
CmluZGV4IGRjYzllNTkyMzFjZi4uNTVmZDc1ZjQ5NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaAppbmRleCBkN2FhMGI3YmM5YWMuLjkzZWIzYmZlMjA3OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKQEAgLTI2NSw5ICsyNjUsOSBAQCBwdWJsaWM6CiAgICAgLy8gaW4gYSBjbGFzcyByZXF1
aXJpbmcgZXhwbGljaXQgY29uc3RydWN0aW9uIGluIG9yZGVyIHRvIGRpZmZlcmVudGlhdGUKICAg
ICAvLyBmcm9tIHBvaW50ZXJzIHVzZWQgYXMgYWJzb2x1dGUgYWRkcmVzc2VzIHRvIG1lbW9yeSBv
cGVyYXRpb25zCiAgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3RlZEltbSB7
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHIoKSB7IH0KKyAgICAgICAgY29uc3RleHByIFRydXN0ZWRJ
bW1QdHIoKSB7IH0KICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoY29u
c3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUcnVzdGVkSW1tUHRy
KGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgICAg
ICB7CiAgICAgICAgIH0KQEAgLTI3OCwyMSArMjc4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51bGxwdHJf
dCkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRy
X3QpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1Q
dHIoc2l6ZV90IHZhbHVlKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIgVHJ1c3RlZEltbVB0
cihzaXplX3QgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4odmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnRwdHJfdCBh
c0ludHB0cigpCisgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBhc0ludHB0cigpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX3ZhbHVl
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGFzUHRyKCkKKyAgICAgICAgY29uc3RleHBy
IHZvaWQqIGFzUHRyKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
dm9pZCo+KG1fdmFsdWUpOwogICAgICAgICB9CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCBwdWJsaWM6
CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRyCiAgICAgewotICAg
ICAgICBleHBsaWNpdCBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0
ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRydXN0ZWRJ
bW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgY29uc3Rl
eHByIFRydXN0ZWRJbW1QdHIgYXNUcnVzdGVkSW1tUHRyKCkgeyByZXR1cm4gKnRoaXM7IH0KICAg
ICB9OwogCiAgICAgLy8gVHJ1c3RlZEltbTMyOgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJ
bW0zMihUcnVzdGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0
ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJ
bnRwdHIoKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMzYsMTcgKzMzNiwxNyBAQCBwdWJs
aWM6CiAKIAogICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsKLSAgICAg
ICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3Rl
eHByIEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMih2YWx1
ZSkKICAgICAgICAgewogICAgICAgICB9CiAjaWYgIUNQVShYODZfNjQpCi0gICAgICAgIGV4cGxp
Y2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQorICAgICAgICBleHBsaWNpdCBjb25zdGV4cHIg
SW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMihwdHIp
CiAgICAgICAgIHsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNvbnN0IFRydXN0ZWRJbW0z
MiYgYXNUcnVzdGVkSW1tMzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgICAgICBjb25z
dGV4cHIgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJu
ICp0aGlzOyB9CiAKICAgICB9OwogICAgIApAQCAtMzU3LDE1ICszNTcsMTUgQEAgcHVibGljOgog
ICAgIC8vICh3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgYW4gZW51bSkgZnJvbSBhY2NpZGVudGFs
bHkgYmVpbmcgcGFzc2VkIGFzCiAgICAgLy8gaW1tZWRpYXRlIHZhbHVlcy4KICAgICBzdHJ1Y3Qg
VHJ1c3RlZEltbTY0IDogVHJ1c3RlZEltbSB7Ci0gICAgICAgIFRydXN0ZWRJbW02NCgpIHsgfQor
ICAgICAgICBjb25zdGV4cHIgVHJ1c3RlZEltbTY0KCkgeyB9CiAgICAgICAgIAotICAgICAgICBl
eHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29u
c3RleHByIFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVl
KHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVz
dGVkSW1tUHRyIHB0cikKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIFRydXN0ZWRJbW02NChU
cnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkK
ICAgICAgICAgewogICAgICAgICB9CkBAIC0zNzYsMTcgKzM3NiwxNyBAQCBwdWJsaWM6CiAKICAg
ICBzdHJ1Y3QgSW1tNjQgOiBwcml2YXRlIFRydXN0ZWRJbW02NAogICAgIHsKLSAgICAgICAgZXhw
bGljaXQgSW1tNjQoaW50NjRfdCB2YWx1ZSkKKyAgICAgICAgZXhwbGljaXQgY29uc3RleHByIElt
bTY0KGludDY0X3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2YWx1ZSkKICAg
ICAgICAgewogICAgICAgICB9CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUo
UklTQ1Y2NCkKLSAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpCisgICAg
ICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAg
ICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewogICAgICAgICB9CiAjZW5kaWYKLSAg
ICAgICAgY29uc3QgVHJ1c3RlZEltbTY0JiBhc1RydXN0ZWRJbW02NCgpIGNvbnN0IHsgcmV0dXJu
ICp0aGlzOyB9CisgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3Rl
ZEltbTY0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICB9OwogICAgIAogICAgIC8vIFNl
Y3Rpb24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtMTA1Myw5ICsx
MDUzLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
ICAgICAgICAgcmV0dXJuIGZpcnN0UmVnaXN0ZXIoKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wg
Y2FuQmxpbmQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5k
Rm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBi
b29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90KSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVp
bnQzMl90KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAg
IGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFi
ZWxQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgKaW5kZXggMDFlNDhhMTFiYmIwLi40MTMyMzAyZjhhODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzOSw2ICsxMzks
OSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsK
ICNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUo
TUlQUykgfHwgQ1BVKFJJU0NWNjQpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFu
Y2hQdHI7CisjZW5kaWYKKyNpZiBDUFUoWDg2XzY0KQorICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
QmFzZTo6YnJhbmNoNjQ7CiAjZW5kaWYKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJy
YW5jaFN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bHNoaWZ0MzI7CkBAIC0x
NDYwLDYgKzE0NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYW5k
NjQoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgIH0KKwogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAKICNpZiAhQ1BVKFg4NikgJiYgIUNQVShYODZfNjQpICYmICFDUFUoQVJNNjQp
CkBAIC0xNzI3LDcgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTY0KGltbS5h
c1RydXN0ZWRJbW02NCgpLCBkZXN0KTsKICAgICB9CiAKLSNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUo
UklTQ1Y2NCkKICAgICAKICAgICB2b2lkIHN0b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CiAgICAgewpAQCAtMTgyMSw2ICsxODI1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJy
YW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCkpOwogICAgIH0KIAorI2lm
IENQVShYODZfNjQpCisgICAgLy8gT3RoZXIgNjQtYml0IHBsYXRmb3JtcyBkb24ndCBuZWVkIGJs
aW5kaW5nLCBhbmQgaGF2ZSBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uLCBSZWdpc3RlcklE
LCBJbW02NCkgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAvLyBXZSBj
YW5ub3QgcHV0IHRoaXMgaW4gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCwgYmVjYXVzZSBpdCB1c2Vz
IHNob3VsZEJsaW5kKCksIGxvYWRSb2F0aW9uQmxpbmRlZENvbnN0YW50LCBldGMuLiB3aGljaCBh
cmUgb25seSBkZWZpbmVkIGhlcmUgYW5kIG5vdCB0aGVyZS4KKyAgICBKdW1wIGJyYW5jaDY0KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW02NCByaWdodCkKKyAg
ICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmICho
YXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRS
b3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQocmlnaHQpLCBzY3Jh
dGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNo
NjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzY3JhdGNoIHJlZ2lzdGVy
IGF2YWlsYWJsZSBmb3IgdXNlLCB3ZSdsbCBqdXN0CisgICAgICAgICAgICAvLyBwbGFjZSBhIHJh
bmRvbSBudW1iZXIgb2Ygbm9wcy4KKyAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFu
ZG9tKCkgJiAzOworICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCisgICAgICAgICAgICAg
ICAgbm9wKCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQu
YXNUcnVzdGVkSW1tNjQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKyNlbmRpZiAvLyBDUFUo
WDg2XzY0KQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDVmOThmZjllMzM3
Yy4uODU3NDA1NWM5YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gQVJNNjRSZWdp
c3RlcnM6OmxyOwogCiAgICAgLy8gRklYTUU6IEdldCByZWFzb25hYmxlIGltcGxlbWVudGF0aW9u
cyBmb3IgdGhlc2UKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1
aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRp
YyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVy
biB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3Vs
ZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAw
eDAwZmZmZmZmOyB9CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIHNob3VsZEJsaW5kRm9yU3Bl
Y2lmaWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9
CiAKICAgICAvLyBJbnRlZ2VyIG9wZXJhdGlvbnM6CiAKQEAgLTMzMDUsNiArMzMwNSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAor
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxl
ZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTY0KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoNjQo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQp
CiAgICAgewogICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAyNDcwYzExOTY2MWIuLjA3NGEz
OThmODgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMTMyLDEwICsxMzIsMTAgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFnQXJyYXlQdHJMZW5n
dGgzMihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJnZXQsIGJvb2wgdmFsaWRhdGVBdXRo
KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5UHRyTGVuZ3RoNjQoQWRkcmVzcyBs
ZW5ndGgsIFJlZ2lzdGVySUQgdGFyZ2V0LCBib29sIHZhbGlkYXRlQXV0aCkKICAgICB7CiAgICAg
ICAgIGF1dG8gbGVuZ3RoR1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpOwotICAgICAgICBsb2FkMzIobGVuZ3RoLCBsZW5ndGhHUFIpOworICAgICAgICBsb2Fk
NjQobGVuZ3RoLCBsZW5ndGhHUFIpOwogICAgICAgICBhdXRvIHNjcmF0Y2ggPSB2YWxpZGF0ZUF1
dGggPyBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSA6IEludmFs
aWRHUFJSZWc7IAogICAgICAgICB1bnRhZ0FycmF5UHRyKGxlbmd0aEdQUiwgdGFyZ2V0LCB2YWxp
ZGF0ZUF1dGgsIHNjcmF0Y2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBlNjYxMDBi
YTJlNDcuLjNmYWJjNGQ4OTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMTA4LDkgKzEwOCw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc3RhY2tQb2ludGVy
UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lz
dGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICAKLSAg
ICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPj0gMHgwMGZmZmZmZjsgfQotICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lm
aWNBcmNoKHVpbnQ2NF90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+PSAweDAwZmZmZmZmOyB9Cisg
ICAgc3RhdGljIGJvb2wgY29uc3RleHByIGNhbkJsaW5kKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHN0YXRpYyBib29sIGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJf
dCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQorICAgIHN0YXRpYyBib29s
IGNvbnN0ZXhwciBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQogCiAgICAgLy8gSW50ZWdlciBhcml0aG1ldGlj
IG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAppbmRleCAzOTc5OTJhM2E3NTAuLjEzMjUwZWM0ODQyZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDg2LDcgKzQ4
Niw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBjYXNl
IEN1c3RvbUFjY2Vzc29yR2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CiAgICAg
Y2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKLSAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAg
ICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgogICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJh
bmQ6CkBAIC01MjksNiArNTI4LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIo
KSBjb25zdAogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJTdG9yZToKICAgICBjYXNl
IEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMlN0b3JlOgogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlGbG9hdDY0U3RvcmU6CisgICAgLy8gVXNlZCBieSBUeXBlZEFycmF5TGVuZ3RoL1R5cGVkQXJy
YXlCeXRlT2Zmc2V0IGluIHRoZSBwcm9jZXNzIG9mIGJveGluZyB0aGVpciByZXN1bHQgYXMgYSBk
b3VibGUKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTg0LDEyICsxMTg1
LDE3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAKICAgICAgICAgR1BS
UmVnIHByb3BlcnR5R1BSID0gc3RhdGUudS5wcm9wZXJ0eUdQUjsKIAotICAgICAgICAKICAgICAg
ICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSkpOwogCi0g
ICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0YXRl
LmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9y
RXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOworICAgICAgICBqaXQuc2lnbkV4
dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOworI2lmIFVTRShMQVJHRV9UWVBF
RF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBzaXplX3QsIHNvIGVpdGhlciAz
MiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisgICAgICAgIHN0YXRlLmZh
aWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2Vsc2UKKyAgICAgICAgc3RhdGUu
ZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JF
cXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0aCkpOworI2VuZGlmCiAKICAgICAgICAg
YXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVsdFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRj
aEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNj
cmF0Y2hHUFIoKTsKQEAgLTExOTcsOSArMTIwMywxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZl
ZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJz
QnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4
dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJB
WVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNl
bHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09mTGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNl
bmRpZgogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzY3JhdGNoMkdQUik7CiAgICAg
ICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNj
cmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBmYWxzZSk7Ci0KICAgICAgICAgaml0
LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaWYg
KGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7
CkBAIC0xNTk1LDkgKzE2MDUsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCgKICAgICAgICAgICAgIHJlYWR5LmxpbmsoJmppdCk7CiAgICAgICAgIH0KIAotICAgICAgICBq
aXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAvLyBPdXRPZkJvdW5k
cyBiaXQgb2YgQXJyYXlQcm9maWxlIHdpbGwgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24gZnVuY3Rp
b24uCi0gICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLCBzY3JhdGNoR1BSKSk7CisgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzT2ZMZW5ndGggPSBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpOwor
ICAgICAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIocHJvcGVydHlHUFIsIHNjcmF0Y2hHUFIpOwor
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIFRoZSBsZW5ndGggaXMgYSBV
Q1BVUmVnaXN0ZXIsIHNvIGVpdGhlciAzMiBvciA2NCBiaXRzIGRlcGVuZGluZyBvbiB0aGUgcGxh
dGZvcm0uCisgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuYnJhbmNoNjQo
Q0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2hHUFIsIGFkZHJlc3NPZkxlbmd0aCkp
OworI2Vsc2UKKyAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5icmFuY2gz
MihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlHUFIsIGFkZHJlc3NPZkxlbmd0
aCkpOworI2VuZGlmCiAKICAgICAgICAgYXV0byBhbGxvY2F0b3IgPSBzdGF0ZS5tYWtlRGVmYXVs
dFNjcmF0Y2hBbGxvY2F0b3Ioc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQ
UiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTE2MDUsOSArMTYyMCwxMyBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0gYWxsb2NhdG9y
LnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKAogICAgICAgICAgICAgaml0LCBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAor
I2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzc09m
TGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgIGppdC5sb2FkMzIoYWRkcmVzc09m
TGVuZ3RoLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9y
KCkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFn
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BS
LCBmYWxzZSk7Ci0KICAgICAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHByb3BlcnR5R1BSLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKSB7CiAgICAgICAgICAgICBpZiAo
aXNDbGFtcGVkKHR5cGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgKaW5kZXggNjkxNjc5NDg0M2IwLi4zNmZlYjE0NGJhZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgVW5saW5rZWRBcnJheVByb2ZpbGU7CiAKIC8vIFRoaXMgaXMgYSBiaXRmaWVsZCB3
aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRoYXQgd2Ug
aGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNlIHRoZSBs
b3dlciBiaXRzLgotLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlwZXMgdGFraW5nIHRoZSBi
aXRzIDE2IHRvIDI1LgorLy8gVGhlcmUgYXJlIDExIHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0
aGUgYml0cyAxNi0yMCBhbmQgMjYtMzEuCiB0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9kZXM7CiAK
IC8vIFRoZSBwb3NzaWJsZSBJbmRleGluZ1R5cGVzIGFyZSBsaW1pdGVkIHdpdGhpbiAoMCAtIDE2
LCAyMSwgMjMsIDI1KS4KQEAgLTIwNSw3ICsyMDUsMTUgQEAgcHVibGljOgogICAgICAgICAsIG1f
ZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAorCisj
aWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90
IHNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCk7CisgICAgdm9pZCBzZXRNYXlCZUxhcmdlVHlwZWRBcnJheSgpIHsgbV9tYXlCZUxh
cmdlVHlwZWRBcnJheSA9IHRydWU7IH0KKyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5QmVMYXJnZVR5cGVk
QXJyYXk7IH0KKyNlbHNlCisgICAgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheShjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBT
dHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xh
c3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVz
KCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09m
TWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjQ0LDYg
KzI1Miw5IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlE
IHsgMCB9OwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRoaXMgZmxh
ZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0
aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBv
biBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBv
bmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxh
ZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAg
Ym9vbCBtX291dE9mQm91bmRzIHsgZmFsc2UgfTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlT
KQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSB7IGZhbHNlIH07CisjZW5kaWYKICAg
ICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDogMTsKICAgICBib29sIG1fdXNl
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29sIG1fZGlkUGVyZm9ybUZpcnN0
UnVuUHJ1bmluZyA6IDE7CkBAIC0yNTMsNyArMjY0LDEzIEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiBjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CiBw
dWJsaWM6Ci0gICAgVW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGlj
aXQgVW5saW5rZWRBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1fdXNlc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVzKHRydWUpCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgLCBt
X21heUJlTGFyZ2VUeXBlZEFycmF5KGZhbHNlKQorI2VuZGlmCisgICAgeworICAgIH0KIAogICAg
IHZvaWQgdXBkYXRlKEFycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlKQogICAgIHsKQEAgLTI4MCw2
ICsyOTcsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1fdXNlc09yaWdp
bmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJyYXlQcm9maWxlLm1fdXNlc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVzOworCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAg
aWYgKG1fbWF5QmVMYXJnZVR5cGVkQXJyYXkpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9t
YXlCZUxhcmdlVHlwZWRBcnJheSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1f
bWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBhcnJheVByb2ZpbGUubV9tYXlCZUxhcmdlVHlwZWRBcnJh
eTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5MCw3ICszMTQsMTEgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9vdXRP
ZkJvdW5kcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyB7IHRy
dWUgfTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKKyNpZiBV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGJvb2wgbV9tYXlCZUxhcmdlVHlwZWRBcnJheSA6
IDE7CisjZW5kaWYKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEFycmF5UHJvZmls
ZSkgPD0gOCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDJi
MmY1ZTAzMDE5Zi4uYTFjZDY5OTQ0YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNDYzLDcg
KzM0NjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZv
bGRhYmxlVmlldygKICAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUs
IG5vZGUtPmFycmF5TW9kZSgpKTsKLSAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgaWYgKHZp
ZXcgJiYgaXNJbkJvdW5kczxpbnQzMl90Pih2aWV3LT5sZW5ndGgoKSkpIHsKICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ3MSw2ICszNDcxLDE3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dy
YXBoLnRyeUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdmFsdWUsIG5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZpZXctPmxlbmd0aCgpKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5v
ZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBHZXRWZWN0b3JMZW5ndGg6IHsKICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKQEAgLTM3OTYsOCArMzgwNyw4IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDog
ewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFi
bGVWaWV3KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpOwogICAgICAgICBpZiAodmll
dykgewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZp
ZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKLSAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0
KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZU9mZnNldCA9IHZpZXct
PmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0ICYm
IGlzSW5Cb3VuZHM8aW50MzJfdD4oYnl0ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc051bWJlcigqYnl0ZU9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMzgwNiw2ICszODE3LDE5IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0g
bV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1
ZSk7CisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAg
ICAgIGlmIChieXRlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0ludDUyQW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRQcm90b3R5
cGVPZjogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAtNDEwOSw2
ICs0MTMzLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQor
ICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOiB7CisgICAgICAgIC8vIFNlZSB0aGUgQ2hlY2tJ
bkJvdW5kcyBjYXNlLCBpdCBkb2VzIG5vdCByZWFsbHkgbWF0dGVyIHdoYXQgd2UgcHV0IGhlcmUu
CisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKICAgICBj
YXNlIFNldFByaXZhdGVCcmFuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZlMjc1MzEwNGJk
My4uYTNiOTM0MGY2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTMyNSw2ICszMjUsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEo
KSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBub2RlIGlzIG9ubHkgdXNlZCBmb3IgVHlwZWRBcnJheXMsIHNvIHNob3VsZCBub3QgYmUg
cmVsZXZhbnQgZm9yIGFyZ3VtZW50cyBlbGltaW5hdGlvbgorICAgICAgICAgICAgICAgICAgICBl
c2NhcGUobm9kZS0+Y2hpbGQyKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KwogICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7CiAgICAgICAgICAg
ICAgICAgICAgIEJpdFZlY3RvciogYml0VmVjdG9yID0gbm9kZS0+Yml0VmVjdG9yKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCA9
IG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKTsgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKaW5kZXggNmU0ZmU5YWZhM2Vi
Li43MjU4ZTM3MTU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZpbmUoCiAg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZvcmNlRXhpdCwgYWN0aW9uKCkpOwogICAg
IH0KICAgICAKLSAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleCkpCisgICAgaWYgKCFp
c0ludDMyU3BlY3VsYXRpb24oaW5kZXgpICYmICFtYXlCZUxhcmdlVHlwZWRBcnJheSgpKQogICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBhY3Rpb24oKSk7CiAgICAgCiAg
ICAgLy8gSWYgd2UgaGFkIGV4aXRlZCBiZWNhdXNlIG9mIGFuIGV4b3RpYyBvYmplY3QgYmVoYXZp
b3IsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNwZWNpYWxpemUuCkBAIC0yOTQsNiArMjk0LDggQEAgQXJy
YXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKAogICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToK
ICAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFycmF5OgogICAgIGNhc2UgQXJyYXk6OkJpZ1VpbnQ2
NEFycmF5OgorICAgICAgICAvLyBGSVhNRTogbm8gaWRlYSB3aHkgd2Ugb25seSBwcmVzZXJ2ZSB0
aGlzIG91dC1vZi1ib3VuZHMgaW5mb3JtYXRpb24gZm9yIFB1dEJ5VmFsIGFuZCBub3QgR2V0QnlW
YWwgYXMgd2VsbC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTI3NgogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkgewogICAg
ICAgICAgICAgaWYgKGdyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3V0
T2ZCb3VuZHMpIHx8ICFpc0luQm91bmRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVk
QXJyYXlSZXN1bHQod2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKaW5kZXggYTAyNmFhZDE4OTNiLi5kZjc1
Yzc4OTBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAt
MTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0g
QXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFycmF5OjpB
c0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gQXJyYXk6OldyaXRlOworICAgICAgICB1
LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAg
ZXhwbGljaXQgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpBY3Rpb24gYWN0aW9u
KQpAQCAtMTM2LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0
aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IEFy
cmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0gYWN0aW9uOworICAgICAgICB1
LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAg
QXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbikKQEAgLTE0NSwxNSArMTQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAg
dS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwogICAgICAgICB1LmFzQnl0
ZXMuY29udmVyc2lvbiA9IEFycmF5OjpBc0lzOwogICAgICAgICB1LmFzQnl0ZXMuYWN0aW9uID0g
YWN0aW9uOworICAgICAgICB1LmFzQnl0ZXMubWF5QmVMYXJnZVR5cGVkQXJyYXkgPSBmYWxzZTsK
ICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlKEFycmF5OjpUeXBlIHR5cGUsIEFycmF5OjpDbGFz
cyBhcnJheUNsYXNzLCBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24sIEFycmF5OjpDb252
ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQorICAgIEFycmF5TW9kZShB
cnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJyYXk6OlNwZWN1bGF0
aW9uIHNwZWN1bGF0aW9uLCBBcnJheTo6Q29udmVyc2lvbiBjb252ZXJzaW9uLCBBcnJheTo6QWN0
aW9uIGFjdGlvbiwgYm9vbCBtYXlCZUxhcmdlVHlwZWRBcnJheSA9IGZhbHNlKQogICAgIHsKICAg
ICAgICAgdS5hc0J5dGVzLnR5cGUgPSB0eXBlOwogICAgICAgICB1LmFzQnl0ZXMuYXJyYXlDbGFz
cyA9IGFycmF5Q2xhc3M7CiAgICAgICAgIHUuYXNCeXRlcy5zcGVjdWxhdGlvbiA9IHNwZWN1bGF0
aW9uOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAgICAg
IHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxhcmdl
VHlwZWRBcnJheSA9IG1heUJlTGFyZ2VUeXBlZEFycmF5OwogICAgIH0KICAgICAKICAgICBBcnJh
eU1vZGUoQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3MsIEFycmF5OjpD
b252ZXJzaW9uIGNvbnZlcnNpb24sIEFycmF5OjpBY3Rpb24gYWN0aW9uKQpAQCAtMTYzLDYgKzE2
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5hc0J5dGVzLnNwZWN1bGF0aW9uID0gQXJyYXk6Oklu
Qm91bmRzOwogICAgICAgICB1LmFzQnl0ZXMuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CiAgICAg
ICAgIHUuYXNCeXRlcy5hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHUuYXNCeXRlcy5tYXlCZUxh
cmdlVHlwZWRBcnJheSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBBcnJheTo6VHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OlR5cGU+KHUuYXNCeXRlcy50eXBl
KTsgfQpAQCAtMTcwLDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBBcnJheTo6U3BlY3VsYXRpb24g
c3BlY3VsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTo6U3BlY3VsYXRp
b24+KHUuYXNCeXRlcy5zcGVjdWxhdGlvbik7IH0KICAgICBBcnJheTo6Q29udmVyc2lvbiBjb252
ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkNvbnZlcnNpb24+KHUu
YXNCeXRlcy5jb252ZXJzaW9uKTsgfQogICAgIEFycmF5OjpBY3Rpb24gYWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk6OkFjdGlvbj4odS5hc0J5dGVzLmFjdGlvbik7IH0K
KyAgICBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KCkgY29uc3QgeyByZXR1cm4gdS5hc0J5dGVz
Lm1heUJlTGFyZ2VUeXBlZEFycmF5OyB9CiAgICAgCiAgICAgdW5zaWduZWQgYXNXb3JkKCkgY29u
c3QgeyByZXR1cm4gdS5hc1dvcmQ7IH0KICAgICAKQEAgLTE3OSwzNSArMTg1LDUwIEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBt
YWtlU2FmZSk7Ci0gICAgCisKKyAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlw
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpLCBtYXlCZUxhcmdlVHlw
ZWRBcnJheSgpKTsKKyAgICB9CisKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFycmF5
OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBB
cnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9uKCks
IGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3Mo
KSwgc3BlY3VsYXRpb24sIGNvbnZlcnNpb24oKSwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBlZEFy
cmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aEFycmF5Q2xhc3MoQXJyYXk6
OkNsYXNzIGFycmF5Q2xhc3MpIGNvbnN0CisKKyAgICBBcnJheU1vZGUgd2l0aENvbnZlcnNpb24o
QXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9u
KCksIGFjdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xh
c3MoKSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbiwgYWN0aW9uKCksIG1heUJlTGFyZ2VUeXBl
ZEFycmF5KCkpOwogICAgIH0KLSAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKworICAgIEFycmF5TW9kZSB3aXRoVHlwZUFu
ZENvbnZlcnNpb24oQXJyYXk6OlR5cGUgdHlwZSwgQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lv
bikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVk
QXJyYXkoKSk7CisgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhBcnJheUNsYXNzQW5kU3BlY3Vs
YXRpb25BbmRNYXlCZUxhcmdlVHlwZWRBcnJheShBcnJheTo6Q2xhc3MgYXJyYXlDbGFzcywgQXJy
YXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9uLCBib29sIG1heUJlTGFyZ2VUeXBlZEFycmF5KSBj
b25zdAogICAgIHsKLSAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbiwg
Y29udmVyc2lvbigpLCBhY3Rpb24oKSwgbWF5QmVMYXJnZVR5cGVkQXJyYXkpOworICAgIH0KIAor
ICAgIHN0YXRpYyBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29s
IG1ha2VTYWZlKQorICAgIHsKICAgICAgICAgaWYgKG1ha2VTYWZlKQotICAgICAgICAgICAgbXlT
cGVjdWxhdGlvbiA9IEFycmF5OjpPdXRPZkJvdW5kczsKKyAgICAgICAgICAgIHJldHVybiBBcnJh
eTo6T3V0T2ZCb3VuZHM7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xl
KGxvY2tlcikpCi0gICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKKyAg
ICAgICAgICAgIHJldHVybiBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBB
cnJheTo6SW5Cb3VuZHM7CiAgICAgfQotICAgIAorCisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxh
dGlvbkZyb21Qcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVBy
b2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gd2l0aFNwZWN1bGF0aW9uKHNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxl
LCBtYWtlU2FmZSkpOworICAgIH0KKwogICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1h
a2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsK
LQogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT51
c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5lZml0c0Zyb21PcmlnaW5h
bEFycmF5KCkpIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMgPSBwcm9m
aWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKQEAgLTIyMSwyMyArMjQyLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Ci0gICAgfQot
ICAgIAotICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0eXBlKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0
aW9uKCksIGNvbnZlcnNpb24oKSwgYWN0aW9uKCkpOwotICAgIH0KLSAgICAKLSAgICBBcnJheU1v
ZGUgd2l0aENvbnZlcnNpb24oQXJyYXk6OkNvbnZlcnNpb24gY29udmVyc2lvbikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1
bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsKLSAgICB9Ci0gICAgCi0gICAgQXJyYXlN
b2RlIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6VHlwZSB0eXBlLCBBcnJheTo6Q29udmVy
c2lvbiBjb252ZXJzaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0
eXBlLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNpb24sIGFjdGlvbigpKTsK
KworICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24gPSBzcGVjdWxhdGlvbkZy
b21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworCisgICAgICAgIGJvb2wgbGFy
Z2VUeXBlZEFycmF5ID0gcHJvZmlsZS0+bWF5QmVMYXJnZVR5cGVkQXJyYXkobG9ja2VyKTsKKwor
ICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3NBbmRTcGVjdWxhdGlvbkFuZE1heUJlTGFyZ2VU
eXBlZEFycmF5KG15QXJyYXlDbGFzcywgc3BlY3VsYXRpb24sIGxhcmdlVHlwZWRBcnJheSk7CiAg
ICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgdW51c2VkSW5k
ZXhTcGVjdWxhdGVkVHlwZSA9IFNwZWNJbnQzMk9ubHk7CkBAIC01MjYsNyArNTM2LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQogICAgICAgICAgICAg
JiYgYXJyYXlDbGFzcygpID09IG90aGVyLmFycmF5Q2xhc3MoKQogICAgICAgICAgICAgJiYgc3Bl
Y3VsYXRpb24oKSA9PSBvdGhlci5zcGVjdWxhdGlvbigpCi0gICAgICAgICAgICAmJiBjb252ZXJz
aW9uKCkgPT0gb3RoZXIuY29udmVyc2lvbigpOworICAgICAgICAgICAgJiYgY29udmVyc2lvbigp
ID09IG90aGVyLmNvbnZlcnNpb24oKQorICAgICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJy
YXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlwZWRBcnJheSgpOwogICAgIH0KICAgICAKICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlNb2RlJiBvdGhlcikgY29uc3QKQEAgLTU3OSw3ICs1
OTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDhfdCBhcnJheUNsYXNzOwogICAgICAg
ICAgICAgdWludDhfdCBzcGVjdWxhdGlvbjsKICAgICAgICAgICAgIHVpbnQ4X3QgY29udmVyc2lv
biA6IDQ7Ci0gICAgICAgICAgICB1aW50OF90IGFjdGlvbiA6IDQ7CisgICAgICAgICAgICB1aW50
OF90IGFjdGlvbiA6IDE7CisgICAgICAgICAgICB1aW50OF90IG1heUJlTGFyZ2VUeXBlZEFycmF5
IDogMTsKICAgICAgICAgfSBhc0J5dGVzOwogICAgICAgICB1bnNpZ25lZCBhc1dvcmQ7CiAgICAg
fSB1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCBjODhkZTRiMjM5YzcuLmEwMGM4NTM3MDEwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4MDcsOCArMzgwNywxNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQs
IE9wZXJhbmQgcmVzdWx0LCBjb25zdCBETwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rv
cj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJl
c3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlWYXJpYW50JiB2YXJp
YW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQog
eworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgc3RhdGljX2Fzc2VydChlbmFibGVJ
bnQ1MigpKTsKKyNlbmRpZgorCiAgICAgc3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAg
ICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzogeworICAgICAgICBib29sIHdp
bGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQzMlNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKICAg
ICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5iZWdp
bigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKQEAgLTM4MjIsMjYgKzM4
MzEsMzAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgICAgIEFTU0VSVChhcnJh
eVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAotICAgICAgICBOb2RlKiBs
ZW5ndGhOb2RlID0gYWRkVG9HcmFwaChHZXRBcnJheUxlbmd0aCwgT3BJbmZvKEFycmF5TW9kZShh
cnJheVR5cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKTsKKyAgICAgICAgTm9k
ZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8gR2V0VHlwZWRB
cnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgTm9kZSogbGVuZ3Ro
Tm9kZSA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6
UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CiAgICAgICAgIC8vIE91ciBBcnJheU1vZGUgc2hv
dWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVyZSBzbyB3ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3
aXRob3V0IGVmZmVjdHMuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgYWRkVG9H
cmFwaChFeGl0T0spOwogCi0KICAgICAgICAgaWYgKCFsb2dTaXplKSB7CiAgICAgICAgICAgICBz
ZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gV2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlw
ZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKLSAgICAgICAgLy8gdGhhdCBv
dmVyZmxvd3MgaW50MzIuCi0gICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNO
dW1iZXIobG9nU2l6ZSkpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoQml0
TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5vZGUpKTsKKyAgICAgICAgLy8gV2UgY2Fubm90IHVz
ZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIG1heSBoYXZlIGEgYnl0ZUxl
bmd0aCB0aGF0IG92ZXJmbG93cyBJbnQzMi4KKyAgICAgICAgTm9kZSogdHlwZVNpemUgPSBqc0Nv
bnN0YW50KGpzTnVtYmVyKDEgPDwgbG9nU2l6ZSkpOworICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEFyaXRoTXVsLCBsZW5ndGhOb2RlLCB0eXBlU2l6ZSkpOwogCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAogICAgIGNhc2UgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYzogewor
ICAgICAgICBib29sIHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgPSAhaXNJbnQz
MlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAgICAgaW5zZXJ0
Q2hlY2tzKCk7CiAKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9ICgqdmFyaWFudC5zdHJ1
Y3R1cmVTZXQoKS5iZWdpbigpKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsK
QEAgLTM4NTMsMTMgKzM4NjYsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljR2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAg
ICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsKIAot
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJy
YXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKKyAg
ICAgICAgTm9kZVR5cGUgb3AgPSB3aWxsTmVlZEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyID8g
R2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTIgOiBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgc2V0
KHJlc3VsdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5cGUsIEFycmF5
OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICB9CiAKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOiB7CisgICAg
ICAgIGJvb2wgd2lsbE5lZWRHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTIgPSAhaXNJbnQz
MlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KTsKKyNpZiAhVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXRBc0ludDUyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgICAgIGlu
c2VydENoZWNrcygpOwogCiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSAoKnZhcmlhbnQu
c3RydWN0dXJlU2V0KCkuYmVnaW4oKSktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5
cGU7CkBAIC0zODcxLDcgKzM4OTAsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpYwogICAgICAg
ICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7CiAgICAgICAgIH0pOwog
Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQs
IE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlz
Tm9kZSkpOworICAgICAgICBOb2RlVHlwZSBvcCA9IHdpbGxOZWVkR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyID8gR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyIDogR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQ7CisgICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIE9wSW5m
byhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSkp
OwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYThkZDNmZGU5Nzc5Li45YWQ1YzI3MDIwZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUzLDYgKzE1Myw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgRW51bWVyYXRvckhhc093
blByb3BlcnR5OgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAg
ICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgICAgICBjYXNlIElu
QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0yMzksNiArMjQwLDcgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFRvQm9vbGVhbjoKICAgICBjYXNlIExv
Z2ljYWxOb3Q6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5k
c0ludDUyOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2Fz
ZSBJbnQ1MlJlcDoKQEAgLTEzMzcsNiArMTMzOSwxMSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVG
dQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLCBNaXNj
RmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJu
OwogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CisgICAgICAgIHJl
YWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVP
ZmZzZXRJbnQ1MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2Rl
KSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAg
ICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBBcnJh
eVVzZToKQEAgLTE0NDQsNiArMTQ1MSwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
ICAgICB9CiAgICAgfQogCisgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mjogewor
ICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtb2RlLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAgICAgICByZWFkKE1p
c2NGaWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlMZW5ndGhJbnQ1
MkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDogewogICAgICAg
ICBBcnJheU1vZGUgbW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOwogICAgICAgICBzd2l0Y2ggKG1v
ZGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAppbmRleCBjNjZm
YjIyMzlmOGYuLmFmZGMxMGE4YTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bi5oCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBib29sIHZhbGlkYXRpb25FbmFibGVkKCkKICNl
bmRpZgogfQogCi1pbmxpbmUgYm9vbCBlbmFibGVJbnQ1MigpCitpbmxpbmUgYm9vbCBjb25zdGV4
cHIgZW5hYmxlSW50NTIoKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCmluZGV4IGI4ODI1YWNhZTM0ZS4uZmExN2JmMTE0MTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApA
QCAtMzg3LDYgKzM4Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHNJbnQ1MjoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBHZXRNeUFy
Z3VtZW50QnlWYWxPdXRPZkJvdW5kczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCmluZGV4IDA3MGE0ODU0N2E5Ny4uNDAyODRjZmEyMmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2Fz
ZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVj
a0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNh
c2UgQ2hlY2s6CiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CkBAIC0xOTcsMTAgKzE5OCwxMiBAQCBi
b29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6
CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgog
ICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0Ogog
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIFB1
dFN0cnVjdHVyZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGUxYjkzZWVlNmNhLi41NjZmNTM5ZGUxYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
NDMsNiArMTA0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51
bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICYm
IG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAgICAgICAgICAgICAgICAgICAmJiBu
b2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW5v
ZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5KCkKICAgICAgICAgICAgICAgICAg
ICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxv
dykpIHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCkBAIC0xMDczLDcgKzEwNzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6IHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBm
b3JjZSBPU1IgYmVjYXVzZSB3ZSBoYXZlIG9ubHkgc2VlbiBPd25TdHJ1Y3R1cmVNb2RlLgotICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXRSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8g
dGhpcy4uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRl
ciB3YXkgdG8gZG8gdGhpcy4uLgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEVu
dW1lcmF0b3JHZXRCeVZhbCkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2Rl
KG5vZGUtPmFycmF5TW9kZSgpLndpdGhUeXBlKEFycmF5OjpHZW5lcmljKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMTMzLDYgKzExMzQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEtub3duU3RyaW5nVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDAp
KTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDEpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkludDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAg
ICAgICAgICBjYXNlIEFycmF5OjpJbnQzMkFycmF5OgorICAgICAgICAgICAgY2FzZSBBcnJheTo6
VWludDhBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5Ogor
ICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDE2QXJyYXk6CisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpVaW50MzJBcnJheToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToK
KyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheToKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDApKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEpKTsKQEAgLTExODQsNiArMTE5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCiAg
ICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQogICAg
ICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgIW5vZGUtPmFycmF5TW9kZSgpLm1heUJlTGFyZ2VUeXBlZEFycmF5
KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBu
ZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCkBAIC0xNzE3LDEyICsxNzMxLDE2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OiB7
CiAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwotICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAt
MjE0OSw2ICsyMTY3LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6IHsKKyAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUobV9ncmFw
aCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgQXJyYXlNb2RlOjp1bnVzZWRJ
bmRleFNwZWN1bGF0ZWRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTb21l
VHlwZWRBcnJheVZpZXcoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlN
b2RlKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVk
Z2UoKSwgbm9kZS0+Y2hpbGQyKCksIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisKKyAgICAgICAgICAg
IGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2Rl
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDogewog
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjE4Miw2ICsyMjE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEFzc2VydEluQm91bmRzOgog
ICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOgogICAgICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAgIGNhc2Ug
RG91YmxlQXNJbnQzMjoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CkBAIC00MDk2LDE0ICs0
MTMyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGlsZDIoKSA9
IEVkZ2Uoc3RvcmFnZSk7CiAgICAgfQotICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRBcnJheUxl
bmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJheU1vZGUp
Ci0gICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1vZGUsIG9y
aWdpbiwgY2hpbGQsIG51bGxwdHIsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAgIHJldHVy
biBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCi0gICAgICAgICAgICBPcElu
Zm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShz
dG9yYWdlKSk7Ci0gICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHko
Tm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRpb25JbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVy
YXRpb25JbmZvLmgKaW5kZXggNGZhZjk0OWE3ODYwLi4yZDg2ZWI3NTczOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKQEAgLTM5LDggKzM5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gVGhpcyBjbGFzcyBpcyB1c2Vk
IHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBsaXZlIHZhbHVlcyBkdXJpbmcgY29kZSBn
ZW5lcmF0aW9uLgogLy8gQ2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYXMgdG8gd2hldGhlciBhIHZh
bHVlIGlzIGluIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgaWYgc28gd2hpY2gsCiAvLyB3aGV0aGVy
IGEgdmFsdWUgaGFzIGJlZW4gc3BpbGxlZCB0byB0aGUgUmVnaXN0ZXJGaWxlLCBhbmQgaWYgc28g
bWF5IGJlIGFibGUgdG8gcHJvdmlkZQotLy8gZGV0YWlscyBvZiB0aGUgZm9ybWF0IGluIG1lbW9y
eSAoYWxsIHZhbHVlcyBhcmUgc3BpbGxlZCBpbiBhIGJveGVkIGZvcm0sIGJ1dCB3ZSBtYXkgYmUK
LS8vIGFibGUgdG8gdHJhY2sgdGhlIHR5cGUgb2YgYm94KSwgYW5kIHRyYWNrcyBob3cgbWFueSBv
dXRzdGFuZGluZyB1c2VzIG9mIGEgdmFsdWUgcmVtYWluLAorLy8gZGV0YWlscyBvZiB0aGUgZm9y
bWF0IGluIG1lbW9yeSwgYW5kIHRyYWNrcyBob3cgbWFueSBvdXRzdGFuZGluZyB1c2VzIG9mIGEg
dmFsdWUgcmVtYWluLAogLy8gc28gdGhhdCB3ZSBrbm93IHdoZW4gdGhlIHZhbHVlIGlzIGRlYWQg
YW5kIHRoZSBtYWNoaW5lIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQKIC8vIG1heSBiZSBy
ZWxlYXNlZC4KIGNsYXNzIEdlbmVyYXRpb25JbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRleCAyYmI5ZDRiZWE4MDAuLjA2NjFlNWI4MjZi
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcApA
QCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
TG9jYXRpb25LaW5kIGtpbmQpCiAgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUJ5dGVPZmZz
ZXRMb2MiKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNl
dEludDUyTG9jOgorICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50NTJM
b2MiKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50NTJM
b2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZWRBcnJheUxlbmd0aEludDUyTG9jIik7CisgICAg
ICAgIHJldHVybjsKKwogICAgIGNhc2UgUHJvdG90eXBlTG9jOgogICAgICAgICBvdXQucHJpbnQo
IlByb3RvdHlwZUxvYyIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdIZWFwTG9jYXRpb24uaAppbmRleCAyNjkxNzFjYjM0MWQuLjQwZmI3MTY3MzI4NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02Nyw2
ICs2Nyw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0ZXJMb2MsCiAgICAgU3RydWN0
dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAorICAgIFR5cGVkQXJyYXlCeXRl
T2Zmc2V0SW50NTJMb2MsCisgICAgVHlwZWRBcnJheUxlbmd0aEludDUyTG9jLAogICAgIFByb3Rv
dHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxvYWRMb2MsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2UuY3BwCmluZGV4IDFiYWExYzhiY2Y1MS4uNmRlZGEwMzdlZTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMTMzNSw3ICsxMzM1LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vbk5lZ2F0aXZlICYm
IGxlc3NUaGFuTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlTm9kZShi
bG9jay0+YXQobm9kZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoT3B0aW9uczo6dmFsaWRhdGVCb3VuZHNDaGVja0VsaW1pbmF0aW9uKCkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZhbGlkYXRlQm91bmRzQ2hlY2tF
bGltaW5hdGlvbigpKSAmJiBub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNw
ZWNOb25lLCBBc3NlcnRJbkJvdW5kcywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSwgbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UganVzdCBuZWVkIHRv
IG1ha2Ugc3VyZSB3ZSBhcmUgYSB2YWx1ZS1wcm9kdWNpbmcgbm9kZS4KICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24obm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmFmNzk3MDY4YTljLi4wYmE3
YjlmZjNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk2NSw2ICsx
OTY1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgY2FzZSBB
cnJheVBvcDoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRU
eXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6
CiAgICAgICAgIGNhc2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGU6CiAgICAgICAg
IGNhc2UgQXJyYXlJbmRleE9mOgpAQCAtMjAwNCw2ICsyMDA1LDcgQEAgcHVibGljOgogCiAgICAg
ICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAgICByZXR1cm4gMjsK
IAogICAgICAgICBjYXNlIEhhc0luZGV4ZWRQcm9wZXJ0eToKQEAgLTIyNzYsNiArMjI3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MjoKICAgICAgICAgY2FzZSBHZXRWZWN0b3JM
ZW5ndGg6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVj
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5YTkwYTRjZmRh
YzguLjIzZjFjMTUwZDYwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aApAQCAtMjYxLDggKzI2MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KE11bHRpRGVsZXRlQnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgLyogVGhp
cyBpcyBvbmx5IHJlbGV2YW50IGZvciBUeXBlZEFycmF5cywgYXMgdGhleSBhcmUgdGhlIG9ubHkg
b25lcyB0aGF0IGNhbiBoYXZlIGEgbGVuZ3RoIHRoYXQgZG9lcyBub3QgZml0IGluIDMyIGJpdHMu
ICovIFwKKyAgICAvKiBHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MiBhbmQgR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXRBc0ludDUyIGNoYW5nZSB0byByZXR1cm5pbmcgSW50NTIgaW4gRml4dXAuIERv
aW5nIGl0IGJlZm9yZSBjYXVzZXMgdmFsaWRhdGlvbiBmYWlsdXJlcy4gKi8gXAorICAgIG1hY3Jv
KEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhH
ZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldEFzSW50NTIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFNjb3BlLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTa2lwU2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFJlc29sdmVTY29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApA
QCAtMjg2LDYgKzI5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhDaGVja0JhZFZhbHVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXNzZXJ0
SW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRzLCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oQ2hlY2tJbkJvdW5k
c0ludDUyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2hl
Y2tJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrVHlwZUluZm9GbGFn
cywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFrZXMgYW4gT3BJbmZvIHdpdGggdGhlIGZsYWdzIHlv
dSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wKICAgICBtYWNybyhDaGVja0pTQ2FzdCwgTm9kZU11
c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0aGUgc2FtZSBhcyBqc0Nhc3QgYnV0IGFzIGEgc3BlY3Vs
YXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0aW9uICovXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTUwN2YxZTgwYWMwLi45NDUzNTM1NmRlOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtOTcsMTAg
Kzk3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTVmFsdWUKICAgICB9CiAgICAgaWYgKGJhc2VWYWx1
ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNl
VmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaW5kZXgsIHZh
bHVlKSkgewotICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LCB2
YWx1ZSk7CisgICAgICAgIGlmIChvYmplY3QtPnRyeVNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgs
IHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCiAgICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRl
eCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3NSw3ICsxNzMsNyBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1jaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLCBjaGFyKiB2ZWN0
b3IpCitjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3Qgc2l6ZSwgY2hhciog
dmVjdG9yKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApA
QCAtMTgzLDExICsxODEsMTQgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHIKICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIl9zKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICAKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmlj
X2xpbWl0czxpbnRwdHJfdD46Om1heCgpIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOworICAgIHNpemVfdCB1bnNpZ25lZFNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNp
emUpOworCiAgICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4oVmlld0NsYXNzOjpjcmVhdGVXaXRoRmFzdFZlY3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHNpemUpKSk7CisgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSwgdW50YWdBcnJheVB0cih2ZWN0b3IsIHVu
c2lnbmVkU2l6ZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYml0d2lzZV9j
YXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2l6
ZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4o
Vmlld0NsYXNzOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVuc2lnbmVkU2l6ZSkp
KTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3RyaWN0PgpAQCAtMTkwOCw3ICsxOTA5LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAo
Vk0qIHZtUG9pbnRlciwgU3RydWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
bGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE5MjQsNyArMTkyNSw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkp
OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdp
dGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxl
bmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
MTk0MCw3ICsxOTQxLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0lu
dDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMTk1Niw3ICsxOTU3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNH
bG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTk3Miw3ICsxOTczLDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhD
bGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0xOTg4LDcgKzE5ODksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIq
LCAoSgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwg
Y2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBj
aGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDA0LDcg
KzIwMDUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0yMDIwLDcgKzIwMjEsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwMzYsNyArMjAzNyw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9h
dDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6
bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Rmxv
YXQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBj
aGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnRwdHJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTIwNTIsNyArMjA1Myw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25OZXdCaWdJbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludHB0cl90IGxlbmd0aCwgY2hhciogdmVj
dG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2OCw3ICsyMDY5LDcg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRo
T25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG8KICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0JpZ0lu
dDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6
bnVsbG9wdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3Qmln
VWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6
ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50cHRyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmlu
ZGV4IDM5M2RlODg1MDcwNy4uNGZkNTc5NWQyZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE5LDI3ICsxMTksMjcgQEAgSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RW1wdHlBcnJh
eSwgY2hhciosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJmbHkqKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplLCBjaGFy
KiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1l
bnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhP
bmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRK
U1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90
LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwgY2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNp
emUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0
aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2Rl
ZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQz
Ml90LCBjaGFyKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGlu
dHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdG
bG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgaW50cHRyX3QsIGNoYXIqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludHB0cl90LCBjaGFyKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRo
U2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5
V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnRwdHJfdCwg
Y2hhciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0
QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25O
ZXdBcnJheUl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yLCBKU0NlbGwqLCAoVk0qLCBT
dHJ1Y3R1cmUqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDIwZDA0NGY1ZjVjMC4uOGUw
YzU4YjhhMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg2LDYgKzk4NiwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdl
dFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MjogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50NTJBbnkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFN0cmluZ0No
YXJDb2RlQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAg
IHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CkBAIC0xMzIwLDYgKzEzMjYsNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgICAgIGNhc2Ug
QXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKKyAgICAgICAgY2Fz
ZSBDaGVja0luQm91bmRzSW50NTI6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAg
ICBjYXNlIERvdWJsZVJlcDoKICAgICAgICAgY2FzZSBWYWx1ZVJlcDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCmluZGV4IGUzYTIzOWEz
M2UzMC4uZDlkYWUzYTgzMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKQEAgLTEwMCwxMSArMTAwLDIxIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtX25v
ZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkgIT0gTm90VHlwZWRBcnJheSAmJiBtX25v
ZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgewotICAgICAgICAgICAgICAgIE5vZGUq
IGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5vcmln
aW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29y
ZCgpKSwgYmFzZSwgc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpID0gRWRnZShsZW5ndGgsIEtub3duSW50MzJV
c2UpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgICAgICAgICAgaWYgKG1f
bm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBoLmhhc0V4
aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2Uo
bGVuZ3RoLCBJbnQ1MlJlcFVzZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNlbmRpZgor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHks
IEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX25vZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9IEVkZ2Uo
bGVuZ3RoLCBLbm93bkludDMyVXNlKTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAg
ICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzcsMTIgKzE0NywyOSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBOb2RlKiBsZW5ndGggPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJ
bnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhtX25vZGUt
PmFycmF5TW9kZSgpLmFzV29yZCgpKSwgRWRnZShiYXNlLm5vZGUoKSwgS25vd25DZWxsVXNlKSwg
c3RvcmFnZSk7Ci0gICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHMgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNr
SW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3Ro
LCBLbm93bkludDMyVXNlKSk7CisgICAgICAgIE5vZGUqIGNoZWNrSW5Cb3VuZHM7CisjaWYgVVNF
KExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgaWYgKChvcCA9PSBHZXRBcnJheUxlbmd0aCkg
JiYgKG1fbm9kZS0+YXJyYXlNb2RlKCkubWF5QmVMYXJnZVR5cGVkQXJyYXkoKSB8fCBtX2dyYXBo
Lmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpKSB7CisgICAg
ICAgICAgICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50NTJBbnksIEdldFR5cGVkQXJyYXlMZW5ndGhB
c0ludDUyLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5h
cnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVzZSksIHN0
b3JhZ2UpOworICAgICAgICAgICAgbGVuZ3RoLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsK
KyAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlwZSBpcyBhIGR1bW15IHNpbmNlIHRoaXMgbm9k
ZSBkb2VzIG5vdCBhY3R1YWxseSByZXR1cm4gYW55dGhpbmcuCisgICAgICAgICAgICBjaGVja0lu
Qm91bmRzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25v
ZGVJbmRleCwgU3BlY0ludDMyT25seSwgQ2hlY2tJbkJvdW5kc0ludDUyLCBtX25vZGUtPm9yaWdp
biwKKyAgICAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgsIEludDUyUmVwVXNlKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJ
bnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9u
b2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtub3duQ2VsbFVz
ZSksIHN0b3JhZ2UpOworICAgICAgICAgICAgY2hlY2tJbkJvdW5kcyA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHks
IENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgIGluZGV4LCBF
ZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgICAgIH0KKyNlbmRpZgorCiAKICAgICAgICAgQWRqYWNlbmN5TGlzdCBhZGphY2VuY3lM
aXN0ID0gbV9ncmFwaC5jb3B5VmFyYXJnQ2hpbGRyZW4obV9ub2RlKTsKICAgICAgICAgbV9ncmFw
aC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKGNoZWNrSW5Cb3VuZHMsIFVudHlwZWRVc2Up
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXgg
OTI0ZmM4YzMxMDg2Li4yZTdmNTZhYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBi
b29sIGlnbm8KICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQXNzZXJ0SW5C
b3VuZHM6CiAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0lu
dDUyOgogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgog
ICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgpAQCAtMzczLDYgKzM3NCw3IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Ym9vbCBpZ25vCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0
eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBjYXNlIEdldFR5cGVkQXJy
YXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAgIGNhc2UgQXJy
YXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CkBAIC0zODUsNiArMzg3LDcgQEAgYm9vbCBz
YWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBib29sIGlnbm8KIAogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICBjYXNlIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRB
c0ludDUyOgogICAgICAgICByZXR1cm4gIShzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5t
X3R5cGUgJiB+KFNwZWNUeXBlZEFycmF5VmlldykpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQ
dXRCeVZhbERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggMjVmNmFjYTY3YzQ4Li43NDllZjU0NmFiZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjM4LDI4
ICszMjM4LDQzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21w
aWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotSklUQ29tcGlsZXI6
Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSog
bm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK0pJVENvbXBpbGVyOjpKdW1w
IFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKE5vZGUqIG5vZGUs
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQogewog
ICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsQWxpYXMpCiAgICAgICAgIHJldHVybiBKSVRD
b21waWxlcjo6SnVtcCgpOwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9qaXQuZ3Jh
cGgoKS50cnlHZXRGb2xkYWJsZVZpZXcoCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5n
cmFwaCgpLmNoaWxkKG5vZGUsIDApKS5tX3ZhbHVlLCBub2RlLT5hcnJheU1vZGUoKSk7CiAgICAg
aWYgKHZpZXcpIHsKLSAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmlldy0+bGVuZ3RoKCk7Cisg
ICAgICAgIHNpemVfdCBsZW5ndGggPSB2aWV3LT5sZW5ndGgoKTsKICAgICAgICAgTm9kZSogaW5k
ZXhOb2RlID0gbV9qaXQuZ3JhcGgoKS5jaGlsZChub2RlLCAxKS5ub2RlKCk7Ci0gICAgICAgIGlm
IChpbmRleE5vZGUtPmlzSW50MzJDb25zdGFudCgpICYmIGluZGV4Tm9kZS0+YXNVSW50MzIoKSA8
IGxlbmd0aCkKKyAgICAgICAgaWYgKGluZGV4Tm9kZS0+aXNBbnlJbnRDb25zdGFudCgpICYmIGlu
ZGV4Tm9kZS0+YXNVSW50MzIoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBKSVRDb21w
aWxlcjo6SnVtcCgpOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIG1faml0
LnNpZ25FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgcmV0dXJu
IG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KGxlbmd0aCkpOworI2Vsc2UKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOwogICAgICAgICByZXR1cm4gbV9qaXQuYnJh
bmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGxlbmd0aCkpOworI2VuZGlmCiAgICAgfQorCisjaWYg
VVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihpbmRl
eEdQUiwgc2NyYXRjaEdQUik7CisgICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSkpOworI2Vsc2UKICAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
OworI2VuZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRz
Q2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUikKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCiB7Ci0gICAg
SklUQ29tcGlsZXI6Okp1bXAganVtcCA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9k
ZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1w
Rm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNo
R1BSKTsKICAgICBpZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwpA
QCAtMzM4MCwxMCArMzM5NSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdAogICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywg
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CiAKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHBy
b3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9y
YWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wOwogICAgIEZQUlJlZyByZXN1bHRG
UFIgPSBJbnZhbGlkRlBSUmVnOwpAQCAtMzM5Nyw3ICszNDE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJy
YXlUeXBlIHQKICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4KERhdGFG
b3JtYXRJbnQzMik7CiAgICAgYm9vbCBzaG91bGRCb3ggPSBmb3JtYXQgPT0gRGF0YUZvcm1hdEpT
OwogCi0gICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZyk7CisgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2RlLCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZywgc2NyYXRjaEdQUik7CiAgICAgbG9hZEZyb21JbnRUeXBlZEFycmF5KHN0b3JhZ2VS
ZWcsIHByb3BlcnR5UmVnLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgdHlwZSk7CiAgICAgY29u
c3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFycmF5TG9h
ZFJlc3VsdChub2RlLCByZXN1bHRSZWdzLCB0eXBlLCBjYW5TcGVjdWxhdGUsIHNob3VsZEJveCwg
cmVzdWx0RlBSKTsKQEAgLTM1NTUsNiArMzU3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0
CiAgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBTdG9yYWdlT3BlcmFuZCBzdG9y
YWdlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5n
cHIoKTsKICAgICAKICAgICBFZGdlIHZhbHVlVXNlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGls
ZChub2RlLCAyKTsKQEAgLTM1ODcsNyArMzYwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0
CiAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVydHkpOwogICAg
IEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNlKTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gc3RvcmFn
ZVJlZyk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBqdW1wRm9yVHlwZWRB
cnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFz
ZSwgcHJvcGVydHksIHNjcmF0Y2guZ3ByKCkpOwogCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0
eXBlKSkgewogICAgIGNhc2UgMToKQEAgLTM2NDUsMTAgKzM2NjMsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlw
ZWRBcnJheVR5cGUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBw
cm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICBTdG9yYWdl
T3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNl
LmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIEdQ
UlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAgIERhdGFG
b3JtYXQgZm9ybWF0OwpAQCAtMzY1Niw3ICszNjc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5
cGUKIAogICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgRlBSUmVnIHJlc3VsdFJl
ZyA9IHJlc3VsdC5mcHIoKTsKLSAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJh
c2VSZWcsIHByb3BlcnR5UmVnKTsKKyAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUs
IGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzY3JhdGNoR1BSKTsKICAgICBzd2l0Y2ggKGVsZW1lbnRT
aXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBtX2ppdC5sb2FkRmxvYXQoTWFjcm9B
c3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJs
ZXI6OlRpbWVzRm91ciksIHJlc3VsdFJlZyk7CkBAIC0zNjkwLDEwICszNzEwLDEyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShHUFJSZWcg
YmFzZSwgR1BSUmVnIHByb3BlCiAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3Ao
dGhpcywgdmFsdWVVc2UpOwogICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQ
UlRlbXBvcmFyeSBncFNjcmF0Y2godGhpcyk7CiAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWVP
cC5mcHIoKTsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IHNjcmF0Y2guZnByKCk7CisgICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBncFNjcmF0Y2guZ3ByKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBvdXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFz
ZSwgcHJvcGVydHkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRzID0ganVt
cEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0eSwgc2NyYXRjaEdQ
Uik7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgNDog
ewpAQCAtNzk2Nyw3ICs3OTg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FnZVR5cGVkQXJy
YXlTdG9yYWdlKEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgc3RvcmFnZVJlZywgYm8KIHsKICAgICBh
dXRvIHVudGFnQXJyYXlQdHIgPSBbJl0oKSB7CiAjaWYgQ1BVKEFSTTY0RSkKLSAgICAgICAgbV9q
aXQudW50YWdBcnJheVB0ckxlbmd0aDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcs
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgc3RvcmFnZVJlZywgdmFsaWRh
dGVBdXRoKTsKKyAgICAgICAgbV9qaXQudW50YWdBcnJheVB0ckxlbmd0aDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgc3RvcmFnZVJlZywgdmFsaWRhdGVBdXRoKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJB
TSh2YWxpZGF0ZUF1dGgpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CkBAIC04MDM5
LDkgKzgwNjEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKICAgICBHUFJSZWcgZGF0YUdQUiA9
IGRhdGEuZ3ByKCk7Ci0gICAgQVNTRVJUKGJhc2VHUFIgIT0gdmVjdG9yR1BSKTsKLSAgICBBU1NF
UlQoYmFzZUdQUiAhPSBkYXRhR1BSKTsKLSAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRhdGFHUFIp
OwogCiAgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsKIApAQCAtODA4Myw2ICs4
MTAyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldChOb2RlKiBub2RlKQogICAgIG51bGxWZWN0b3IubGluaygmbV9qaXQpOwogI2VuZGlmCiAK
KyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhl
IHJlc3VsdCBvZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBt
dXN0IHVwaG9sZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJm
bG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmUsIHZlY3RvckdQUiwgVHJ1c3RlZEltbTMyKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpKSkpOworI2VuZGlmCisKICAgICBzdHJpY3RJbnQzMlJlc3VsdCh2ZWN0b3JH
UFIsIG5vZGUpOwogfQogCkBAIC04MzQ5LDEyICs4MzczLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworI2lm
IFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCisgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFs
dWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSkpKTsKKyNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3Vs
dEdQUik7CisjZW5kaWYKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfSB9CiB9CiAKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNoZWNrSWRlbnQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzdHJpbmdPclN5bWJvbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMTExOSwxMCArMTEx
NDksMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6
ZShOb2RlKiBub2RlKQogICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBub2RlLT50eXBlZEFycmF5
VHlwZSgpOwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgo
KS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25j
dXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUu
Z2V0KCkpOwotICAgIAorCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAvLyBUaGUg
b3BlcmF0aW9ucyB3ZSBjYWxsIG9uIHRoZSBzbG93IHBhdGggZXhwZWN0IGEgaW50cHRyX3QsIHNv
IGludDY0X3Qgb24gNjQgYml0IHBsYXRmb3JtcworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBz
aXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKyAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNpemVHUFIs
IHNjcmF0Y2hHUFIpOworICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemVJblJlZ2lzdGVyKG5v
ZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIpOworI2Vsc2UKICAgICBT
cGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BS
UmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwotICAgIAorICAgIGVtaXROZXdUeXBlZEFycmF5V2l0
aFNpemVJblJlZ2lzdGVyKG5vZGUsIHR5cGVkQXJyYXlUeXBlLCBzdHJ1Y3R1cmUsIHNpemVHUFIp
OworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBlZEFycmF5V2l0
aFNpemVJblJlZ2lzdGVyKE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCit7CiAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlz
KTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTExMTM2LDggKzExMTgwLDE1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9k
ZSogbm9kZSkKICAgICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHN0
b3JhZ2VHUFIpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaDY0KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHNp
emVHUFIsIFRydXN0ZWRJbW02NChKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpKTsK
KyAgICAvLyBXZSBhc3N1bWUgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmFzdCBwYXRoIHRoYXQg
dGhlIHNpemUgaXMgYSAzMi1iaXQgbnVtYmVyLgorICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5k
czxpbnQzMl90PihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNpemVMaW1pdCkpOworI2Vsc2UKICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWJvdmUsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihKU0FycmF5QnVmZmVyVmlldzo6ZmFzdFNp
emVMaW1pdCkpKTsKKyNlbmRpZgogICAgIAogICAgIG1faml0Lm1vdmUoc2l6ZUdQUiwgc2NyYXRj
aEdQUik7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5
cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTExOTMsOSArMTEyNDQsMTUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2Rl
KQogICAgIG1faml0LnN0b3JlUHRyKAogICAgICAgICBzdG9yYWdlR1BSLAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
ZlZlY3RvcigpKSk7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICBtX2ppdC5zdG9y
ZTY0KAorICAgICAgICBzaXplR1BSLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CisjZWxzZQog
ICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIHNpemVHUFIsCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpKTsKKyNlbmRpZgogICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgIFRydXN0ZWRJbW0zMihG
YXN0VHlwZWRBcnJheSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSk7CkBAIC0xNDE2Nyw2ICsxNDIy
NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBu
b2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0
aFNpemUobm9kZSk7CiAgICAgICAgIGJyZWFrOworI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMp
CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgY29tcGlsZU5ld1R5cGVkQXJyYXlXaXRo
SW50NTJTaXplKG5vZGUpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgVW50eXBl
ZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFs
dWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKaW5kZXggMDdiNTYzYjM0ODNhLi4wNDliY2Y3ZTZmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAwLDkgKzEzMDAsMTMgQEAg
cHVibGljOgogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25z
dGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CiAgICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2Jq
ZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woTm9kZSopOwotICAgIAorCisg
ICAgdm9pZCBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiwgVHlwZWRB
cnJheVR5cGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSKTsKICAgICB2b2lk
IGNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSopOwotICAgIAorI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNp
emUoTm9kZSopOworI2VuZGlmCisKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUoTm9kZSos
IE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVJ
bnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsK
ICNpZiBVU0UoQklHSU5UMzIpCkBAIC0xMzczLDYgKzEzNzcsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb21waWxlR2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJh
eUxlbmd0aChOb2RlKik7CisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNv
bXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1MihOb2RlKik7CisjZW5kaWYKIAogICAgIHZv
aWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hl
Y2tJZGVudChOb2RlKik7CkBAIC0xNDMxLDEwICsxNDM4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbXBpbGVBcml0aE1pbk1heChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ29uc3RhbnRTdG9y
YWdlUG9pbnRlcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZShOb2RlKik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRP
ZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUik7CisgICAgSklU
Q29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgIEpJVENv
bXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9k
ZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7Ci0gICAg
dm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIGluZGV4R1BSKTsKKyAgICB2b2lkIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2soTm9kZSos
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKik7CisjaWYgVVNFKExB
UkdFX1RZUEVEX0FSUkFZUykKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dEFzSW50NTIoTm9kZSopOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5
cGVkQXJyYXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0
dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQp
PiYgcHJlZml4KTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BS
UmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2
b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFycmF5VHlw
ZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+
KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCk7CkBAIC0yNDI3LDcgKzI0Mzcs
NyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKLS8vIEdpdmVz
IHlvdSBhIGNhbm9uaWNhbCBJbnQ1MiAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93
IGJpdHMgemVybykuCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NTIgKGkuZS4gaXQncyBs
ZWZ0LXNoaWZ0ZWQgYnkgMTIsIGxvdyBiaXRzIHplcm8pLgogY2xhc3MgU3BlY3VsYXRlSW50NTJP
cGVyYW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTI0NzUs
NyArMjQ4NSw3IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAot
Ly8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUyIChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBs
b3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KKy8vIEdpdmVzIHlv
dSBhIHN0cmljdCBJbnQ1MiAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDUyIGJpdHMs
IGhpZ2ggMTIgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJ
bnQ1Mk9wZXJhbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggNmEwZjI1MjBlYTM3Li4yMmY2ZjcyNzRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjEzNCw2
ICsyMTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgY29tcGlsZUdldEJ5
VmFsT25TY29wZWRBcmd1bWVudHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDogeworICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRB
cnJheVZpZXcoKSk7CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJheU1v
ZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAg
ICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4KTsK
QEAgLTM1MzgsNiArMzUzOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJl
YWs7CiAKKyAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorICAgICAgICAvLyBX
ZSBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgbGFyZ2VyIHRoYW4gMkdCIG9uIDMyLWJpdCBw
bGF0Zm9ybXMuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBEZWxldGVCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVEZWxldGVC
eUlkKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzYyNiwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOiB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAg
IGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzOTgsNiArNDQwOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAg
Y2FzZSBBc3NlcnRJbkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBD
aGVja0luQm91bmRzSW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdl
dEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNiMzkzZjUyNzVm
Ny4uODQwYWExNzhjYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjk0LDYgKzI2OTQsODYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxz
dGQ6OnR1cGxlPEoKICAgICB9IH0KIH0KIAorI2lmIFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheVdpdGhJbnQ1MlNpemUoTm9k
ZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBhdXRvIHR5
cGVkQXJyYXlUeXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJyYXlUeXBlKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdldCgpKTsKKworICAgIFNwZWN1bGF0ZVN0
cmljdEludDUyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcg
c2l6ZUdQUiA9IHNpemUuZ3ByKCk7CisKKyAgICBlbWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5S
ZWdpc3Rlcihub2RlLCB0eXBlZEFycmF5VHlwZSwgc3RydWN0dXJlLCBzaXplR1BSKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyKE5v
ZGUqIG5vZGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21l
VHlwZWRBcnJheVZpZXcoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFz
ZSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CisgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0
R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1BWF9BUlJBWV9CVUZGRVJfU0laRSA8ICgxdWxsIDw8
IDUyKSwgInRoZXJlIGlzIGEgcmlzayB0aGF0IHRoZSBzaXplIG9mIGEgdHlwZWQgYXJyYXkgd29u
J3QgZml0IGluIGFuIEludDUyIik7CisgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0QXNJbnQ1MihOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSB2ZWN0b3IodGhpcyk7
CisgICAgR1BSVGVtcG9yYXJ5IGRhdGEodGhpcyk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CisgICAgR1BSUmVnIHZlY3RvckdQUiA9IHZlY3Rvci5ncHIoKTsKKyAgICBHUFJS
ZWcgZGF0YUdQUiA9IGRhdGEuZ3ByKCk7CisKKyAgICBHUFJSZWcgYXJyYXlCdWZmZXJHUFIgPSBk
YXRhR1BSOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQu
YnJhbmNoMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TW9kZSgpKSwKKyAgICAgICAgVHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOworCisg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCBudWxsVmVjdG9yID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVh
bCwgdmVjdG9yR1BSLCBUcnVzdGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3OjpudWxsVmVjdG9y
UHRyKCkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CisgICAgbV9qaXQu
Y2FnZVdpdGhvdXRVbnRhZ2dpbmcoR2lnYWNhZ2U6OkpTVmFsdWUsIGRhdGFHUFIpOworCisgICAg
Y2FnZVR5cGVkQXJyYXlTdG9yYWdlKGJhc2VHUFIsIHZlY3RvckdQUik7CisKKyAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0
T2ZBcnJheUJ1ZmZlcigpKSwgYXJyYXlCdWZmZXJHUFIpOworICAgIC8vIEZJWE1FOiBUaGlzIG5l
ZWRzIGNhZ2luZy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1NTE1CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcnJh
eUJ1ZmZlckdQUiwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgZGF0YUdQUik7CisjaWYg
Q1BVKEFSTTY0RSkKKyAgICBtX2ppdC5yZW1vdmVBcnJheVB0clRhZyhkYXRhR1BSKTsKKyNlbmRp
ZgorCisgICAgbV9qaXQuc3ViUHRyKGRhdGFHUFIsIHZlY3RvckdQUik7CisKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICBu
dWxsVmVjdG9yLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgIGVtcHR5Qnl0ZU9mZnNldC5saW5r
KCZtX2ppdCk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2ZWN0b3JH
UFIpOworCisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisjaWYgIUNQVShBUk02NEUpCisgICAgQVNT
RVJUKCFKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKTsKKyAgICBudWxsVmVjdG9y
LmxpbmsoJm1faml0KTsKKyNlbmRpZgorCisgICAgc3RyaWN0SW50NTJSZXN1bHQodmVjdG9yR1BS
LCBub2RlKTsKK30KKyNlbmRpZiAvLyBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgb3AgPSBu
b2RlLT5vcCgpOwpAQCAtMzY0NCwxMSArMzcyNCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVy
YW5kIGluZGV4KHRoaXMsIGluZGV4RWRnZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
ICh0aGlzKTsKIAogICAgICAgICBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgaW5kZXhH
UFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRUeXBlZEFycmF5Qm91bmRz
Q2hlY2sobm9kZSwgYmFzZUdQUiwgaW5kZXhHUFIpOworICAgICAgICBlbWl0VHlwZWRBcnJheUJv
dW5kc0NoZWNrKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSLCBzY3JhdGNoLmdwcigpKTsKICAgICAg
ICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBhcmdzWzJdOwogICAgICAgICAKQEAgLTQzODEsNiAr
NDQ2MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGNvbXBpbGVHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgorI2lmIFVTRShBRERSRVNTNjQpCisgICAg
ICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Mihub2RlKTsKKyNlbHNlCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7
CisKICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKICAgICAgICAgY29tcGlsZURlbGV0ZUJ5SWQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ5OSw2ICs0NTg4LDE1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6IHsKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUy
KG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7
CiAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC01NTg5LDcgKzU2ODcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoaW5kZXhHUFIsIHQyKTsKICAg
ICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQogICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1
c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdz
KCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVz
c1RoYW4sIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgbV9qaXQubG9hZDY0
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbHNlCisgICAgICAgIC8vIE5vIG5lZWQgZm9yIGFu
IGV4cGxpY2l0IGNoZWNrIGFnYWluc3QgMCBoZXJlLCBuZWdhdGl2ZSBpbmRpY2VzIGFyZSBjYXVn
aHQgYnkgdGhlIGNvbXBhcmlzb24gd2l0aCBsZW5ndGggcmlnaHQgYWZ0ZXIKICAgICAgICAgbV9q
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyNlbmRpZgogICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAK
QEAgLTU3OTAsNyArNTg5NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvV29yZChpbmRleEdQUiwgdDIpOwog
ICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBtX2ppdC5hZGQ2NChU
cnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisjaWYgVVNFKExBUkdFX1RZUEVE
X0FSUkFZUykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpM
ZXNzVGhhbiwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBtX2ppdC5sb2Fk
NjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3Ig
YW4gZXhwbGljaXQgY2hlY2sgYWdhaW5zdCAwIGhlcmUsIG5lZ2F0aXZlIGluZGljZXMgYXJlIGNh
dWdodCBieSB0aGUgY29tcGFyaXNvbiB3aXRoIGxlbmd0aCByaWdodCBhZnRlcgogICAgICAgICBt
X2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEpOworI2VuZGlmCiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsK
IApAQCAtNjA0Miw2ICs2MTU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBBc3NlcnRJ
bkJvdW5kczoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CisgICAgY2FzZSBDaGVja0luQm91bmRz
SW50NTI6CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0Ogog
ICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4IDVmNTFmMjI1MTA0
Zi4uZTEwZDYyZTQyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI3OSwxMCArMjc5LDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBj
YXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
KyAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgICAg
ICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrRGV0
YWNoZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgog
ICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgICAgICAg
ICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAgICAgICAgICAg
ICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAg
ICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC0zNTksNiArMzYxLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2Ug
UHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CiAgICAgICAgICAg
ICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNh
c2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IGM1ZTVjZjM2YTc3MC4uZmIzYmRkNDg2
MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNjQw
LDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAg
ICAgICAgICAgICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgICAgICAgICAgICAgY2FzZSBD
aGVja0luQm91bmRzOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgog
ICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAppbmRleCBkMTI0OGM5ZmFkNjcuLjc4N2UxNDU1NjJmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTcwLDYgKzE3MCw3
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRT
ZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0QXNJbnQ1MjoKICAgICBjYXNlIEdldFByb3RvdHlwZU9m
OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkBAIC0xOTks
NiArMjAwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgQXNzZXJ0SW5Cb3VuZHM6CiAgICAgY2Fz
ZSBDaGVja0luQm91bmRzOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgogICAgIGNhc2Ug
Q29uc3RhbnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tW
YXJhcmdzOgpAQCAtMzkxLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6
CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICBj
YXNlIEdldFR5cGVkQXJyYXlMZW5ndGhBc0ludDUyOgogICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3Ro
OgogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNhOGY1Y2Zj
Nzk1ZS4uZDg2ZmE2NWU2NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC02MDUsNiArNjA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3Vu
ZHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9kZS0+b3Ao
KSA9PSBDaGVja0luQm91bmRzSW50NTIpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9k
ZSk7CiAgICAgICAgICAgICB7CkBAIC0xMDI1LDYgKzEwMjcsOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3Ro
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoQXNJbnQ1Migp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VmVjdG9yTGVuZ3RoOgogICAg
ICAgICAgICAgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMDM0LDYgKzEwMzksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUNo
ZWNrSW5Cb3VuZHNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0
QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTE3NSw2ICsxMTgzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXRBc0ludDUyOgorICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
QXNJbnQ1MigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBl
T2Y6CiAgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2YoKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDgyOCw5ICs0ODM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0Lmlz
TnVsbChtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9y
KSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCkK
KyAgICBMVmFsdWUgZW1pdEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3Vs
dCgpCiAgICAgewotICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7ICAgIAorICAgICAgICBMVmFsdWUgYmFzZVB0ciA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgd2FzdGVmdWxDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBA
IC00ODQ2LDcgKzQ4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKHdhc3RlZnVsQ2FzZSwgbm90TnVsbCk7CiAKICAgICAgICAgTFZh
bHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld192ZWN0b3IpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBt
X291dC5jb25zdEludFB0cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksIAor
ICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmVjdG9yLCBtX291dC5jb25zdEludFB0
cihKU0FycmF5QnVmZmVyVmlldzo6bnVsbFZlY3RvclB0cigpKSksCiAgICAgICAgICAgICB1bnN1
cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdE51bGwpKTsKIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhub3ROdWxsLCBjb250aW51YXRpb24pOwpAQCAtNDg2Niw5ICs0ODc3LDI5IEBAIHByaXZh
dGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0SW50MzIobV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxWZWN0b3JPdXQsIHdhc3Rl
ZnVsT3V0KSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG51bGxW
ZWN0b3JPdXQsIHdhc3RlZnVsT3V0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gZW1pdEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0RXhjZXB0U2V0dGluZ1Jlc3VsdCgpOworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisgICAgICAgIC8vIEFJIHByb21pc2VzIHRoYXQgdGhlIHJlc3VsdCBv
ZiBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCB3aWxsIGJlIEludDMyLCBzbyB3ZSBtdXN0IHVwaG9s
ZCB0aGF0IHByb21pc2UgaGVyZS4KKyAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVl
KCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKHJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyNlbmRpZgorICAgICAgICBzZXRJbnQz
MihtX291dC5jYXN0VG9JbnQzMihyZXN1bHQpKTsKKyAgICB9CisKK0lHTk9SRV9DTEFOR19XQVJO
SU5HU19CRUdJTigibWlzc2luZy1ub3JldHVybiIpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXRBc0ludDUyKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBwcmVwcm9jZXNz
b3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShMQVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhp
cyBpcyBlcXVpdmFsZW50LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA9
PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGVtaXRHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldEV4Y2VwdFNldHRpbmdSZXN1bHQoKTsKKyAgICAgICAgc2V0U3RyaWN0
SW50NTIocmVzdWx0KTsKKyAgICB9CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisKICAgICB2
b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50
aWMpOwpAQCAtNTA1NCw4ICs1MDg1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5
cGVkQXJyYXlWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQzMigKLSAgICAgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNpZiBVU0UoTEFSR0VfVFlQ
RURfQVJSQVlTKQorICAgICAgICAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkNjRO
b25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZm
ZXJWaWV3X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1Zh
bHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQ2NChzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgICAgICAgICBzZXRJ
bnQzMihtX291dC5jYXN0VG9JbnQzMihsZW5ndGgpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAg
c2V0SW50MzIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTA2NCw2ICs1
MTAwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKK0lHTk9SRV9DTEFOR19XQVJO
SU5HU19CRUdJTigibWlzc2luZy1ub3JldHVybiIpCisgICAgdm9pZCBjb21waWxlR2V0VHlwZWRB
cnJheUxlbmd0aEFzSW50NTIoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ub2Rl
LT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5VmlldygpKTsKKyAgICAgICAgLy8gVGhlIHBy
ZXByb2Nlc3NvciBjaG9rZXMgb24gUkVMRUFTRV9BU1NFUlQoVVNFKExBUkdFX1RZUEVEX0FSUkFZ
UykpLCB0aGlzIGlzIGVxdWl2YWxlbnQuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNpemVvZihz
aXplX3QpID09IHNpemVvZih1aW50NjRfdCkpOworICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291
dC5sb2FkNjROb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgIH0KK0lHTk9SRV9DTEFOR19XQVJOSU5HU19F
TkQKKwogICAgIHZvaWQgY29tcGlsZUdldFZlY3Rvckxlbmd0aCgpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC01MTA4LDcgKzUxNTQsMjIg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gZGVwZW5kIG9uIG91ciB2YWx1ZS4gVXNlcnMgb2YgdGhp
cyBub2RlIGp1c3QgbmVlZCB0byBtYWludGFpbiB0aGF0CiAgICAgICAgIC8vIHdlIGRvbWluYXRl
IHRoZW0uCiAgICAgfQotICAgIAorCitJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4oIm1pc3Np
bmctbm9yZXR1cm4iKQorICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHNJbnQ1MigpCisgICAg
eworICAgICAgICAvLyBUaGUgcHJlcHJvY2Vzc29yIGNob2tlcyBvbiBSRUxFQVNFX0FTU0VSVChV
U0UoTEFSR0VfVFlQRURfQVJSQVlTKSksIHRoaXMgaXMgZXF1aXZhbGVudC4KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAg
IC8vIFNpZ24tZXh0ZW5kZWQgdG8gYWxzbyBjYXRjaCBuZWdhdGl2ZSBpbmRpY2VzCisgICAgICAg
IExWYWx1ZSBpbmRleCA9IG1fb3V0LnNpZ25FeHQzMlRvNjQobG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbG93U3RyaWN0SW50NTIobV9ub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxs
cHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworICAgICAgICAvLyBFdmVu
IHRob3VnaCB3ZSBjbGFpbSB0byBoYXZlIEpTVmFsdWUgcmVzdWx0LCBubyB1c2VyIG9mIHVzIHNo
b3VsZAorICAgICAgICAvLyBkZXBlbmQgb24gb3VyIHZhbHVlLiBVc2VycyBvZiB0aGlzIG5vZGUg
anVzdCBuZWVkIHRvIG1haW50YWluIHRoYXQKKyAgICAgICAgLy8gd2UgZG9taW5hdGUgdGhlbS4K
KyAgICB9CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisKICAgICBMVmFsdWUgY29tcGlsZUdl
dEJ5VmFsSW1wbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNjAwOCwx
MSArNjA2OSwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBp
c0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxk
NSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGlzT3V0T2ZCb3VuZHMpLCB1bnN1
cmUoaXNJbkJvdW5kcykpOwotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAg
ICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kc0NvbmRpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNoaWxkNS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoZSBwcmVwcm9jZXNzb3IgY2hva2VzIG9uIFJFTEVBU0VfQVNTRVJUKFVTRShM
QVJHRV9UWVBFRF9BUlJBWVMpKSwgdGhpcyBpcyBlcXVpdmFsZW50LgorICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVpbnQ2NF90
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzQ29uZGl0aW9uID0gbV9v
dXQuYWJvdmVPckVxdWFsKG1fb3V0LnNpZ25FeHQzMlRvNjQoaW5kZXgpLCBsb3dTdHJpY3RJbnQ1
MihjaGlsZDUpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChjaGlsZDUudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHNDb25kaXRpb24gPSBtX291dC5hYm92ZU9yRXF1
YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91bmRzQ29uZGl0aW9uLCB1bnN1
cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7CisKICAgICAgICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0luQm91bmRzLCBp
c091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWVUb1N0
b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUodHlwZSkpOwogICAgICAgICAgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC04MTY5LDk1ICs4MjM3LDE4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVk
QXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAg
ICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hv
cihtX291dC5pbnRQdHJaZXJvKTsKLQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAg
ICAgICAgICAgIG1fb3V0LmFib3ZlKHNpemUsIG1fb3V0LmNvbnN0SW50MzIoSlNBcnJheUJ1ZmZl
clZpZXc6OmZhc3RTaXplTGltaXQpKSwKLSAgICAgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2Up
LCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkpOwotCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNtYWxsRW5vdWdoQ2FzZSwgc2xvd0Nhc2UpOwotCi0g
ICAgICAgICAgICBMVmFsdWUgYnl0ZVNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNobCht
X291dC56ZXJvRXh0UHRyKHNpemUpLCBtX291dC5jb25zdEludDMyKGxvZ0VsZW1lbnRTaXplKHR5
cGVkQXJyYXlUeXBlKSkpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlU
eXBlKSA8IDgpIHsKLSAgICAgICAgICAgICAgICBieXRlU2l6ZSA9IG1fb3V0LmJpdEFuZCgKLSAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGJ5dGVTaXplLCBtX291dC5jb25zdEludFB0cig3
KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxp
bnRwdHJfdD4oNykpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBMVmFs
dWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UsIGJ5dGVTaXplLCBzbG93Q2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3Rv
cmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93Q2FzZSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgc3RvcmFnZSwKLSAg
ICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sCi0gICAgICAgICAgICAgICAgbV9vdXQuY2Fz
dFRvSW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKLSAg
ICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy50
eXBlZEFycmF5UHJvcGVydGllcyk7Ci0KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXplKTsK
LSAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBh
dGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlLT5h
cHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdp
c3RlcikpOwotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1z
WzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1sy
XS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0K
LSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9yKHN0
b3JhZ2UpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5zaWduRXh0MzJUbzY0KGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKTsKIAotICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1
bHRWYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGVkQXJyYXlUeXBlKSB7
Ci0jZGVmaW5lIFRZUEVEX0FSUkFZX1RZUEVfQ0FTRShuYW1lKSBcCi0gICAgICAgICAgICBjYXNl
IFR5cGUgIyMgbmFtZTogXAotICAgICAgICAgICAgICAgIGZhc3RSZXN1bHRWYWx1ZSA9IGFsbG9j
YXRlT2JqZWN0PEpTIyNuYW1lIyNBcnJheT4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBz
bG93Q2FzZSk7IFwKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIEZPUl9FQUNI
X1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhUWVBFRF9BUlJBWV9UWVBFX0NB
U0UpCi0jdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCi0gICAgICAgICAgICBjYXNlIFR5cGVE
YXRhVmlldzoKLSAgICAgICAgICAgICAgICBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVj
dDxKU0RhdGFWaWV3PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFz
dFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7Ci0gICAgICAg
ICAgICBtX291dC5zdG9yZTMyKHNpemUsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25z
dEludDMyKEZhc3RUeXBlZEFycmF5KSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X21vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtdXRhdG9yRmVuY2Uo
KTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3Io
ZmFzdFJlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KyAgICAgICAgICAgIGVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUodHlwZWRBcnJheVR5cGUsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9u
KTsKLSAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlVmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5
cGUoKSwgbm9TdG9yYWdlLCBoYXZlU3RvcmFnZSk7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6
IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJy
ZW50bHkodHlwZWRBcnJheVR5cGUpKTsKIAotICAgICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0g
ICAgICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9u
cykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcih2bSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5
cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkp
LCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbnNbMl0uZGlyZWN0R1BSKCkpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbG93U3RyaWN0
SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGko
cG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgZW1p
dE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSh0eXBlZEFycmF5VHlwZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTgyNzcs
NyArODI2OCwxMDQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KLSAgICAKKworICAgIHZvaWQgZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZShUeXBlZEFy
cmF5VHlwZSB0eXBlZEFycmF5VHlwZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBzaXplNjRCaXRzKQorICAgIHsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgc21hbGxFbm91Z2hDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG5vU3RvcmFnZSA9IG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKTsK
KworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5hYm92ZShzaXplNjRC
aXRzLCBtX291dC5jb25zdEludDY0KEpTQXJyYXlCdWZmZXJWaWV3OjpmYXN0U2l6ZUxpbWl0KSks
CisgICAgICAgICAgICByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHNtYWxsRW5vdWdoQ2FzZSkp
OworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc21hbGxF
bm91Z2hDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0aHJvdWdoIHRoZSBy
ZXN0IG9mIHRoZSBmYXN0IHBhdGggdGhhdCB0aGUgc2l6ZSBpcyBhIDMyLWJpdCBudW1iZXIuCisg
ICAgICAgIHN0YXRpY19hc3NlcnQoaXNJbkJvdW5kczxpbnQzMl90PihKU0FycmF5QnVmZmVyVmll
dzo6ZmFzdFNpemVMaW1pdCkpOworCisgICAgICAgIExWYWx1ZSBieXRlU2l6ZSA9CisgICAgICAg
ICAgICBtX291dC5zaGwoc2l6ZTY0Qml0cywgbV9vdXQuY29uc3RJbnQzMihsb2dFbGVtZW50U2l6
ZSh0eXBlZEFycmF5VHlwZSkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGVkQXJyYXlU
eXBlKSA8IDgpIHsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gbV9vdXQuYml0QW5kKAorICAgICAg
ICAgICAgICAgIG1fb3V0LmFkZChieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoNykpLAorICAg
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykp
KTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JT
aXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dD
YXNlKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9jYXRv
ciwgc2xvd0Nhc2UpOworCisgICAgICAgIHNwbGF0V29yZHMoCisgICAgICAgICAgICBzdG9yYWdl
LAorICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLAorICAgICAgICAgICAgbV9vdXQuY2FzdFRv
SW50MzIobV9vdXQubFNocihieXRlU2l6ZSwgbV9vdXQuY29uc3RJbnRQdHIoMykpKSwKKyAgICAg
ICAgICAgIG1fb3V0LmludDY0WmVybywKKyAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVBy
b3BlcnRpZXMpOworCisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgeworICAgICAgICAgICAgUGF0
Y2hwb2ludFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBl
KCkpOworICAgICAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFn
ZSk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZChzaXplNjRCaXRzLCBCMzo6VmFs
dWVSZXAoQjM6OlZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBhdXRo
ZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5tb3Zl
KHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBqaXQu
dGFnQXJyYXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAgICB9Cisj
ZW5kaWYKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBoYXZlU3RvcmFnZSA9IG1fb3V0LmFuY2hv
cihzdG9yYWdlKTsKKworICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbnVsbHB0cjsK
KyAgICAgICAgc3dpdGNoICh0eXBlZEFycmF5VHlwZSkgeworI2RlZmluZSBUWVBFRF9BUlJBWV9U
WVBFX0NBU0UobmFtZSkgXAorICAgICAgICBjYXNlIFR5cGUgIyMgbmFtZTogXAorICAgICAgICAg
ICAgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmplY3Q8SlMjI25hbWUjI0FycmF5PihzdHJ1
Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsgXAorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhU
WVBFRF9BUlJBWV9UWVBFX0NBU0UpCisjdW5kZWYgVFlQRURfQVJSQVlfVFlQRV9DQVNFCisgICAg
ICAgIGNhc2UgVHlwZURhdGFWaWV3OgorICAgICAgICAgICAgZmFzdFJlc3VsdFZhbHVlID0gYWxs
b2NhdGVPYmplY3Q8SlNEYXRhVmlldz4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93
Q2FzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwg
bV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworI2lmIFVTRShMQVJHRV9UWVBFRF9B
UlJBWVMpCisgICAgICAgIG1fb3V0LnN0b3JlNjQoc2l6ZTY0Qml0cywgZmFzdFJlc3VsdFZhbHVl
LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICBtX291
dC5zdG9yZTMyKG1fb3V0LmNhc3RUb0ludDMyKHNpemU2NEJpdHMpLCBmYXN0UmVzdWx0VmFsdWUs
IG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbmRpZgorICAgICAgICBtX291
dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoRmFzdFR5cGVkQXJyYXkpLCBmYXN0UmVzdWx0VmFs
dWUsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSk7CisKKyAgICAgICAgbXV0YXRvckZl
bmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3Io
ZmFzdFJlc3VsdFZhbHVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBM
VmFsdWUgc3RvcmFnZVZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG5vU3RvcmFnZSwg
aGF2ZVN0b3JhZ2UpOworCisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIExW
YWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICBbPSwgJnZt
XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQ
YXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxH
ZW5lcmF0b3Iodm0sCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlX
aXRoU2l6ZUZvclR5cGUodHlwZWRBcnJheVR5cGUpLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCks
IGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBzaXplNjRCaXRzLCBzdG9yYWdlVmFsdWUpOworICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9p
bnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsK
ICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC0x
NDY1Niw2ICsxNDc0NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBi
YXNlIGFuZCB2YWx1ZSBhcmUgNjQtYml0cywgYmVnaW4gYW5kIGVuZCBhcmUgMzItYml0cworICAg
IC8vIHN0b3JlcyB2YWx1ZSBhdCBldmVyeSA2NC1iaXRzIHdvcmQgYmV0d2VlbiBiYXNlK2JlZ2lu
KjggYW5kIGJhc2UrZW5kKjgKICAgICB2b2lkIHNwbGF0V29yZHMoTFZhbHVlIGJhc2UsIExWYWx1
ZSBiZWdpbiwgTFZhbHVlIGVuZCwgTFZhbHVlIHZhbHVlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGhl
YXApCiAgICAgewogICAgICAgICBjb25zdCB1aW50NjRfdCB1bnJvbGxpbmdMaW1pdCA9IDEwOwpA
QCAtMTU1OTEsNyArMTU2ODEsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBEYXRhVmlld0RhdGEg
ZGF0YSA9IG1fbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CiAKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwg
bV9vdXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmNvbnN0SW50MzIoMCkpKTsKKyAgICAgICAgTFZh
bHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQ2NE5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCk7CisjZWxzZQorICAgICAgICAvLyBObyBuZWVkIGZvciBh
biBleHBsaWNpdCBjb21wYXJpc29uIG9mIGluZGV4IHRvIDAsIHRoZSBjaGVjayBhZ2FpbnN0IGxl
bmd0aCBjYXRjaGVzIHRoYXQgY2FzZQogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVy
b0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNr
ID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CiAgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4g
MSkKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1f
b3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKQEAgLTE1NzM0LDcgKzE1ODMwLDEz
IEBAIHByaXZhdGU6CiAKICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBtX25vZGUtPmRhdGFW
aWV3RGF0YSgpOwogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKKyAgICAgICAgc3BlY3Vs
YXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGluZGV4
LCBtX291dC5jb25zdEludDMyKDApKSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5s
b2FkNjROb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpOworI2Vsc2UKKyAgICAgICAgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY29tcGFyaXNv
biBvZiBpbmRleCB0byAwLCB0aGUgY2hlY2sgYWdhaW5zdCBsZW5ndGggY2F0Y2hlcyB0aGF0IGNh
c2UKICAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9vdXQubG9hZDMy
Tm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7
CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIo
aW5kZXgpOwogICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCiAgICAgICAgICAgICBpbmRl
eFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEu
Ynl0ZVNpemUgLSAxKSk7CkBAIC0xNzIzNiw3ICsxNzMzOCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBhdXRvIGRvVW50YWdBcnJheVB0ciA9IFsmXShMVmFsdWUgdGFnZ2VkUHRyKSB7CiAjaWYgQ1BV
KEFSTTY0RSkKICAgICAgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpIHsK
KyNpZiBVU0UoQUREUkVTUzY0KQorICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplID0gbV9vdXQu
bG9hZDY0KGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKKyNlbHNlCiAg
ICAgICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5K
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHVudGFnQXJyYXlQdHIodGFnZ2VkUHRyLCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiBwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCBh
OTQyMDA5M2Y1MjkuLmVkOGZmNzNlMWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCkBAIC0zMjksNiArMzI5LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBub25OZWdhdGl2
ZTMyKExWYWx1ZSBsb2FkSW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGxvYWRJbnN0cnVjdGlvbjsgfQog
ICAgIExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1
cm4gbG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExWYWx1
ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIoYmFzZSwg
ZmllbGQpOyB9CisgICAgTFZhbHVlIGxvYWQ2NE5vbk5lZ2F0aXZlKExWYWx1ZSBiYXNlLCBjb25z
dCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYmFzZSwgZmllbGQpOyB9CiAK
ICAgICBMVmFsdWUgZXF1YWwoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBub3RFcXVhbChM
VmFsdWUsIExWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lu
dHJpbnNpY0VtaXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNF
bWl0dGVyLmNwcAppbmRleCA1Yzc2NWVkOTc2NTAuLjg5NTY4ZDQ2MzBmYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODYsMjMgKzg2
LDMyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRl
cihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICBzd2l0Y2ggKGludHJpbnNpYygp
KSB7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOiB7CisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKKyAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdGF0ZS5iYXNlR1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZh
bHVlR1BSKTsKKyAgICAgICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUu
c2NyYXRjaEdQUiwgc3RhdGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQuYm94SW50MzIodmFs
dWVHUFIsIHZhbHVlUmVncyk7CisjZW5kaWYKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJp
bnNpYzogewogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gc3RydWN0dXJlKCktPmNsYXNz
SW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGU7Ci0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJS
QVlTKQorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YXRlLmJh
c2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVHUFIpOwor
ICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPiAxKQorICAgICAgICAgICAgaml0LmxzaGlm
dDY0KFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKKyAgICAg
ICAgaml0LmJveEludDUyKHZhbHVlR1BSLCB2YWx1ZUdQUiwgc3RhdGUuc2NyYXRjaEdQUiwgc3Rh
dGUuc2NyYXRjaEZQUik7CisjZWxzZQogICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0YXRlLmJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdmFsdWVHUFIpOwotCiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlKSA+IDEpIHsK
LSAgICAgICAgICAgIC8vIFdlIGNhbiB1c2UgYSBiaXRzaGlmdCBoZXJlIHNpbmNlIHdlIFR5cGVk
QXJyYXlzIGNhbm5vdCBoYXZlIGJ5dGVMZW5ndGggdGhhdCBvdmVyZmxvd3MgYW4gaW50MzIuCi0g
ICAgICAgICAgICBqaXQubHNoaWZ0MzIodmFsdWVHUFIsIEltbTMyKGxvZ0VsZW1lbnRTaXplKHR5
cGUpKSwgdmFsdWVHUFIpOworICAgICAgICAgICAgLy8gV2UgY2FuIHVzZSBhIGJpdHNoaWZ0IGhl
cmUgc2luY2Ugb24gQUREUkVTUzMyIHBsYXRmb3JtcyBUeXBlZEFycmF5cyBjYW5ub3QgaGF2ZSBi
eXRlTGVuZ3RoIHRoYXQgb3ZlcmZsb3dzIGFuIGludDMyLgorICAgICAgICAgICAgaml0LmxzaGlm
dDMyKFRydXN0ZWRJbW0zMihsb2dFbGVtZW50U2l6ZSh0eXBlKSksIHZhbHVlR1BSKTsKICAgICAg
ICAgfQotCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQUiwgdmFsdWVSZWdzKTsKKyNlbmRp
ZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
MzMsOCArMTQyLDEyIEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJp
bnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIGppdC5tb3Zl
KFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAgICAgIGRv
bmUubGluaygmaml0KTsKLSAgICAgICAgCisKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQor
ICAgICAgICBqaXQuYm94SW50NTIodmFsdWVHUFIsIHZhbHVlR1BSLCBzdGF0ZS5zY3JhdGNoR1BS
LCBzdGF0ZS5zY3JhdGNoRlBSKTsKKyNlbHNlCiAgICAgICAgIGppdC5ib3hJbnQzMih2YWx1ZUdQ
UiwgdmFsdWVSZWdzKTsKKyNlbmRpZgogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCA0YTVjMDgwYzA2MGMuLmZhYzhlMGFjNjY4YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05MzcsMTAgKzkzNyw4IEBAIHN0YXRp
YyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBKU1ZhbHVlIHN1CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAg
IGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJ
bmRleFF1aWNrbHkoaSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRl
eFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPnRyeVNldElu
ZGV4UXVpY2tseSh2bSwgaSwgdmFsdWUsIGFycmF5UHJvZmlsZSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQog
ICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAgLTIzNDIs
MjEgKzIzNDAsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdl
dEFzSW50MzIoKSkgewotICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CisgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgo
KSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoaXNKU1N0cmlu
ZyhiYXNlVmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5nKGJhc2VW
YWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1
ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKSk7CiAg
ICAgICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRl
eFF1aWNrbHkoaSk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBvYmplY3QtPnRy
eUdldEluZGV4UXVpY2tseShpLCBhcnJheVByb2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAKICAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZh
bHNlOwogCi0gICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdp
dGhDb250aWd1b3VzICYmIGkgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgPCBvYmpl
Y3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKG9iamVj
dC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cworICAgICAgICAgICAgICAg
ICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1Ymxp
Y0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlzIHRvIEFy
cmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CiAgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAogICAgICAgICAg
ICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKQEAg
LTIzNzIsOCArMjM3MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGkpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZh
bHVlLmdldChnbG9iYWxPYmplY3QsIGkpKTsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc051
bWJlcigpICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBhcnJheVByb2ZpbGUpCiAgICAgICAgIGFy
cmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDQxYzcxYjYwMDQ0ZS4u
ZTc2ZGFkYTBkMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAjZGVmaW5lIE9GRkxJ
TkVfQVNNX0JJR0lOVDMyIDAKICNlbmRpZgogCisjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykK
KyNkZWZpbmUgT0ZGTElORV9BU01fTEFSR0VfVFlQRURfQVJSQVlTIDEKKyNlbHNlCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0xBUkdFX1RZUEVEX0FSUkFZUyAwCisjZW5kaWYKKwogI2lmIENQVShBRERS
RVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTY4MTM3N2Ji
OTg0Li40OTRlZjc2MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGUKICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAg
ICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0
LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+
Z2V0SW5kZXhRdWlja2x5KGkpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gb2Jq
ZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaSwgYXJyYXlQcm9maWxlKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3Vu
ZHMgPSBmYWxzZTsKIApAQCAtMTE3MCwxNCArMTE3MCwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJh
bmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
Z2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAKICAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgp
KSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwg
dmFsdWUpKQotICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2
YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIW9iamVjdC0+dHJ5U2V0
SW5kZXhRdWlja2x5KHZtLCBpLCB2YWx1ZSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkKICAg
ICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElO
VF9FTkQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI0MjFhN2ZhNDEwZS4uNmNkYmQ4ZGUzYmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0yMTcsNiArMjE3LDEwIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFN0
cnVjdHVyZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19l
bnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgogZW5kCiAKK2lmIExBUkdFX1RZUEVE
X0FSUkFZUworICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBB
cnJheVByb2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCitlbmQKKwogY29uc3QgbWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25zdGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRF
IG9yIFJJU0NWNjQKQEAgLTEzMTAsNyArMTMxNCw4IEBAIG1hY3JvIGFycmF5UHJvZmlsZShvZmZz
ZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQogICAgIGxvYWRiIEpT
Q2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1t
YWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFsLCBm
aW5pc2hEb3VibGVHZXRCeVZhbCwgc2xvd1BhdGgpCisjIE5vdGUgdGhhdCBpbmRleCBpcyBhbHJl
YWR5IHNpZ24tZXh0ZW5kZWQgdG8gYmUgYSByZWdpc3RlciB3aWR0aC4KK21hY3JvIGdldEJ5VmFs
VHlwZWRBcnJheShiYXNlLCBpbmRleCwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJsZUdl
dEJ5VmFsLCBzZXRMYXJnZVR5cGVkQXJyYXksIHNsb3dQYXRoKQogICAgICMgRmlyc3QgbGV0cyBj
aGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUg
Ym9pbGVycGxhdGUgdXAgZnJvbnQuCiAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbYmFzZV0sIHQy
CiAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgpAQCAtMTMyMSwxMSArMTMyNiwyNiBA
QCBtYWNybyBnZXRCeVZhbFR5cGVkQXJyYXkoYmFzZSwgaW5kZXgsIGZpbmlzaEludEdldEJ5VmFs
LCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgcwogICAgIGlmIEFSTTY0RQogICAgICAgICBjb25zdCBs
ZW5ndGggPSB0NgogICAgICAgICBjb25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9hZGkgSlNB
cnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5ndGgKLSAgICAgICAgYmlhZXEgaW5k
ZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAg
ICAgICAgICBsb2FkcSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIGxlbmd0aAor
ICAgICAgICAgICAgYnFhZXEgaW5kZXgsIGxlbmd0aCwgc2xvd1BhdGgKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW2Jhc2VdLCBsZW5n
dGgKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBsZW5ndGgsIHNsb3dQYXRoCisgICAgICAgIGVu
ZAogICAgIGVsc2UKICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlvbmFs
bHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQgb24g
b3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSBpbmRleCwgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fbGVuZ3RoW2Jhc2VdLCBzbG93UGF0aAorICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMK
KyAgICAgICAgICAgIGJxYWVxIGluZGV4LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFz
ZV0sIHNsb3dQYXRoCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpYWVxIGluZGV4LCBKU0Fy
cmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbYmFzZV0sIHNsb3dQYXRoCisgICAgICAgIGVuZAorICAg
IGVuZAorCisgICAgaWYgTEFSR0VfVFlQRURfQVJSQVlTCisgICAgICAgIGJxYmVxIGluZGV4LCBT
bWFsbFR5cGVkQXJyYXlNYXhMZW5ndGgsIC5zbWFsbFR5cGVkQXJyYXkKKyAgICAgICAgc2V0TGFy
Z2VUeXBlZEFycmF5KCkKKy5zbWFsbFR5cGVkQXJyYXk6CiAgICAgZW5kCiAKICAgICBsb2FkcCBK
U0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbYmFzZV0sIHQzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4
IDUwZDVkYmRmNjAyYS4uNGU3MGY4YjE1ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTYyNCw2
ICsxNjI0LDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgICAgIGRpc3BhdGNoKCkK
ICAgICBlbmQKIAorICAgIG1hY3JvIHNldExhcmdlVHlwZWRBcnJheSgpCisgICAgICAgIGNyYXNo
KCkKKyAgICBlbmQKKwogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBnZXQobV9iYXNlLCB0MikK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAs
IC5vcEdldEJ5VmFsU2xvdykKQEAgLTE2NjksNyArMTY3Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgot
ICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0
MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZhbCwgc2V0TGFyZ2VU
eXBlZEFycmF5LCAub3BHZXRCeVZhbFNsb3cpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkODRi
NmVhZDM3ZmQuLjAyOTIwY2E4NDI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MTMsNiArMTcxMywxNCBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgICAgICBmaW5pc2hHZXRCeVZhbChzY3JhdGNo
MSwgc2NyYXRjaDIpCiAgICAgZW5kCiAKKyAgICBtYWNybyBzZXRMYXJnZVR5cGVkQXJyYXkoKQor
ICAgICAgICBpZiBMQVJHRV9UWVBFRF9BUlJBWVMKKyAgICAgICAgICAgIHN0b3JlYiAxLCBPcEdl
dEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUgKyBBcnJheVByb2ZpbGU6Om1fbWF5QmVM
YXJnZVR5cGVkQXJyYXlbdDVdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNyYXNoKCkKKyAg
ICAgICAgZW5kCisgICAgZW5kCisKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKICAgICBnZXQobV9i
YXNlLCB0MikKQEAgLTE3MjMsNiArMTczMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAK
ICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMy
KHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICMgVGhpcyBzaWduLWV4dGVuc2lv
biBtYWtlcyB0aGUgYm91bmRzLWNoZWNraW5nIGluIGdldEJ5VmFsVHlwZWRBcnJheSB3b3JrIGV2
ZW4gb24gNEdCIFR5cGVkQXJyYXkuCiAgICAgc3hpMnEgdDEsIHQxCiAKICAgICBsb2FkQ2FnZWRK
U1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCkBAIC0xNzYz
LDcgKzE3NzIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlW
YWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGRpc3BhdGNoKCkKIAog
Lm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAs
IHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFs
U2xvdykKKyAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwg
ZmluaXNoRG91YmxlR2V0QnlWYWwsIHNldExhcmdlVHlwZWRBcnJheSwgLm9wR2V0QnlWYWxTbG93
KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Z2V0X2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcAppbmRleCBjOWI4ZjJhNzE5MWUuLjQ5N2Y0OWU4YTFmMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgUmVm
PFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VE
ZXN0cnVjdG9yKCkKICAgICByZXR1cm4gZGVzdHJ1Y3Rvci5nZXQoKS5jb3B5UmVmKCk7CiB9CiAK
LVNoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFycmF5QnVmZmVyQ29udGVudHModm9p
ZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBk
ZXN0cnVjdG9yKQorU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJD
b250ZW50cyh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJiBkZXN0cnVjdG9yKQogICAgIDogbV9kYXRhKGRhdGEsIHNpemUpCiAgICAgLCBtX2Rl
c3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZSkK
QEAgLTY4LDcgKzY4LDcgQEAgQXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50
cyhBcnJheUJ1ZmZlckNvbnRlbnRzJiYgb3RoZXIpCiAgICAgb3RoZXIudHJhbnNmZXJUbygqdGhp
cyk7CiB9CiAKLUFycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHModm9pZCog
ZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
JiYgZGVzdHJ1Y3RvcikKK0FycmF5QnVmZmVyQ29udGVudHM6OkFycmF5QnVmZmVyQ29udGVudHMo
dm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiYmIGRlc3RydWN0b3IpCiAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZUluQnl0ZXMpCiAgICAg
LCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogewpAQCAtMTA5LDIzICsxMDksMjEgQEAgdm9p
ZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpyZXNldCgpCiAgICAgbV9zaXplSW5CeXRlcyA9IDA7CiB9
CiAKLXZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9s
aWN5KQordm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9s
aWN5KQogewotICAgIC8vIERvIG5vdCBhbGxvdyAzMS1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFs
IHNpemUuCi0gICAgaWYgKG51bUVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6
ZSA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplOwotICAgICAgICBpZiAodG90YWxTaXpl
IC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVTaXplIHx8IHRvdGFsU2l6ZSA+IE1BWF9BUlJB
WV9CVUZGRVJfU0laRSkgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQorICAgIENoZWNrZWRTaXplIHNpemVJbkJ5dGVzID0gbnVtRWxlbWVudHM7
CisgICAgc2l6ZUluQnl0ZXMgKj0gZWxlbWVudEJ5dGVTaXplOworICAgIGlmIChzaXplSW5CeXRl
cy5oYXNPdmVyZmxvd2VkKCkgfHwgc2l6ZUluQnl0ZXMudmFsdWUoKSA+IE1BWF9BUlJBWV9CVUZG
RVJfU0laRSkgeworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IHNpemVfdCBzaXplSW5CeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4obnVtRWxlbWVudHMpICog
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50Qnl0ZVNpemUpOwotICAgIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZSA9IHNpemVJbkJ5dGVzOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gc2l6
ZUluQnl0ZXMudmFsdWUoKTsKICAgICBpZiAoIWFsbG9jYXRpb25TaXplKQogICAgICAgICBhbGxv
Y2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3VyZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2NhdGVzIHNv
bWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4gV2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0IHRoZSBi
dWZmZXIgaXMgZGV0YWNoZWQuCiAKICAgICB2b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRyeU1hbGxv
YyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgbV9kYXRhID0gRGF0
YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOworICAgIG1fZGF0YSA9IERhdGFUeXBlKGRhdGEsIHNp
emVJbkJ5dGVzLnZhbHVlKCkpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNldCgpOwog
ICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRl
bnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGUKICAgICBpZiAocG9saWN5ID09IFplcm9Jbml0aWFsaXplKQogICAgICAgICBtZW1zZXQoZGF0
YSwgMCwgYWxsb2NhdGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IHNpemVJbkJ5dGVz
OworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlcy52YWx1ZSgpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKICAgICBtX2Rl
c3RydWN0b3IgPSBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCk7CiB9
CkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpzaGFyZVdpdGgo
QXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlQob3RoZXIubV9z
aXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwogfQogCi1SZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKICAgICBhdXRvIGJ1
ZmZlciA9IHRyeUNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsKICAgICBpZiAo
IWJ1ZmZlcikKQEAgLTE5MSw3ICsxODksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKG90aGVyLmRhdGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKIH0KIAotUmVmPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lk
KiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3Jl
YXRlKHNvdXJjZSwgYnl0ZUxlbmd0aCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0yMDgsNyArMjA2
LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyQ29u
dGVudHMmJiBjb250ZW50cykKIC8vIEN1cnJlbnQgdGhpcyBpcyBvbmx5IHVzZWQgZnJvbToKIC8v
IC0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8Pjo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeS4gQnV0
IGluIHRoYXQgY2FzZSwgdGhlIG1lbW9yeSBzaG91bGQgaGF2ZSBhbHJlYWR5IGNvbWUKIC8vICAg
ZnJvbSB0aGUgY2FnZS4KLVJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0
ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5
dGVMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNFbmFibGVkKCkgfHwgKEdpZ2Fj
YWdlOjpjb250YWlucyhkYXRhKSAmJiBHaWdhY2FnZTo6Y29udGFpbnMoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpICsgYnl0ZUxlbmd0aCAtIDEpKSk7CiAgICAgcmV0dXJuIGNyZWF0
ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNh
Z2VEZXN0cnVjdG9yKCkpOwpAQCAtMjIwLDcgKzIxOCw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0CiAvLyAgIGxvbmdlciBjYWdlZCwgb3Igd2UgY291bGQgaW50cm9kdWNlIGEgbmV3IHNldCBv
ZiB0eXBlZCBhcnJheSB0eXBlcyB0aGF0IGFyZSB1bmNhZ2VkIGFuZCBnZXQgYWNjZXNzZWQKIC8v
ICAgZGlmZmVyZW50bHkuCiAvLyAtIFdlYkFzc2VtYmx5LiBXYXNtIHNob3VsZCBhbGxvY2F0ZSBm
cm9tIHRoZSBjYWdlLgotUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5
dGVzKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVz
dHJ1Y3RvckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCwg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQogewogICAgIGlmIChk
YXRhICYmICFHaWdhY2FnZTo6aXNDYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBkYXRhKSkKICAg
ICAgICAgR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMjI5LDcgKzIy
Nyw3IEBAIFJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuCiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3Zl
KGNvbnRlbnRzKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQorUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUobnVt
RWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRp
YWxpemUpOwogfQpAQCAtMjM5LDcgKzIzNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShBcnJheUJ1ZmZlciYgb3RoZXIpCiAgICAgcmV0dXJuIHRyeUNyZWF0
ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCitSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
Y29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICBBcnJheUJ1ZmZl
ckNvbnRlbnRzIGNvbnRlbnRzOwogICAgIGNvbnRlbnRzLnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgs
IDEsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKQEAgLTI0OCwxNyArMjQ2
LDE3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCB2
b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5nCiAgICAgcmV0dXJuIGNyZWF0ZUludGVybmFs
KFdURk1vdmUoY29udGVudHMpLCBzb3VyY2UsIGJ5dGVMZW5ndGgpOwogfQogCi1SZWY8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOwogfQogCi1SZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCitSZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVt
ZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQogewogICAgIHJldHVybiB0cnlDcmVhdGUo
bnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udElu
aXRpYWxpemUpOwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9saWN5KQorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSBwb2xpY3kp
CiB7CiAgICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRl
U2l6ZSwgcG9saWN5KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI2NiwxNSArMjY0LDE3IEBAIFJl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OwogfQogCi1SZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGVJbnRlcm5hbChBcnJh
eUJ1ZmZlckNvbnRlbnRzJiYgY29udGVudHMsIGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQg
Ynl0ZUxlbmd0aCkKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFs
KEFycmF5QnVmZmVyQ29udGVudHMmJiBjb250ZW50cywgY29uc3Qgdm9pZCogc291cmNlLCBzaXpl
X3QgYnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIWJ5dGVMZW5ndGggfHwgc291cmNlKTsKICAg
ICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpuZXcgQXJyYXlCdWZmZXIoV1RGTW92ZShjb250ZW50
cykpKTsKLSAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIHNvdXJjZSwgYnl0ZUxlbmd0aCk7Cisg
ICAgaWYgKGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAgICAgIG1l
bWNweShidWZmZXItPmRhdGEoKSwgc291cmNlLCBieXRlTGVuZ3RoKTsKKyAgICB9CiAgICAgcmV0
dXJuIGJ1ZmZlcjsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKK1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Q
b2xpY3kgcG9saWN5KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7CiAgICAg
Y29udGVudHMudHJ5QWxsb2NhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5
KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJyYXlCdWZm
ZXJDb250ZW50cyYmIGNvbnRlbnRzKQogewogfQogCi11bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xh
bXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCitzaXplX3Qg
QXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3Qgcmln
aHQpCiB7CiAgICAgQVNTRVJUKGxlZnQgPD0gcmlnaHQpOwogICAgIGlmICh4IDwgbGVmdCkKQEAg
LTMwMSw5ICszMDEsOSBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBWYWx1ZShkb3VibGUg
eCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpCiAgICAgcmV0dXJuIHg7CiB9CiAKLXVu
c2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3QKK3NpemVf
dCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiB7Ci0gICAgdW5z
aWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5ndGgoKTsKKyAgICBzaXplX3QgY3VycmVudExl
bmd0aCA9IGJ5dGVMZW5ndGgoKTsKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICBpbmRleCA9
IGN1cnJlbnRMZW5ndGggKyBpbmRleDsKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwg
Y3VycmVudExlbmd0aCk7CkBAIC0zMTksOSArMzE5LDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogICAgIHJldHVybiBzbGljZVdp
dGhDbGFtcGVkSW5kZXgoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNp
Z25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90IGVuZCkg
Y29uc3QKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4g
OiAwOworICAgIHNpemVfdCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOwog
ICAgIGF1dG8gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICBpZiAocmVzdWx0KQogICAgICAg
ICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggNjhmZjkwZTEzZWJhLi5lYWNjYTJj
MjMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDEzICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgog
I2luY2x1ZGUgPHd0Zi9QYWNrZWRSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgVVNFKExBUkdF
X1RZUEVEX0FSUkFZUykKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSk7CisjZGVmaW5lIE1BWF9BUlJBWV9CVUZGRVJfU0laRSAoMXVsbCA8PCAzMikKKyNl
bHNlCitzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplX3QpID09IHNpemVvZih1aW50MzJfdCkpOwor
Ly8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaXplX3QgdG8gc3RvcmUgdGhlIHNpemUgaW4gYnl0
ZXMgb2YgYXJyYXkgYnVmZmVycywgd2UgY2Fubm90IHN1cHBvcnQgNEdCIG9uIDMyLWJpdCBwbGF0
Zm9ybXMuCisvLyBTbyB3ZSBhcmUgc3RpY2tpbmcgd2l0aCAyR0IuIEl0IHNob3VsZCBpbiB0aGVv
cnkgYmUgcG9zc2libGUgdG8gc3VwcG9ydCB1cCB0byAoNEdCIC0gMUIpIGlmIGFueW9uZSBjYXJl
cy4KICNkZWZpbmUgTUFYX0FSUkFZX0JVRkZFUl9TSVpFIDB4N2ZmZmZmZmZ1CisjZW5kaWYKIAog
Y2xhc3MgVk07CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTUxLDcgKzYwLDcgQEAgdXNpbmcgUGFj
a2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gPSBQYWNrZWRSZWZQdHI8U2hhcmVkVGFz
azx2b2lkKHZvaWQqKT4KIAogY2xhc3MgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRzPiB7CiBwdWJs
aWM6Ci0gICAgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBz
aXplLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKKyAgICBTaGFyZWRBcnJheUJ1
ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHNpemVfdCwgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKTsKICAgICAKICAgICB2
b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChtX3NpemVJbkJ5
dGVzKTsgfQpAQCAtNjAsMTQgKzY5LDE0IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgRGF0YVR5cGUg
PSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47CiAgICAg
RGF0YVR5cGUgbV9kYXRhOwogICAgIFBhY2tlZEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9u
IG1fZGVzdHJ1Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIHNpemVfdCBt
X3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cygpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMs
IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgc2l6ZV90IHNpemVJbkJ5dGVzLCBBcnJh
eUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBBcnJheUJ1ZmZlckNvbnRlbnRzKEFycmF5QnVmZmVyQ29udGVudHMmJik7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFycmF5QnVmZmVyQ29u
dGVudHMmJik7CkBAIC03OSw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgeyByZXR1cm4gISFtX2RhdGE7IH0KICAgICAKICAgICB2b2lkKiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChzaXplSW5CeXRlcygpKTsgfQotICAgIHVu
c2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQorICAg
IHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAg
ICAKICAgICBib29sIGlzU2hhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWQ7IH0KICAgICAK
QEAgLTk0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIERvbnRJbml0aWFsaXplCiAgICAg
fTsKIAotICAgIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgSW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHZvaWQgdHJ5QWxs
b2NhdGUoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEluaXRp
YWxpemF0aW9uUG9saWN5KTsKICAgICAKICAgICB2b2lkIG1ha2VTaGFyZWQoKTsKICAgICB2b2lk
IHRyYW5zZmVyVG8oQXJyYXlCdWZmZXJDb250ZW50cyYpOwpAQCAtMTA1LDI4ICsxMTQsMjggQEAg
cHJpdmF0ZToKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0
cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFBhY2tlZFJlZlB0cjxTaGFyZWRBcnJh
eUJ1ZmZlckNvbnRlbnRzPiBtX3NoYXJlZDsKLSAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwor
ICAgIHNpemVfdCBtX3NpemVJbkJ5dGVzOwogfTsKIAogY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJs
aWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNp
Z25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5
QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5
QnVmZmVyQ29udGVudHMmJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVh
dGVGcm9tQnl0ZXMoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCwgQXJyYXlC
dWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGJ5dGVM
ZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZUZyb21CeXRlcyhjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCwgQXJyYXlC
dWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3Qg
Ynl0ZUxlbmd0aCk7CiAKICAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKICAgICBp
bmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIGlubGluZSB1bnNpZ25lZCBieXRl
TGVuZ3RoKCkgY29uc3Q7CisgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBtYWtlU2hhcmVkKCk7CiAgICAgdm9pZCBzZXRTaGFyaW5nTW9kZShBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlKTsKQEAgLTEzNyw3ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwg
ZG91YmxlIGVuZCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVm
ZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHVuc2lnbmVkIGJlZ2luLCB1
bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KHNpemVfdCBiZWdpbiwgc2l6ZV90IGVuZCkgY29u
c3Q7CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQgdW5waW4o
KTsKQEAgLTE2MSwxMiArMTcwLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2FnZURlc3Ry
dWN0b3IoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUo
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZm
ZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwotICAgIHN0YXRpYyBSZWY8QXJyYXlC
dWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCos
IHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJD
b250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZm
ZXI+IGNyZWF0ZShzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwg
QXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOworICAgIHN0YXRpYyBS
ZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29u
c3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1
ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZmZXIoQXJy
YXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3Vi
bGUgaW5kZXgpIGNvbnN0OwotICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShk
b3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOworICAgIGlubGluZSBzaXpl
X3QgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OworICAgIHN0YXRpYyBpbmxpbmUgc2l6
ZV90IGNsYW1wVmFsdWUoZG91YmxlIHgsIHNpemVfdCBsZWZ0LCBzaXplX3QgcmlnaHQpOwogCiAg
ICAgdm9pZCBub3RpZnlEZXRhY2hpbmcoVk0mKTsKIApAQCAtMTkyLDcgKzIwMSw3IEBAIGNvbnN0
IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50cy5k
YXRhKCk7CiB9CiAKLXVuc2lnbmVkIEFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK3Np
emVfdCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29u
dGVudHMuc2l6ZUluQnl0ZXMoKTsKIH0KQEAgLTIwNSw3ICsyMTQsNyBAQCBib29sIEFycmF5QnVm
ZmVyOjppc1NoYXJlZCgpIGNvbnN0CiBzaXplX3QgQXJyYXlCdWZmZXI6OmdjU2l6ZUVzdGltYXRl
SW5CeXRlcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gc2Nh
bGUgdGhpcyBieSB0aGUgc2hhcmVkIHJlZiBjb3VudCBvciBzb21ldGhpbmcuCi0gICAgcmV0dXJu
IHNpemVvZihBcnJheUJ1ZmZlcikgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVMZW5ndGgoKSk7
CisgICAgcmV0dXJuIHNpemVvZihBcnJheUJ1ZmZlcikgKyBieXRlTGVuZ3RoKCk7CiB9CiAKIHZv
aWQgQXJyYXlCdWZmZXI6OnBpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA3NjhmZWE5MDliYWIuLjQ3MzcyMjc0NTM0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDE4ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJy
YXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygKLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKICAgICAgICAgOiBtX2J5dGVPZmZzZXQoYnl0
ZU9mZnNldCkKICAgICAgICAgLCBtX2lzRGV0YWNoYWJsZSh0cnVlKQogICAgICAgICAsIG1fYnl0
ZUxlbmd0aChieXRlTGVuZ3RoKQogICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkK
IHsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBDcmFzaE9uT3ZlcmZsb3c+IGxlbmd0aChieXRlT2Zm
c2V0KTsKKyAgICBDaGVja2VkPHNpemVfdCwgQ3Jhc2hPbk92ZXJmbG93PiBsZW5ndGgoYnl0ZU9m
ZnNldCk7CiAgICAgbGVuZ3RoICs9IGJ5dGVMZW5ndGg7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihsZW5ndGggPD0gbV9idWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgaWYgKG1fYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTM5NjA3Nzc4YTkuLjA5OTk1NGI4NjUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKQEAgLTc3LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsgfQogCi0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCgp
IGNvbnN0CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KGlzRGV0YWNoZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9i
eXRlT2Zmc2V0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREZXRh
Y2hhYmxlKGJvb2wpOwogICAgIGJvb2wgaXNEZXRhY2hhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0RldGFjaGFibGU7IH0KQEAgLTkyLDE5ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAgICAvLyBIZWxwZXIgdG8g
dmVyaWZ5IGJ5dGUgb2Zmc2V0IGlzIHNpemUgYWxpZ25lZC4KLSAgICBzdGF0aWMgYm9vbCB2ZXJp
ZnlCeXRlT2Zmc2V0QWxpZ25tZW50KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNpemVfdCBzaXplKQor
ICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoc2l6ZV90IGJ5dGVPZmZz
ZXQsIHNpemVfdCBlbGVtZW50U2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhKGJ5dGVPZmZz
ZXQgJiAoc2l6ZSAtIDEpKTsKKyAgICAgICAgcmV0dXJuICEoYnl0ZU9mZnNldCAmIChlbGVtZW50
U2l6ZSAtIDEpKTsKICAgICB9CiAKLSAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZl
biBzdWItcmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIgaXMKLSAgICAvLyB3aXRoaW4gcmFuZ2UuCi0g
ICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBz
aXplKQorICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1Yi1yYW5nZSBvZiBh
biBBcnJheUJ1ZmZlciBpcyB3aXRoaW4gcmFuZ2UuCisgICAgc3RhdGljIGJvb2wgdmVyaWZ5U3Vi
UmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQs
IHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgc2l6
ZV90IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9m
ZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVu
c2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNp
emU7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBzdGF0aWNfY2FzdDxzaXplX3Q+KGVsZW1lbnRTaXplKTsKICAgICAgICAgaWYg
KG51bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEzLDQzICsxMTMsNDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBcnJheUJ1
ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IGJ5dGVMZW5ndGgpOwogCi0gICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcq
LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVm
ZmVyVmlldyosIHNpemVfdCBieXRlT2Zmc2V0KTsKIAotICAgIGlubGluZSBib29sIHNldFJhbmdl
SW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQpOwotICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxp
bmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVu
Z3RoLCBzaXplX3QgYnl0ZU9mZnNldCk7CisgICAgaW5saW5lIGJvb2wgZ2V0UmFuZ2VJbXBsKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0
KTsKIAotICAgIGlubGluZSBib29sIHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwg
c2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3Vs
YXRlT2Zmc2V0QW5kTGVuZ3RoKAotICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVk
IGFycmF5U2l6ZSwKLSAgICAgICAgdW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7
CisgICAgaW5saW5lIGJvb2wgemVyb1JhbmdlSW1wbChzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90
IHJhbmdlQnl0ZUxlbmd0aCk7CiAKICAgICAvLyBJbnB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9m
IGVsZW1lbnRzIGZyb20gdGhpcyBhcnJheSdzIHZpZXc7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBp
cyBpbiBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3Lgog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5k
TnVtRWxlbWVudHMoCiAgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCi0gICAgICAg
IHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKLSAgICAgICAgdW5zaWduZWQgKm9mZnNldCwKLSAg
ICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQorICAgICAgICBzaXplX3QgYXJyYXlCeXRlT2Zm
c2V0LAorICAgICAgICBzaXplX3QgKm9mZnNldCwKKyAgICAgICAgc2l6ZV90ICpudW1FbGVtZW50
cykKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAtIGFycmF5
Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSAoc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGFycmF5Qnl0ZU9mZnNldCkgLyBzaXpl
b2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAq
b2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpudW1FbGVtZW50cyA9
IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKm9mZnNldCA9IGFy
cmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAgICpvZmZzZXQgPSBz
dGQ6Om1pbihidWZmZXIuYnl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQg
cmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6
ZW9mKFQpOworICAgICAgICBDaGVja2VkU2l6ZSBhZGp1c3RlZE9mZnNldCA9ICpvZmZzZXQ7Cisg
ICAgICAgIGFkanVzdGVkT2Zmc2V0ICo9IHNpemVvZihUKTsKKyAgICAgICAgYWRqdXN0ZWRPZmZz
ZXQgKz0gYXJyYXlCeXRlT2Zmc2V0OworICAgICAgICBpZiAoYWRqdXN0ZWRPZmZzZXQuaGFzT3Zl
cmZsb3dlZCgpIHx8IGFkanVzdGVkT2Zmc2V0LnZhbHVlKCkgPiBidWZmZXIuYnl0ZUxlbmd0aCgp
KQorICAgICAgICAgICAgKm9mZnNldCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICpvZmZzZXQgPSBhZGp1c3RlZE9mZnNldC52YWx1ZSgpOworICAgICAg
ICBzaXplX3QgcmVtYWluaW5nRWxlbWVudHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZz
ZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihyZW1haW5p
bmdFbGVtZW50cywgKm51bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBtX2J5dGVP
ZmZzZXQgOiAzMTsKKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIHVpbnQ2NF90IG1f
Ynl0ZU9mZnNldCA6IDYzOworI2Vsc2UKKyAgICB1aW50MzJfdCBtX2J5dGVPZmZzZXQgOiAzMTsK
KyNlbmRpZgogICAgIGJvb2wgbV9pc0RldGFjaGFibGUgOiAxOwotICAgIHVuc2lnbmVkIG1fYnl0
ZUxlbmd0aDsKKyAgICBVQ1BVUmVnaXN0ZXIgbV9ieXRlTGVuZ3RoOwogCiAgICAgdXNpbmcgQmFz
ZUFkZHJlc3MgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0
cj47CiAgICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIncyBzdG9y
YWdlLCBwbHVzIHRoZSBieXRlIG9mZnNldC4KQEAgLTE2MCw4MSArMTY1LDQ2IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgQXJyYXlCdWZm
ZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQpCitib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqIGFycmF5
LCBzaXplX3QgYnl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgo
KQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5n
dGgoKQotICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVP
ZmZzZXQpIHsKLSAgICAgICAgLy8gT3V0IG9mIHJhbmdlIG9mZnNldCBvciBvdmVyZmxvdworICAg
IGlmICghaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgYXJyYXktPmJ5dGVMZW5n
dGgoKSwgYnl0ZUxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAK
KwogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3Mo
KSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9mZnNldCwgYXJyYXktPmJhc2VBZGRyZXNzKCks
IGFycmF5LT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5
QnVmZmVyVmlldzo6c2V0UmFuZ2VJbXBsKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhQnl0
ZUxlbmd0aCwgdW5zaWduZWQgYnl0ZU9mZnNldCkKK2Jvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRS
YW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCBzaXplX3Qg
Ynl0ZU9mZnNldCkKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPiBieXRlTGVuZ3RoKCkKLSAgICAgICAg
fHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAgICAv
LyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxsZXJU
aGFuT3JFcXVhbChieXRlT2Zmc2V0LCBkYXRhQnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHVpbnQ4X3QqIGJhc2UgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MoKSk7CiAgICAgbWVtbW92ZShiYXNlICsgYnl0ZU9m
ZnNldCwgZGF0YSwgZGF0YUJ5dGVMZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEFycmF5QnVmZmVyVmlldzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
ZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCitib29sIEFycmF5QnVmZmVyVmll
dzo6Z2V0UmFuZ2VJbXBsKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgs
IHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgp
Ci0gICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQot
ICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7Ci0g
ICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQgb3Igb3ZlcmZsb3cKKyAgICBpZiAoIWlzU3Vt
U21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBieXRlTGVuZ3Ro
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgY29uc3QgdWludDhfdCog
YmFzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsKICAgICBt
ZW1tb3ZlKGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1w
bCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQorYm9vbCBBcnJh
eUJ1ZmZlclZpZXc6Onplcm9SYW5nZUltcGwoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5n
ZUJ5dGVMZW5ndGgpCiB7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKCkKLSAgICAg
ICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQotICAgICAg
ICB8fCBieXRlT2Zmc2V0ICsgcmFuZ2VCeXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkgewotICAgICAg
ICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92ZXJmbG93CisgICAgaWYgKCFpc1N1bVNtYWxs
ZXJUaGFuT3JFcXVhbChieXRlT2Zmc2V0LCByYW5nZUJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGgoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICB1aW50OF90KiBiYXNl
ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKCkpOwogICAgIG1lbXNldChiYXNl
ICsgYnl0ZU9mZnNldCwgMCwgcmFuZ2VCeXRlTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNhbGN1bGF0ZU9mZnNldEFuZExlbmd0aCgKLSAgICBp
bnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwgdW5zaWduZWQqIG9mZnNldCwg
dW5zaWduZWQqIGxlbmd0aCkKLXsKLSAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICBzdGFydCAr
PSBhcnJheVNpemU7Ci0gICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOwotICAg
IGlmIChlbmQgPCAwKQotICAgICAgICBlbmQgKz0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCAw
KQotICAgICAgICBlbmQgPSAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSA+
IGFycmF5U2l6ZSkKLSAgICAgICAgZW5kID0gYXJyYXlTaXplOwotICAgIGlmIChlbmQgPCBzdGFy
dCkKLSAgICAgICAgZW5kID0gc3RhcnQ7Ci0gICAgKm9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdGFydCk7Ci0gICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBz
dGFydCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiB1c2luZyBKU0M6OkFycmF5QnVmZmVy
VmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5j
cHAKaW5kZXggNjg4M2ExN2M0NzJkLi5kMzYyNDUwYTJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAg
c3RhdGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICAgICAgYWNjZXNzSW5kZXggPSBhY2Nlc3NJbmRl
eFZhbHVlLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYWNjZXNzSW5kZXgiKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgfQotICAgIAotICAgIEFTU0VSVCh0eXBl
ZEFycmF5Vmlldy0+bGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsK
KwogICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXgg
b3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOwogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAppbmRleCBkY2MyZjUw
NjRhZjIuLmZiYzk4NDdkMmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiwyMCArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURh
dGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxl
bmd0aCkKICAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQs
IGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZSgKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVf
dCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsK
IH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpOworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAg
cmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCBkYTA2YjRiYjIxNDQuLjM0
MDI2NTQxMDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGF0YVZpZXcgZmluYWwg
OiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVf
dCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBj
cmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICBUeXBlZEFycmF5VHlwZSBn
ZXRUeXBlKCkgY29uc3QgZmluYWwKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5h
bDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgZ2V0KHVuc2lnbmVkIG9m
ZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisgICAgVCBn
ZXQoc2l6ZV90IG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxw
dHIpCiAgICAgewogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0
ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWdu
ZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCisg
ICAgVCByZWFkKHNpemVfdCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVz
ID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0
PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8
fCAqc3RhdHVzKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVl
LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gbnVsbHB0cikKKyAgICB2b2lkIHNl
dChzaXplX3Qgb2Zmc2V0LCBUIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVz
ID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgICAgIGlm
IChvZmZzZXQgKyBzaXplb2YoVCkgPiBieXRlTGVuZ3RoKCkpIHsKQEAgLTgzLDcgKzgzLDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAgIERh
dGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBi
eXRlTGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBiZTdl
NmMwNTM0ZmEuLjViZTgxNjVmNzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMjQgKzMzLDI0IEBAIG5hbWVz
cGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVyaWNUeXBl
ZEFycmF5VmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRp
YyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoc2l6ZV90IGxlbmd0aCk7CisgICAg
c3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBi
eXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gdHJ5Q3JlYXRlKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCBzaXplX3QgYnl0
ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5n
dGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJlc3MoKSk7
IH0KICAgICAKLSAgICBib29sIHNldChHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIGFy
cmF5LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBzZXQoR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBhcnJheSwgc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAgICAgIHJldHVybiBz
ZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIHNldFJhbmdlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGRhdGEsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgb2Zmc2V0KQorICAgIGJvb2wgc2V0UmFu
Z2UoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCBzaXpl
X3Qgb2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNldFJhbmdlSW1wbCgKICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLApAQCAtNTgsMzkgKzU4LDM5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNl
dCwgc2l6ZV90IGNvdW50KQorICAgIGJvb2wgemVyb1JhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBjb3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAqIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwgY291bnQgKiBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHplcm9GaWxsKCkgeyB6ZXJvUmFu
Z2UoMCwgbGVuZ3RoKCkpOyB9CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAg
ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0RldGFjaGVkKCkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGJ5dGVMZW5ndGgoKSAvIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAg
ICByZXR1cm4gZGF0YSgpW2luZGV4XTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICB2b2lkIHNldChzaXplX3QgaW5kZXgs
IGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGluZGV4IDwgdGhpcy0+bGVuZ3RoKCkpOwogICAgICAgICBkYXRhKClbaW5k
ZXhdID0gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICB2
b2lkIHNldE5hdGl2ZSh1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1
ZSkgY29uc3QKKyAgICB2b2lkIHNldE5hdGl2ZShzaXplX3QgaW5kZXgsIHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IHRoaXMtPmxlbmd0aCgpKTsKICAgICAgICAgZGF0YSgpW2lu
ZGV4XSA9IHZhbHVlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0UmFuZ2UodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogZGF0YSwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgYm9vbCBn
ZXRSYW5nZSh0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBkYXRhLCBzaXplX3QgY291bnQsIHNpemVf
dCBvZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0UmFuZ2VJbXBsKAogICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksCkBAIC05OCwxOCArOTgsMTEgQEAgcHVi
bGljOgogICAgICAgICAgICAgb2Zmc2V0ICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
KTsKICAgICB9CiAKLSAgICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCBz
aXplX3QgY291bnQpIGNvbnN0CisgICAgYm9vbCBjaGVja0luYm91bmREYXRhKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBjb3VudCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRoaXMtPmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBsZW5ndGgKLSAgICAg
ICAgICAgICYmIG9mZnNldCArIGNvdW50IDw9IGxlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sg
b3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9mZnNldCArIGNvdW50ID49IG9mZnNldCk7CisgICAg
ICAgIHJldHVybiBpc1N1bVNtYWxsZXJUaGFuT3JFcXVhbChvZmZzZXQsIGNvdW50LCB0aGlzLT5s
ZW5ndGgoKSk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5
Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKLSAgICAKICAgICBUeXBl
ZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBB
ZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0xMTgsNyArMTExLDcgQEAgcHVibGljOgogICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSBmaW5h
bDsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEdlbmVy
aWNUeXBlZEFycmF5VmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCmluZGV4IGFlNWJkZDhjNmEzMS4uZjFhNzZkZmQzYmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KAotUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAgOiBBcnJheUJ1
ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggKiBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpCiB7CisgICAgQVNTRVJUKChsZW5ndGggLyBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpIDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewogICAg
IGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0KTsKQEAgLTQ3LDcgKzQ4LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWcKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIGNvbnN0IHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgY29uc3QgdHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byBy
ZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0KTsKQEAgLTU2LDcgKzU3LDcgQEAgUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBs
ZW5ndGgpCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC02NCw3
ICs2NSw3IEBAIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp0cnlDcmVhdGUoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwogICAgIGlmICghYnVmZmVyKQpAQCAtNzQsNyArNzUsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVh
dGUoCi0gICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiByZXN1bHQgPSB0cnlD
cmVhdGUobGVuZ3RoKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTg1LDcgKzg2LDcgQEAgUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6dHJ5Q3JlYXRlKAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDAsNyArMTAxLDcgQEAgUmVm
UHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0cnlDcmVhdGUKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQorR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgpCiB7
CiAgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKQEAgLTEwOSw3ICsxMTAsNyBAQCBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4KLUdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCitHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCkKIHsKICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CiAgICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKQEAgLTEx
OCwyNSArMTE5LDYgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ5Q3JlYXRlKFdURk1v
dmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
LVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3ViYXJyYXkoc3RhcnQsIGxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+Ci1HZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLXsK
LSAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5n
dGgoc3RhcnQsIGVuZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIEFy
cmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIEFTU0VSVChi
dWZmZXIpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlwZT4oKmJ1
ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ5Q3Jl
YXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNBcnJheUJ1ZmZlclZpZXcqIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
d3JhcChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA4OWVhZWJkM2MyY2MuLjNkOGU0NzQ1MDY2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1ZmZlclZp
ZXc6OnNfaW5mbyA9IHsKIH07CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250
ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50
MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3RvcikKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6
ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQog
ICAgICwgbV92ZWN0b3IodmVjdG9yLCBsZW5ndGgpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBA
IC01NCw3ICs1NCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpD
b25zdHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9u
Q29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLAorICAgIFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRT
aXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQogICAgIDogbV9zdHJ1Y3R1cmUobnVs
bHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTgxLDE4ICs4MSwxOCBAQCBKU0FycmF5
QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvbid0IGFsbG93IGEgdHlwZWQgYXJyYXkg
dG8gdXNlIG1vcmUgdGhhbiAyR0IuCi0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihJTlRfTUFYKSAvIGVsZW1lbnRTaXplKQorICAgIENoZWNrZWRTaXplIHNpemUgPSBsZW5n
dGg7CisgICAgc2l6ZSAqPSBlbGVtZW50U2l6ZTsKKyAgICBpZiAoc2l6ZS5oYXNPdmVyZmxvd2Vk
KCkgfHwgc2l6ZSA+IE1BWF9BUlJBWV9CVUZGRVJfU0laRSkKICAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogc3RhdGlj
X2Nhc3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKEdp
Z2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSksIGxlbmd0aCk7CisK
KyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBzaXplLnZhbHVlKCkpLCBsZW5ndGgpOwogICAgIGlmICghbV92ZWN0b3IpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBaZXJvRmlsbCkKICAgICAgICAgbWVtc2V0
KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKLSAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5
QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplKTsKKyAg
ICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemUudmFsdWUoKSk7CiAgICAg
CiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9tb2RlID0gT3ZlcnNpemVUeXBl
ZEFycmF5OwpAQCAtMTAwLDcgKzEwMCw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29u
c3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICBWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCi0gICAg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHNpemVfdCBieXRlT2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwg
bV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9tb2RlKFdhc3RlZnVsVHlwZWRBcnJheSkKQEAgLTEx
NCw3ICsxMTQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29u
c3RydWN0aW9uQ29udGV4dCgKIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRl
eHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQorICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoLCBEYXRhVmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAg
ICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUpCkBAIC0yMzgs
OSArMjM4LDE2IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKEpTVHlwZSB0eXBl
KQogICAgIHJldHVybiBFbGVtZW50U2l6ZURhdGFbdHlwZSAtIEludDhBcnJheVR5cGVdOwogfQog
Ci11bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CitzaXplX3Qg
SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgoKSBjb25zdAogeworI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgQ2hlY2tlZDxzaXplX3Q+IHJlc3VsdCA9IGxlbmd0aCgpOworICAgIHJlc3VsdCAq
PSBlbGVtZW50U2l6ZSh0eXBlKCkpOworICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKKyNlbHNl
CisgICAgLy8gVGhlIGFic2VuY2Ugb2Ygb3ZlcmZsb3cgaXMgYWxyZWFkeSBjaGVja2VkIGluIHRo
ZSBjb25zdHJ1Y3Rvciwgc28gSSBvbmx5IGFkZCB0aGUgZXh0cmEgc2FuaXR5IGNoZWNrIHdoZW4g
YXNzZXJ0cyBhcmUgZW5hYmxlZC4KICAgICByZXR1cm4gbGVuZ3RoKCkgKiBlbGVtZW50U2l6ZSh0
eXBlKCkpOworI2VuZGlmCiB9CiAKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xv
d0Rvd25BbmRXYXN0ZU1lbW9yeSgpCkBAIC0yNjcsNyArMjc0LDcgQEAgQXJyYXlCdWZmZXIqIEpT
QXJyYXlCdWZmZXJWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KCkKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgp
OworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gdGhpcy0+Ynl0ZUxlbmd0aCgpOwogCiAgICAgc3dp
dGNoIChtX21vZGUpIHsKICAgICBjYXNlIEZhc3RUeXBlZEFycmF5OiB7CkBAIC0zMTUsOCArMzIy
LDggQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5
U2hhcmVkSW1wbCgpCiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVm
ZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRlT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSB0aGlzLT5ieXRl
T2Zmc2V0KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAgIHN3aXRj
aCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlwZSAjIyBB
cnJheVR5cGU6IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5oCmluZGV4IGRkMDFmN2Y4MmE1My4uMTRmYTViYmE1YTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEw
OCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0
ID0gMTAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmYXN0U2l6ZUxpbWl0ID0gMTAw
MDsKICAgICB1c2luZyBWZWN0b3JQdHIgPSBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OwogCiAgICAgc3RhdGljIHZvaWQqIG51bGxWZWN0b3JQ
dHIoKQpAQCAtMTE3LDEwICsxMTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVsbC5y
YXdCaXRzKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZU9mKHVpbnQzMl90
IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUpCisgICAgc3RhdGljIHNpemVfdCBzaXplT2Yo
c2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgZWxlbWVudFNpemUpCiAgICAgewotICAgICAgICByZXR1
cm4gKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRTaXplICsgc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSAtIDEpCi0gICAgICAgICAgICAmIH4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSAtIDEpOworICAgICAgICBDaGVja2VkPHNpemVfdD4gcmVzdWx0ID0gbGVuZ3RoOworICAgICAg
ICByZXN1bHQgKj0gZWxlbWVudFNpemU7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpICYgfihzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpIC0gMSk7CiAgICAgfQogCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCkBAIC0xMzYsMjUgKzEzOCwy
NSBAQCBwcm90ZWN0ZWQ6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIEluaXRpYWxpemF0aW9u
TW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwogICAgICAgICAKLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChWTSYsIFN0cnVjdHVyZSosIHVpbnQz
Ml90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsIEluaXRpYWxpemF0aW9uTW9kZSA9IFpl
cm9GaWxsKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0aW9uQ29udGV4dChW
TSYsIFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGVsZW1lbnRTaXplLCBJbml0
aWFsaXphdGlvbk1vZGUgPSBaZXJvRmlsbCk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGlz
IG9ubHkgZm9yIGNvbnN0cnVjdGluZyBmYXN0IHR5cGVkIGFycmF5cy4gSXQncyB1c2VkIGJ5IHRo
ZSBKSVQncyBzbG93IHBhdGguCi0gICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJl
KiwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOworICAgICAgICBDb25zdHJ1Y3Rpb25D
b250ZXh0KFN0cnVjdHVyZSosIHNpemVfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAgICAgICAg
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAg
ICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICAgICAgc2l6
ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBsZW5ndGgpOwogICAgICAgICAKICAgICAgICAgZW51bSBE
YXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoCiAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCi0gICAgICAgICAg
ICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKKyAg
ICAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBEYXRhVmlld1RhZyk7
CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0
cnVjdHVyZTsgfQogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAgICAgICB2b2lkKiB2ZWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobV9sZW5ndGgpOyB9Ci0gICAgICAgIHVpbnQz
Ml90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHNpemVfdCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBUeXBlZEFycmF5TW9k
ZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1dHRlcmZseSogYnV0
dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAgICAgCkBAIC0xNjIs
NyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwog
ICAgICAgICB1c2luZyBWZWN0b3JUeXBlID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwg
dm9pZCwgdGFnQ2FnZWRQdHI+OwogICAgICAgICBWZWN0b3JUeXBlIG1fdmVjdG9yOwotICAgICAg
ICB1aW50MzJfdCBtX2xlbmd0aDsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoOwogICAgICAgICBU
eXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CiAg
ICAgfTsKQEAgLTE5MCwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkKiB2ZWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkpOyB9CiAgICAgdm9p
ZCogdmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5n
ZXRVbnNhZmUoKTsgfQogICAgIAotICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7Ci0g
ICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHko
KTsKKyAgICBpbmxpbmUgc2l6ZV90IGJ5dGVPZmZzZXQoKTsKKyAgICBpbmxpbmUgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAotICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCgpIGNvbnN0OworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQorICAgIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogICAgIApAQCAtMjE5LDcgKzIyMSw3IEBAIHByb3RlY3RlZDoKICAgICBBcnJheUJ1ZmZl
ciogZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgVmVjdG9yUHRyIG1fdmVjdG9y
OwotICAgIHVpbnQzMl90IG1fbGVuZ3RoOworICAgIHNpemVfdCBtX2xlbmd0aDsKICAgICBUeXBl
ZEFycmF5TW9kZSBtX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4IDFkMDcyYjcxYWNi
Ny4uZDg1YjMyODMwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtOTksNyArOTksNyBAQCBpbmxp
bmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIHB0
cmRpZmZfdCBkZWx0YSA9CiAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVjdG9yV2l0
aG91dFBBQ1ZhbGlkYXRpb24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRh
KCkpOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlbHRh
KTsKKyAgICBzaXplX3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihkZWx0YSk7CiAgICAg
aWYgKHJlcXVlc3RlciA9PSBNdXRhdG9yKQogICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihyZXN1bHQpID09IGRlbHRhKTsKICAgICBlbHNlIHsKQEAgLTExMCwxNCArMTEwLDE0
IEBAIGlubGluZSBSZXN1bHRUeXBlIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0SW1wbCgp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIEpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlT2Zmc2V0KCkKK2lubGluZSBzaXplX3QgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVP
ZmZzZXQoKQogewotICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxNdXRhdG9yLCB1bnNpZ25lZD4o
KTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8TXV0YXRvciwgc2l6ZV90PigpOwogfQogCi1p
bmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZz
ZXRDb25jdXJyZW50bHkoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBKU0FycmF5QnVm
ZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5dGVPZmZz
ZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PigpOworICAg
IHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVm
ZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAwODY3ZGNiZWFkODEuLmU4YTRlN2E2
MjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25tb3ZhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvVHJpU3RhdGUuaD4KIApAQCAtMjk4LDYgKzI5OSw3IEBAIHB1YmxpYzoKICAgICBpbnQz
Ml90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b1VJbnQz
MihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIHVpbnQzMl90IHRvSW5kZXgoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0OworICAgIHNpemVfdCB0b1R5cGVk
QXJyYXlJbmRleChKU0dsb2JhbE9iamVjdCosIGNvbnN0IGNoYXIqIGVycm9yTmFtZSkgY29uc3Q7
CiAgICAgZG91YmxlIHRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApp
bmRleCBmN2E5ZTcwZWQ2ZTAuLjhmNWMwNzE5ODg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC02OSwxNCArNjksNDcgQEAg
aW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgY2hhciogZXJyb3IKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoZXJy
b3JOYW1lLCAiIGNhbm5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KLSAgICBpZiAoZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewor
CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKworICAgIGlm
IChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28g
bGFyZ2UiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTQzo6dG9JbnQzMihkKSk7Cit9CisKK2lubGluZSBzaXplX3QgSlNWYWx1
ZTo6dG9UeXBlZEFycmF5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
Y2hhciogZXJyb3JOYW1lKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91
YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIDApOworICAgIGlmIChkIDw9IC0xKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3Ry
aW5nKGVycm9yTmFtZSwgIiBjYW5ub3QgYmUgbmVnYXRpdmUiKSkpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gYXNJbnQzMigp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0b0ludDMyKGQpKTsKKworICAg
IGlmIChkID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVhfQVJSQVlfQlVGRkVSX1NJWkUpKSB7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBBbGwgb2YgdGhpcyBtb25zdHJvc2l0
eSBpcyBqdXN0IHRvIGdpdmUgdGhlIGNvcnJlY3QgcmVzdWx0IG9uIDE8PDMyLgorICAgIHNpemVf
dCBvdXRwdXRPZmZzZXQgPSAwOworICAgIGRvdWJsZSBpbnB1dE9mZnNldCA9IDA7CisgICAgc2l6
ZV90IGludDMyTWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAg
aWYgKGQgPiBzdGF0aWNfY2FzdDxkb3VibGU+KGludDMyTWF4KSkgeworICAgICAgICBvdXRwdXRP
ZmZzZXQgPSBpbnQzMk1heDsKKyAgICAgICAgaW5wdXRPZmZzZXQgPSBpbnQzMk1heDsKKyAgICB9
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvdXRwdXRPZmZzZXQgKyBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU0M6OnRvSW50MzIoZCAtIGlucHV0T2Zm
c2V0KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJv
cmluZmluaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3Bw
CmluZGV4IDZmYWI0NjVkZDNiOS4uZGZkNmE1MTFkMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcgQEAgSlNEYXRhVmll
dzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQsIEFycmF5
QnVmZmVyKiBidWZmZXIKIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCisgICAgc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCBieXRlTGVuZ3RoKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MCwyNSArNzAsMjUgQEAgSlNEYXRhVmlldyogSlNE
YXRhVmlldzo6Y3JlYXRlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTRGF0YVZpZXcqIEpT
RGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCB1bnNpZ25lZCkKK0pTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QpCiB7CiAgICAgVU5SRUFDSEFCTEVf
Rk9SX1BMQVRGT1JNKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTRGF0YVZpZXcqIEpT
RGF0YVZpZXc6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQor
SlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kiwgc2l6ZV90KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1ib29sIEpTRGF0YVZpZXc6OnNldChKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCkKK2Jvb2wgSlNEYXRhVmlldzo6
c2V0KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU09iamVjdCosIHNpemVfdCwgc2l6ZV90KQog
ewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBK
U1ZhbHVlKQorYm9vbCBKU0RhdGFWaWV3OjpzZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHNpemVf
dCwgSlNWYWx1ZSkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5k
ZXggMmM3ODVlNDc2MTFhLi5hNWU3OGM0NjliMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYsMTQgQEAgcHVibGljOgogICAgIH0K
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LAotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNp
emVfdCBieXRlT2Zmc2V0LCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkg
bWV0aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxh
Y2UgdG8KICAgICAvLyBwbGFjYXRlIHNvbWUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2UgZG8g
ZWxzZXdoZXJlLgotICAgIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMg
SlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU09iamVj
dCosIHVuc2lnbmVkLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgc2V0SW5kZXgoSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTRGF0YVZpZXcqIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBz
aXplX3QsIEpTT2JqZWN0Kiwgc2l6ZV90LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBib29sIHNldElu
ZGV4KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90LCBKU1ZhbHVlKTsKICAgICAKICAgICBBcnJheUJ1
ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQog
ICAgIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDk0
OTA2MjQ3ZWE2NS4uZTBmYmM1MmY4NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiwxMSArMTM2LDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFkYXRhVmlldykKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFW
aWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3MpOwogICAgIAotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAi
Ynl0ZU9mZnNldCIpOworICAgIHNpemVfdCBieXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBib29sIGxpdHRs
ZUVuZGlhbiA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiAxICYmIGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgbGl0dGxlRW5kaWFuID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xNDks
NyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNo
ZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmll
dyJfcyk7CiAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwor
ICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwogICAgIGlmIChlbGVt
ZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGggLSBlbGVtZW50
U2l6ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogICAgIGlmICghZGF0YVZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRo
b2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZz
ZXQiKTsKKyAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9J
bmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6
ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgdW5z
aWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CisgICAg
c2l6ZV90IGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAg
IGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykg
ewogICAgICAgICBsaXR0bGVFbmRpYW4gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIp
LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogICAgIGlmIChkYXRhVmlldy0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZl
ciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKIAotICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBk
YXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBi
eXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNz
Il9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggYzIyYzU1YTBkODFkLi5lYTFlZjljMTNmYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJW
aWV3LmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlRvTmF0aXZlRnJvbVZh
bHVlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC01NSwxMCArNTYsMTAgQEAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJ
bmZvKiBnZXRCaWdVaW50NjRBcnJheUNsYXNzSW5mbygpOwogLy8gICAgIFN0cnVjdHVyZSogUyAg
ICAgLy8gZnJvbSBKU0NlbGwKIC8vICAgICBCdXR0ZXJmbHkqIEIgICAgIC8vIGZyb20gSlNPYmpl
Y3QKIC8vICAgICBFbGVtZW50VHlwZSogVgotLy8gICAgIHVpbnQzMl90IEwKKy8vICAgICBzaXpl
X3QgTAogLy8gICAgIFR5cGVkQXJyYXlNb2RlIE0KIC8vCi0vLyBUaGVzZSBmaWVsZHMgdGFrZSB1
cCBhIHRvdGFsIG9mIGZvdXIgcG9pbnRlci13aWR0aCB3b3Jkcy4gRklYTUU6IE1ha2UKKy8vIFRo
ZXNlIGZpZWxkcyB0YWtlIHVwIGEgdG90YWwgb2YgZml2ZSBwb2ludGVyLXdpZHRoIHdvcmRzLiBG
SVhNRTogTWFrZQogLy8gaXQgdGFrZSBsZXNzIHdvcmRzIQogLy8KIC8vIEIgaXMgdXN1YWxseSB1
bnVzZWQgYnV0IG1heSBzdG9yZWQgc29tZSBhZGRpdGlvbmFsICJvdmVyZmxvdyIgZGF0YSBmb3IK
QEAgLTEwMywxNCArMTA0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAKLSAg
ICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogdmVjdG9yKTsKLSAgICBzdGF0aWMgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHNpemVf
dCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgc2l6
ZV90IGxlbmd0aCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVf
dCBieXRlT2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9y
OjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcq
IGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKICAgICAKLSAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
IH0KKyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpOyB9CiAgICAgCiAgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRWZWN0
b3IoKSBjb25zdApAQCAtMTIyLDQ2ICsxMjMsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7CiAgICAgfQog
Ci0gICAgYm9vbCBpbkJvdW5kcyh1bnNpZ25lZCBpKSBjb25zdAorICAgIGJvb2wgaW5Cb3VuZHMo
c2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoOwogICAg
IH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG1lYW50IHRvIG1hdGNoIGluZGV4ZWQgYWNj
ZXNzIG1ldGhvZHMgdGhhdCBKU09iamVjdAogICAgIC8vIHN1cHBvcnRzIC0gaGVuY2UgdGhlIHNs
aWdodCByZWR1bmRhbmN5LgotICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkp
IGNvbnN0CisgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkoc2l6ZV90IGkpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gaW5Cb3VuZHMoaSkgJiYgQWRhcHRvcjo6Y2FuQ29udmVydFRvSlNR
dWlja2x5OwogICAgIH0KLSAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHNpemVfdCBp
LCBKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGkgPCBtX2xlbmd0
aCAmJiB2YWx1ZS5pc051bWJlcigpICYmIEFkYXB0b3I6OmNhbkNvbnZlcnRUb0pTUXVpY2tseTsK
ICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBnZXRJbmRleFF1aWNrbHlB
c05hdGl2ZVZhbHVlKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSBnZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKHNpemVfdCBpKSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0eXBlZFZlY3Rvcigp
W2ldOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
KSBjb25zdAorICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHNpemVfdCBpKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvSlNWYWx1ZShudWxscHRyLCBnZXRJbmRleFF1
aWNrbHlBc05hdGl2ZVZhbHVlKGkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbmRleFF1
aWNrbHlUb05hdGl2ZVZhbHVlKHVuc2lnbmVkIGksIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFs
dWUpCisgICAgdm9pZCBzZXRJbmRleFF1aWNrbHlUb05hdGl2ZVZhbHVlKHNpemVfdCBpLCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2xl
bmd0aCk7CiAgICAgICAgIHR5cGVkVmVjdG9yKClbaV0gPSB2YWx1ZTsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBzZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2
b2lkIHNldEluZGV4UXVpY2tseShzaXplX3QgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgIHNldEluZGV4UXVpY2tseVRv
TmF0aXZlVmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCisgICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgaSwgSlNWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAg
ICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTc2LDkgKzE3NywxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0Fk
YXB0b3JOYXRpdmVGcm9tVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmpl
Y3QsIGpzVmFsdWUpOyB9CisgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZy
b21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZ2xvYmFsT2Jq
ZWN0LCBqc1ZhbHVlKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50
VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNW
YWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4o
anNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFw
dG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9y
Pihqc1ZhbHVlKTsKKyAgICB9CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKQEAgLTE5OCwyMSAr
MjA1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2FuQWNjZXNz
UmFuZ2VRdWlja2x5KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGJvb2wg
Y2FuQWNjZXNzUmFuZ2VRdWlja2x5KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiAgICAg
ewotICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZz
ZXQgKyBsZW5ndGggPD0gbV9sZW5ndGgKLSAgICAgICAgICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0g
ICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0OworICAgICAgICByZXR1cm4g
aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwob2Zmc2V0LCBsZW5ndGgsIG1fbGVuZ3RoKTsKICAgICB9
CiAgICAgCiAgICAgLy8gTGlrZSBjYW5TZXRRdWlja2x5LCBleGNlcHQ6IGlmIGl0IHJldHVybnMg
ZmFsc2UsIGl0IHdpbGwgdGhyb3cgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgot
ICAgIGJvb2wgdmFsaWRhdGVSYW5nZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxPYmplY3Qq
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7IGlmIGl0IHJldHVybnMgZmFsc2UKICAg
ICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgIGJvb2wgc2V0
KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVjdCosIHVuc2lnbmVkIG9i
amVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBlID0gQ29weVR5cGU6OlVu
b2JzZXJ2YWJsZSk7CisgICAgYm9vbCBzZXQoSlNHbG9iYWxPYmplY3QqLCBzaXplX3Qgb2Zmc2V0
LCBKU09iamVjdCosIHNpemVfdCBvYmplY3RPZmZzZXQsIHNpemVfdCBsZW5ndGgsIENvcHlUeXBl
ID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCiAgICAgUmVmUHRyPHR5cGVuYW1lIEFk
YXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwogICAgIFJlZlB0cjx0
eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKQEAgLTMxOCw4
ICszMjIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBh
bmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3RoZXJBZGFwdG9yPgogICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlwZSgKLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PE90aGVyQWRhcHRvcj4qLAotICAgICAgICB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCwgQ29weVR5cGUpOworICAgICAgICBKU0dsb2JhbE9iamVjdCosIHNpemVf
dCBvZmZzZXQsIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PE90aGVyQWRhcHRvcj4qLAorICAgICAg
ICBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBDb3B5VHlwZSk7CiAKICAgICAv
LyBUaGUgRUNNQSA2IHNwZWMgc3RhdGVzIHRoYXQgZmxvYXRpbmcgcG9pbnQgVHlwZWQgQXJyYXlz
IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgb3JkZXJpbmc6CiAgICAgLy8KQEAgLTM0OSw3ICsz
NTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQogICAgIHsKICAgICAgICAg
RWxlbWVudFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gcHVyaWZ5TmFOKGFycmF5
W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oCmluZGV4IGQyNTg0MDY3ZTgzZi4uMzM2ZjFhZWUzZjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBp
bmxpbmUgSlNBcnJheUJ1ZmZlciogY29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5lZWRlZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsTwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCBz
aXplX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoT3B0KQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8K
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAgIGlmIChs
ZW5ndGhPcHQpCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAgICAg
ICAgZWxzZSB7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAg
ICAvLyAtIEEgcHJpbWl0aXZlLiBUaGlzIGNyZWF0ZXMgYSBuZXcgdHlwZWQgYXJyYXkgb2YgdGhh
dCBsZW5ndGggYW5kIHplcm8taW5pdGlhbGl6ZXMgaXQuCiAKICAgICBpZiAoSlNPYmplY3QqIG9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgZmlyc3RWYWx1ZSkpIHsKLSAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICBzaXplX3QgbGVuZ3RoOwogICAgICAgICBKU0Fy
cmF5QnVmZmVyKiBjdXN0b21CdWZmZXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChpc1R5cGVk
VmlldyhvYmplY3QtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsKQEAg
LTI1MCw3ICsyNTAsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUudG9JbmRl
eChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gZmlyc3RWYWx1
ZS50b1R5cGVkQXJyYXlJbmRleChnbG9iYWxPYmplY3QsICJsZW5ndGgiKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIFZpZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgpKTsK
IH0KQEAgLTI3NSw4ICsyNzUsOCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAgICAgfQogCiAg
ICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
LSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxl
bmd0aCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAxKSB7CiAg
ICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRleChn
bG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMV0FZU19JTkxJ
TkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0ds
b2JhbE9iamVjdCoKICAgICAgICAgICAgIC8vIElmIHRoZSBsZW5ndGggdmFsdWUgaXMgcHJlc2Vu
dCBidXQgdW5kZWZpbmVkLCB0cmVhdCBpdCBhcyBtaXNzaW5nLgogICAgICAgICAgICAgSlNWYWx1
ZSBsZW5ndGhWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CiAgICAgICAg
ICAgICBpZiAoIWxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgICAgICBs
ZW5ndGggPSBsZW5ndGhWYWx1ZS50b0luZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBl
ZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0
aCIpOworICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVHlwZWRBcnJheUlu
ZGV4KGdsb2JhbE9iamVjdCwgVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlw
ZURhdGFWaWV3ID8gImJ5dGVMZW5ndGgiIDogImxlbmd0aCIpOwogICAgICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDQ1MDIzODc5MmQx
MC4uYTNkZGMxZjgzNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiCiAjaW5jbHVkZSAi
VHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51
bWJlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0OCw3IEBAIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldygKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY1LDcgKzY2LDcgQEAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZVdpdGhGYXN0VmVjdG9yKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3RvcikK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGxlbmd0aCwgdm9pZCogdmVjdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoc3RydWN0dXJlLCBsZW5n
dGgsIHZlY3Rvcik7CkBAIC03OCw3ICs3OSw3IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlV2l0aEZhCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1KU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHVuc2lnbmVkIGxlbmd0aCkKK0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGxlbmd0
aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTksMTcgKzEwMCwxNyBAQCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZVVuaW5pdAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3Jl
YXRlKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAotICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzaXplX3QgYnl0ZU9mZnNldCwgc2l6ZV90IGxlbmd0
aCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpOworICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBpZiAoIUFycmF5
QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVu
Z3RoLCBzaXplKSkgeworICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxl
bmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIGVsZW1lbnRTaXplKSkgewogICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeUJ5
dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkpIHsKKyAgICBpZiAoIUFycmF5QnVm
ZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBlbGVtZW50U2l6
ZSkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTQ1LDcgKzE0Niw3IEBAIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNTksOCArMTYwLDggQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+CiBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiogb3RoZXIsCi0gICAgdW5zaWduZWQgb3RoZXJP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBzaXplX3Qgb2Zmc2V0LCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxP
dGhlckFkYXB0b3I+KiBvdGhlciwKKyAgICBzaXplX3Qgb3RoZXJPZmZzZXQsIHNpemVfdCBsZW5n
dGgsIENvcHlUeXBlIHR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxOCw3ICsyMTks
NyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lm
aWNUeXBlKAogICAgICAgICB8fCBleGlzdGluZ0J1ZmZlcigpICE9IG90aGVyLT5leGlzdGluZ0J1
ZmZlcigpCiAgICAgICAgIHx8IChlbGVtZW50U2l6ZSA9PSBvdGhlckVsZW1lbnRTaXplICYmIHZl
Y3RvcigpIDw9IG90aGVyLT52ZWN0b3IoKSkKICAgICAgICAgfHwgdHlwZSA9PSBDb3B5VHlwZTo6
TGVmdFRvUmlnaHQpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoCiAgICAgICAgICAgICAgICAg
b2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252ZXJ0VG88QWRhcHRvcj4oCiAg
ICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNrbHlBc05hdGl2ZVZhbHVlKGkg
KyBvdGhlck9mZnNldCkpKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogCiAgICAgLy8gTm93IHdl
IGVpdGhlciBoYXZlICgyQikgb3IgKDMpIC0gc28gZmlyc3Qgd2UgdHJ5IHRvIGNvdmVyICgyQiku
CiAgICAgaWYgKGVsZW1lbnRTaXplID09IG90aGVyRWxlbWVudFNpemUpIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBs
ZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUo
CiAgICAgICAgICAgICAgICAgb2Zmc2V0ICsgaSwgT3RoZXJBZGFwdG9yOjp0ZW1wbGF0ZSBjb252
ZXJ0VG88QWRhcHRvcj4oCiAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5nZXRJbmRleFF1aWNr
bHlBc05hdGl2ZVZhbHVlKGkgKyBvdGhlck9mZnNldCkpKTsKQEAgLTIzOCwxMSArMjM5LDExIEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5
cGUoCiAgICAgCiAgICAgLy8gRmFpbDogd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdHJhbnNmZXIg
YnVmZmVyIChpLmUuIGNhc2UgKDMpKS4KICAgICBWZWN0b3I8dHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSwgMzI+IHRyYW5zZmVyQnVmZmVyKGxlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVu
Z3RoOyBpLS07KSB7CisgICAgZm9yIChzaXplX3QgaSA9IGxlbmd0aDsgaS0tOykgewogICAgICAg
ICB0cmFuc2ZlckJ1ZmZlcltpXSA9IE90aGVyQWRhcHRvcjo6dGVtcGxhdGUgY29udmVydFRvPEFk
YXB0b3I+KAogICAgICAgICAgICAgb3RoZXItPmdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFsdWUo
aSArIG90aGVyT2Zmc2V0KSk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsg
aS0tOykKKyAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBzZXRJbmRl
eFF1aWNrbHlUb05hdGl2ZVZhbHVlKG9mZnNldCArIGksIHRyYW5zZmVyQnVmZmVyW2ldKTsKICAg
ICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGJvb2wgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpzZXQoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgb2Zmc2V0
LCBKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgQ29weVR5cGUgdHlwZSkKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXpl
X3Qgb2Zmc2V0LCBKU09iamVjdCogb2JqZWN0LCBzaXplX3Qgb2JqZWN0T2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoLCBDb3B5VHlwZSB0eXBlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBjb25z
dCBDbGFzc0luZm8qIGNpID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwogICAgIGlmIChjaS0+dHlw
ZWRBcnJheVN0b3JhZ2VUeXBlID09IEFkYXB0b3I6OnR5cGVWYWx1ZSkgewotICAgICAgICAvLyBU
aGUgc3VwZXIgZmFzdCBjYXNlOiB3ZSBjYW4ganVzdCBtZW1jcHkgc2luY2Ugd2UncmUgdGhlIHNh
bWUgdHlwZS4KKyAgICAgICAgLy8gVGhlIHN1cGVyIGZhc3QgY2FzZTogd2UgY2FuIGp1c3QgbWVt
bW92ZSBzaW5jZSB3ZSdyZSB0aGUgc2FtZSB0eXBlLgogICAgICAgICBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldyogb3RoZXIgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3Qp
OwogICAgICAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG90aGVyLT5sZW5ndGgoKSk7CiAg
ICAgICAgIApAQCAtMzEyLDkgKzMxMywxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpzZXQoCiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB3b24ndCBldmVyIGNhbGwgb2Jq
ZWN0LT5nZXQoKSB3aXRoIGFuIGluZGV4IG9mIFVJTlRfTUFYIG9yIG1vcmUKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGxlbmd0aCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvYmplY3RPZmZzZXQpLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkpOwogICAg
ICAgICAvLyBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGNhc2UuIEJ1dCByaWdodCBub3csIHdlIGRv
bid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3QsIGkgKyBv
YmplY3RPZmZzZXQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSArIG9iamVjdE9mZnNldCkpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgYm9vbCBzdWNj
ZXNzID0gc2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBvZmZzZXQgKyBpLCB2YWx1ZSk7CiAgICAgICAg
ICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhc3VjY2Vzcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBiNjNiNjhhMjViNDUu
LjE5ODYzOTBkOGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC02MCw2ICs2MCw3IEBAIGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2
YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY2xhc3MgQXJyYXlQcm9maWxlOwogY2xh
c3MgRXhjZXB0aW9uOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW50ZXJuYWxGdW5jdGlv
bjsKQEAgLTIxMSwxMCArMjEyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBw
dXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAgICB7CiAgICAg
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmIChjYW5TZXRJbmRl
eFF1aWNrbHkocHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIHNldEluZGV4UXVp
Y2tseSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIGlmICh0cnlTZXRJbmRleFF1
aWNrbHkodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0
aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAg
ICB9CiAKQEAgLTI4OSw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBjYW5H
ZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsKLSAgICBKU1ZhbHVl
IGdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQpIGNvbnN0OworICAgIEpTVmFs
dWUgZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCwgQXJyYXlQcm9maWxlKiA9
IG51bGxwdHIpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMzQ1LDE0ICszNDQsMTUgQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCi0gICAg
SlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QKKworICAgIC8vIFVz
ZXMgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVMYXJnZVR5
cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2ts
eSh1bnNpZ25lZCBpLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpIGNvbnN0
CiAgICAgewogICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRl
cmZseSgpOwogICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
QUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgaWYgKGNhbkdldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkoaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkoaSwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTQxMSwzNSArNDExLDczIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldChn
bG9iYWxPYmplY3QsIGkpOwogICAgIH0KIAotICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheSh1bnNpZ25lZCwgSlNWYWx1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkLCBKU1ZhbHVlKTsKLSAgICAgICAgCi0gICAgYm9v
bCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lk
IHNldEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZShWTSYsIHVuc2lnbmVk
LCBKU1ZhbHVlKTsKKworICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRlIHN1Y2Nlc3MKKyAg
ICAvLyBVc2UgdGhlIChvcHRpb25hbCkgYXJyYXkgcHJvZmlsZSB0byBzZXQgdGhlIG1fbWF5QmVM
YXJnZVR5cGVkQXJyYXkgYml0IHdoZW4gcmVsZXZhbnQKKyAgICBib29sIHRyeVNldEluZGV4UXVp
Y2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpTVmFsdWUsIEFycmF5UHJvZmlsZSopOworICAg
IGJvb2wgdHJ5U2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOwogICAgICAgICBzd2l0Y2ggKGlu
ZGV4aW5nTW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgot
ICAgICAgICAgICAgcmV0dXJuIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkoaSwgdmFs
dWUpOworICAgICAgICAgICAgcmV0dXJuIHRyeVNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXko
aSwgdiwgYXJyYXlQcm9maWxlKTsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5H
X1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEFMTF9XUklU
QUJMRV9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9V
QkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VT
X0lOREVYSU5HX1RZUEVTOgorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9JTlQzMl9JTkRFWElO
R19UWVBFUzogeworICAgICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXYuaXNJ
bnQzMigpKSB7CisgICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3Vv
dXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEFMTF9XUklUQUJMRV9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVT
OiB7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGln
dW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAgICAgICAg
ICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1
dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKKyAgICAgICAgICAgIHZtLmhlYXAud3Jp
dGVCYXJyaWVyKHRoaXMsIHYpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBBTExfV1JJVEFCTEVfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAg
ICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7CisgICAg
ICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldElu
ZGV4KHZtLCBpLCB2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0Nv
bnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidXR0ZXJmbHktPmNv
bnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOworICAgICAgICAgICAgaWYgKGkg
Pj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidXR0ZXJmbHkt
PnNldFB1YmxpY0xlbmd0aChpICsgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgY2Fz
ZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rv
ckxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNl
dEluZGV4UXVpY2tseUZvckFycmF5U3RvcmFnZUluZGV4aW5nVHlwZSh2bSwgaSwgdik7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0g
ICAgICAgICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxl
bmd0aCgpCi0gICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5t
X3ZlY3RvcltpXTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0NvcHlPbldy
aXRlKGluZGV4aW5nTW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIHx8ICFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
LT5tX3ZlY3RvcltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgc2V0SW5kZXhRdWlj
a2x5Rm9yQXJyYXlTdG9yYWdlSW5kZXhpbmdUeXBlKHZtLCBpLCB2KTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKKwogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5
KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggOGZmYzVmOTM4MjJmLi43NjBhOWE5
ZTJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCkBAIC00NjUsMjEgKzQ2NSwxNSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuR2V0
SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCBpKSBjb25zdAogICAgIH0KIH0KIAot
aW5saW5lIGJvb2wgSlNPYmplY3Q6OmNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5z
aWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpn
ZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlKSBjb25zdAogewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0jZGVmaW5lIENBU0Vf
VFlQRURfQVJSQVlfVFlQRShuYW1lKSBcCi0gICAgY2FzZSBuYW1lICMjIEFycmF5VHlwZSA6XAot
ICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTICMjIG5hbWUgIyMgQXJyYXkgKj4odGhpcykt
PmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1RZUEVEX0FS
UkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCi0jdW5k
ZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLX0KKyNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQorICAgIGlmIChpID4g
QXJyYXlQcm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aCAmJiBhcnJheVByb2ZpbGUp
CisgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0TWF5QmVMYXJnZVR5cGVkQXJyYXkoKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7CisjZW5kaWYKIAotaW5saW5lIEpTVmFs
dWUgSlNPYmplY3Q6OmdldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSkgY29u
c3QKLXsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogI2RlZmluZSBDQVNFX1RZUEVEX0FSUkFZX1RZ
UEUobmFtZSkgXAogICAgIGNhc2UgbmFtZSAjIyBBcnJheVR5cGUgOiB7XApAQCAtNTEyLDcgKzUw
Niw1MCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJh
eSh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogfQot
ICAgIAorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yQXJyYXlTdG9y
YWdlSW5kZXhpbmdUeXBlKFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQoreworICAgIEFy
cmF5U3RvcmFnZSogc3RvcmFnZSA9IHRoaXMtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsK
KyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAg
ICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CisgICAgeC5zZXQodm0sIHRoaXMsIHYpOworICAgIGlm
ICghb2xkKSB7CisgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAgICAg
ICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzdG9yYWdlLT5zZXRM
ZW5ndGgoaSArIDEpOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OnRyeVNldElu
ZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworI2lmIFVTRShMQVJH
RV9UWVBFRF9BUlJBWVMpCisjZGVmaW5lIFVQREFURV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJv
ZmlsZSkgZG8geyBcCisgICAgICAgIGlmICgoaSA+IEFycmF5UHJvZmlsZTo6c19zbWFsbFR5cGVk
QXJyYXlNYXhMZW5ndGgpICYmIGFycmF5UHJvZmlsZSlcCisgICAgICAgICAgICBhcnJheVByb2Zp
bGUtPnNldE1heUJlTGFyZ2VUeXBlZEFycmF5KCk7XAorICAgIH0gd2hpbGUgKGZhbHNlKQorI2Vs
c2UKKyNkZWZpbmUgVVBEQVRFX0FSUkFZX1BST0ZJTEUoaSwgYXJyYXlQcm9maWxlKSBkbyB7IFwK
KyAgICBVTlVTRURfUEFSQU0oYXJyYXlQcm9maWxlKTtcCisgICAgfSB3aGlsZSAoZmFsc2UpCisj
ZW5kaWYKKyNkZWZpbmUgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFKG5hbWUpIFwKKyAgICBjYXNlIG5h
bWUgIyMgQXJyYXlUeXBlIDogeyBcCisgICAgICAgIGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8
SlMgIyMgbmFtZSAjIyBBcnJheSAqPih0aGlzKTtcCisgICAgICAgIGlmICghdHlwZWRBcnJheS0+
Y2FuU2V0SW5kZXhRdWlja2x5KGksIHYpKVwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcCisg
ICAgICAgIHR5cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2KTtcCisgICAgICAgIFVQREFU
RV9BUlJBWV9QUk9GSUxFKGksIGFycmF5UHJvZmlsZSk7XAorICAgICAgICByZXR1cm4gdHJ1ZTtc
CisgICAgfQorICAgIEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklF
VyhDQVNFX1RZUEVEX0FSUkFZX1RZUEUpCisjdW5kZWYgQ0FTRV9UWVBFRF9BUlJBWV9UWVBFCisj
dW5kZWYgVVBEQVRFX0FSUkFZX1BST0ZJTEUKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25E
YXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlKQogewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKaW5kZXggY2U3MzBmM2JmOTY1Li4wOTE5ZTcyMTg2ZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTg5OCw4ICs4OTgsOCBA
QCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIGlmIChiYXNlLT5pc09iamVjdCgpKSB7
CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYg
KG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpKTsKKyAgICAgICAg
aWYgKEpTVmFsdWUgcmVzdWx0ID0gb2JqZWN0LT50cnlHZXRJbmRleFF1aWNrbHkoaW5kZXgpKQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIAogICAg
IGlmIChpc0pTU3RyaW5nKGJhc2UpICYmIGFzU3RyaW5nKGJhc2UpLT5jYW5HZXRJbmRleChpbmRl
eCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKaW5kZXggZThk
YzFhMzBhZWRkLi5iN2Q4YzlmY2Y3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QYWdlQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGFnZUNvdW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAog
bmFtZXNwYWNlIFdURiB7CkBAIC05Niw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgcGFnZVNpemUgPSA2NCAqIEtCOwogcHJpdmF0ZToKLSAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQzMl90IG1heFBhZ2VDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PigoMXVsbCA8PCAzMikgLyBwYWdlU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBtYXhQYWdlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oTUFYX0FSUkFZX0JVRkZFUl9T
SVpFIC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhZ2VTaXplKSk7CiAKICAgICB1aW50MzJfdCBt
X3BhZ2VDb3VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdjZDU5NmY4NzJlYy4uZTQ2MjUyZTIyM2M1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTEwLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWxsb3cgV0FTTSB0byB1c2UgdXAgdG8gNEdCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzNTMKKyAgICAgICAgcmRh
cjovLzgxNjAzNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICBNYWRlIHNvbWUgb2YgQ2hlY2tlZEFyaXRobWV0aWMgY29uc3RleHByLCBhbmQgYWRkZWQg
aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwgc2luY2UgaXQgaXMgYSBjb21tb25seSB1c2VkIHRlc3Qg
aW4gQXJyYXlCdWZmZXIgYW5kIGVhc3kgdG8gZ2V0IHdyb25nIGluIHRlcm1zIG9mIG92ZXJmbG93
LgorCisgICAgICAgICogd3RmL0NoZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6Omlz
SW5Cb3VuZHMpOgorICAgICAgICAoV1RGOjpjb252ZXJ0U2FmZWx5KToKKyAgICAgICAgKFdURjo6
aXNTdW1TbWFsbGVyVGhhbk9yRXF1YWwpOgorCiAyMDIxLTEwLTE1ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgTWFuYWdlZCBOb3RpZmljYXRpb25z
OiBTa2VsZXRvbiBOb3RpZmljYXRpb25Qcm92aWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NoZWNrZWRBcml0aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oCmluZGV4IGZmMTU2NWYxMWRlZC4uZWZhYjRhZDNiYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRB
cml0aG1ldGljLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9IHNpemVvZihUYXJn
ZXQpID49IHNpemVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNr
ZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsKLSAgICBzdGF0aWMgYm9v
bCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91
bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBp
bXBsaWNpdCB0eXBlIGNvbnZlcnNpb24gd2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRv
IHdpZGVzdCB0eXBlLgogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxUYXJnZXQ+OjptYXgoKTsKICAgICB9CiB9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFs
c2UsIHRydWUsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUp
CisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIC8vIFNhbWUgc2lnbmVkbmVzcyBzbyBpbXBsaWNpdCB0eXBlIGNvbnZlcnNpb24g
d2lsbCBhbHdheXMgaW5jcmVhc2UgcHJlY2lzaW9uIHRvIHdpZGVzdCB0eXBlLgogICAgICAgICBy
ZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptaW4oKSA8PSB2YWx1ZSAmJiB2YWx1
ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwpAQCAtMTU5LDcgKzE1OSw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJv
dW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFy
Z2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNl
LCBmYWxzZSwgZmFsc2UsIHRydWU+IHsKLSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2Ug
dmFsdWUpCisgICAgc3RhdGljIGJvb2wgY29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIC8vIFdoZW4gY29udmVydGluZyB2YWx1ZSB0byB1bnNpZ25lZCBTb3Vy
Y2UsIHZhbHVlIHdpbGwgYmVjb21lIGEgYmlnIHZhbHVlIGlmIHZhbHVlIGlzIG5lZ2F0aXZlLgog
ICAgICAgICAvLyBDYXN0ZWQgdmFsdWUgd2lsbCBiZWNvbWUgYmlnZ2VyIHRoYW4gVGFyZ2V0Ojpt
YXggYXMgU291cmNlIGlzIGJpZ2dlciB0aGFuIFRhcmdldC4KQEAgLTE2OCw3ICsxNjgsNyBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHND
aGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFs
c2UsIHRydWUsIGZhbHNlPiB7Ci0gICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVl
KQorICAgIHN0YXRpYyBib29sIGNvbnN0ZXhwciBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCiAgICAg
ewogICAgICAgICAvLyBUaGUgdW5zaWduZWQgU291cmNlIHR5cGUgaGFzIGdyZWF0ZXIgcHJlY2lz
aW9uIHRoYW4gdGhlIHRhcmdldCBzbyBtYXgoVGFyZ2V0KSAtPiBTb3VyY2Ugd2lsbCB3aWRlbi4K
ICAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxUYXJnZXQ+OjptYXgoKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIGZhbHNlLCBm
YWxzZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKKyAgICBzdGF0aWMgYm9v
bCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAgIHsKICAgICAgICAgLy8gU2FtZSBzaWdu
LCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4
NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJn
ZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4gewotICAgIHN0YXRpYyBib29sIGluQm91bmRz
KFNvdXJjZSkKKyAgICBzdGF0aWMgYm9vbCBjb25zdGV4cHIgaW5Cb3VuZHMoU291cmNlKQogICAg
IHsKICAgICAgICAgLy8gU2FtZSBzaWduLCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wg
Y29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdl
dCBpcyBzaWduZWQgd2l0aCBncmVhdGVyIG9yIHNhbWUgcHJlY2lzaW9uLiBJZiBzdHJpY3RseSBn
cmVhdGVyLCBpdCBpcyBhbHdheXMgc2FmZS4KICAgICAgICAgaWYgKHNpemVvZihUYXJnZXQpID4g
c2l6ZW9mKFNvdXJjZSkpCkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291
cmNlLAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBz
dHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIHRydWU+IHsK
LSAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpCisgICAgc3RhdGljIGJvb2wg
Y29uc3RleHByIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIFRhcmdl
dCBpcyB1bnNpZ25lZCB3aXRoIGdyZWF0ZXIgcHJlY2lzaW9uLgogICAgICAgICByZXR1cm4gdmFs
dWUgPj0gMDsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlubGluZSBj
b25zdGV4cHIgYm9vbCBpc0luQm91bmRzKFNvdXJjZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVlKTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wg
Y29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQordGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBi
b29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQmIG91dHB1dCkKIHsKICAgICBp
ZiAoIWlzSW5Cb3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTk5Niw2ICs5OTYsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4g
Ym9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKICAgICByZXR1cm4gY2hlY2tlZFBy
b2R1Y3Q8VD4oYXJncy4uLikuaGFzT3ZlcmZsb3dlZCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBib29sIGlzU3VtU21hbGxlclRoYW5PckVxdWFsKFQgYSwgVCBiLCBUIGJvdW5kKQorewor
ICAgIENoZWNrZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+IHN1bSA9IGE7CisgICAgc3VtICs9IGI7Cisg
ICAgcmV0dXJuICFzdW0uaGFzT3ZlcmZsb3dlZCgpICYmIHN1bS52YWx1ZSgpIDw9IGJvdW5kOwor
fQorCiB9CiAKIHVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsKQEAgLTEwMTcsMyArMTAyNCw0
IEBAIHVzaW5nIFdURjo6ZGlmZmVyZW5jZU92ZXJmbG93czsKIHVzaW5nIFdURjo6aXNJbkJvdW5k
czsKIHVzaW5nIFdURjo6cHJvZHVjdE92ZXJmbG93czsKIHVzaW5nIFdURjo6c3VtT3ZlcmZsb3dz
OwordXNpbmcgV1RGOjppc1N1bVNtYWxsZXJUaGFuT3JFcXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmlu
ZGV4IDljOWY4MGUzZmQxYi4uNjQ2ZTliZWE1OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTE0
MSw2ICsxNDEsMTUgQEAKICNkZWZpbmUgVVNFX0pTVkFMVUUzMl82NCAxCiAjZW5kaWYKIAorLy8g
RklYTUU6IHRoaXMgc2hvdWxkIGluc3RlYWQgYmUgYmFzZWQgb24gU0laRV9NQVggPT0gVUlOVDY0
X01BWAorLy8gQnV0IHRoaXMgcmVxdWlyZXMgaW5jbHVkaW5nIDxjc3RkaW50PiBhbmQgUGxhdGZv
cm0uaCBpcyBpbmNsdWRlZCBpbiBhbGwga2luZCBvZiB3ZWlyZCBwbGFjZXMsIGluY2x1ZGluZyBu
b24tY3BwIGZpbGVzCisvLyBBbmQgaW4gcHJhY3RpY2UgQ1BVKEFERFJFU1M2NCkgaXMgZXF1aXZh
bGVudCBvbiBhbGwgcGxhdGZvcm1zIHdlIHN1cHBvcnQgKHZlcmlmaWVkIGJ5IHN0YXRpY19hc3Nl
cnRzIGluIEFycmF5QnVmZmVyLmgpCisjaWYgQ1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgVVNFX0xB
UkdFX1RZUEVEX0FSUkFZUyAxCisjZWxzZQorI2RlZmluZSBVU0VfTEFSR0VfVFlQRURfQVJSQVlT
IDAKKyNlbmRpZgorCiAjaWYgVVNFKEpTVkFMVUU2NCkKIC8qIEZJWE1FOiBFbmFibGUgQklHSU5U
MzIgb3B0aW1pemF0aW9uIGFnYWluIGFmdGVyIHdlIGVuc3VyZSBTcGVlZG9tZXRlcjIgYW5kIEpl
dFN0cmVhbTIgcmVncmVzc2lvbnMgYXJlIGZpeGVkLiAqLwogLyogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc3NyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdmYWFkYzdhM2M3
Zi4uZWQ1OTk4YjhhN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjEtMTAtMTUg
IFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBX
QVNNIHRvIHVzZSB1cCB0byA0R0IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyOTM1MworICAgICAgICByZGFyOi8vODE2MDM0NDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFNvbWUgcGFydHMgb2YgV2ViQ29y
ZSB1c2UgVHlwZWRBcnJheXMsIGFuZCB3b3VsZCBub3QgYnVpbGQgYWZ0ZXIgSSBtYWRlIHRoZSBs
ZW5ndGgoKSBmdW5jdGlvbiBvbiB0eXBlZCBhcnJheXMgcmV0dXJuIFVDUFVSZWdpc3RlciBpbnN0
ZWFkIG9mIHVpbnQzMl90LgorICAgICAgICBNb3N0IGZpeGVzIHdlcmUgdHJpdmlhbCwgdGhlIG9u
bHkgZXhjZXB0aW9uIGlzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAsIHdoZXJlIEkgaGFkIHRv
IGluY3JlbWVudCB0aGUgdmVyc2lvbiBudW1iZXIsIGFzIEFycmF5QnVmZmVyIChhbmQgQXJyYXlC
dWZmZXJWaWV3cykgbm93IHdyaXRlL3JlYWQgdGhlaXIgbGVuZ3RoIGluIGEgNjQtYml0IGZpZWxk
IChhbmQgc2FtZSBmb3IgdGhlIGJ5dGVPZmZzZXQgb2YgQXJyYXlCdWZmZXJWaWV3KS4KKworICAg
ICAgICBJIGFsc28gaGFkIHRvIGFkZCBhIHRlc3QgaW4gUGl4ZWxCdWZmZXIuY3BwIHRoYXQgdGhl
IHNpemUgb2YgdGhlIEFycmF5QnVmZmVyIGl0IHdpbGwgdHJ5IHRvIGFsbG9jYXRlIGlzIDwgSU5U
MzJfTUFYLgorICAgICAgICBPdGhlcndpc2UsIHRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3Qvc2hh
cGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2VkYXRhLW92ZXJmbG93
Lmh0bWwgd2hpY2ggY2hlY2tzIHRoYXQgdmVyeSBsYXJnZSBpbWFnZXMgYXJlIHByb3Blcmx5IHJl
amVjdGVkIHdpdGhvdXQgY3Jhc2hpbmcsIHdvdWxkIHRpbWVvdXQuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBhcyB0aGUgY29kZSBpcyBhbHJlYWR5IGV4dGVuc2l2ZWx5IGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMsIGFuZCBJIGltcGxlbWVudGVkIG5vIG5ldyBmZWF0dXJlcy4KKworICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9CdWZmZXI6OmNvcHlGcm9tQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1
ZmZlcjo6Y29weVRvQ2hhbm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGlt
ZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5
dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6Omdl
dEZsb2F0VGltZURvbWFpbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNl
cjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpk
dW1wQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6
ZHVtcEltYWdlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVt
cElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRB
cnJheUJ1ZmZlckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJl
YWRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVh
ZEFycmF5QnVmZmVyVmlld0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6
ZXI6OnJlYWRBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpkZWNvZGUpOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1
ZmZlcjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94
Lmg6CisKIDIwMjEtMTAtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI3NjM3MCk6IEVsZW1lbnRzIHdpdGggYW5pbWF0ZWQg
dHJhbnNmb3JtIHByb3BlcnR5IG1pZ2h0IG5vdCBwcm9wZXJseSByZW5kZXJlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCBjYjdlODRk
NDUzODMuLmIxOGQ4ZmQ2YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBdWRpb0J1ZmZlcjo6Y29weUZyb21DaGFubmVsKFJlZjxGbG9hdDMyQXJyYXk+JiYgZGVzdGlu
YXRpb24sCiAgICAgaWYgKGJ1ZmZlck9mZnNldCA+PSBkYXRhTGVuZ3RoKQogICAgICAgICByZXR1
cm4geyB9OwogICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gZGF0YUxlbmd0aCAtIGJ1ZmZlck9m
ZnNldDsKKyAgICBzaXplX3QgY291bnQgPSBkYXRhTGVuZ3RoIC0gYnVmZmVyT2Zmc2V0OwogICAg
IGNvdW50ID0gc3RkOjptaW4oZGVzdGluYXRpb24uZ2V0KCkubGVuZ3RoKCksIGNvdW50KTsKICAg
ICAKICAgICBjb25zdCBmbG9hdCogc3JjID0gY2hhbm5lbERhdGEtPmRhdGEoKTsKQEAgLTIyNiw3
ICsyMjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlcjo6Y29weVRvQ2hhbm5lbChS
ZWY8RmxvYXQzMkFycmF5PiYmIHNvdXJjZSwgdW5zaWduZQogICAgIGlmIChidWZmZXJPZmZzZXQg
Pj0gZGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKLSAgICB1bnNpZ25lZCBj
b3VudCA9IGRhdGFMZW5ndGggLSBidWZmZXJPZmZzZXQ7CisgICAgc2l6ZV90IGNvdW50ID0gZGF0
YUxlbmd0aCAtIGJ1ZmZlck9mZnNldDsKICAgICBjb3VudCA9IHN0ZDo6bWluKHNvdXJjZS5nZXQo
KS5sZW5ndGgoKSwgY291bnQpOwogICAgIAogICAgIGNvbnN0IGZsb2F0KiBzcmMgPSBzb3VyY2Ut
PmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0
aW1lQW5hbHlzZXIuY3BwCmluZGV4IDZjMWM5NDQwMjJlZC4uZDUzYjllNjQ0ZWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5j
cHAKQEAgLTE5Niw4ICsxOTYsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVx
dWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAgZG9GRlRBbmFseXNp
c0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxpbmVhciBtYWduaXR1
ZGUgdG8gdW5zaWduZWQtYnl0ZSBkZWNpYmVscy4KLSAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGgg
PSBtYWduaXR1ZGVCdWZmZXIoKS5zaXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWlu
KHNvdXJjZUxlbmd0aCwgZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IHNv
dXJjZUxlbmd0aCA9IG1hZ25pdHVkZUJ1ZmZlcigpLnNpemUoKTsKKyAgICBzaXplX3QgZGVzdGlu
YXRpb25MZW5ndGggPSBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpOworICAgIHNpemVfdCBsZW5n
dGggPSBzdGQ6Om1pbihzb3VyY2VMZW5ndGgsIGRlc3RpbmF0aW9uTGVuZ3RoKTsKICAgICBpZiAo
bGVuZ3RoID4gMCkgewogICAgICAgICBjb25zdCBkb3VibGUgcmFuZ2VTY2FsZUZhY3RvciA9IG1f
bWF4RGVjaWJlbHMgPT0gbV9taW5EZWNpYmVscyA/IDEgOiAxIC8gKG1fbWF4RGVjaWJlbHMgLSBt
X21pbkRlY2liZWxzKTsKICAgICAgICAgY29uc3QgZG91YmxlIG1pbkRlY2liZWxzID0gbV9taW5E
ZWNpYmVsczsKQEAgLTIyNyw4ICsyMjgsOSBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZs
b2F0VGltZURvbWFpbkRhdGEoRmxvYXQzMkFycmF5JiBkZXN0aW5hdGlvbkFycmF5KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgdW5zaWduZWQgZmZ0U2l6ZSA9IHRo
aXMtPmZmdFNpemUoKTsKLSAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVz
dGluYXRpb25BcnJheS5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGRlc3RpbmF0aW9uTGVuZ3RoID0g
ZGVzdGluYXRpb25BcnJheS5sZW5ndGgoKTsKKyAgICBzaXplX3QgZmZ0U2l6ZSA9IHRoaXMtPmZm
dFNpemUoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RkOjptaW4oZmZ0U2l6ZSwgZGVzdGluYXRp
b25MZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIGJvb2wgaXNJbnB1dEJ1
ZmZlckdvb2QgPSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBJbnB1dEJ1ZmZlclNpemUgJiYgbV9p
bnB1dEJ1ZmZlci5zaXplKCkgPiBmZnRTaXplOwogICAgICAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZl
ckdvb2QpOwpAQCAtMjUxLDggKzI1Myw5IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0
ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIHVuc2lnbmVkIGZmdFNpemUgPSB0aGlzLT5mZnRT
aXplKCk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9u
QXJyYXkubGVuZ3RoKCkpOworICAgIHNpemVfdCBkZXN0aW5hdGlvbkxlbmd0aCA9IGRlc3RpbmF0
aW9uQXJyYXkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7
CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluKGZmdFNpemUsIGRlc3RpbmF0aW9uTGVuZ3Ro
KTsKICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBib29sIGlzSW5wdXRCdWZmZXJHb29k
ID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gSW5wdXRCdWZmZXJTaXplICYmIG1faW5wdXRCdWZm
ZXIuc2l6ZSgpID4gZmZ0U2l6ZTsKICAgICAgICAgQVNTRVJUKGlzSW5wdXRCdWZmZXJHb29kKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCmluZGV4IGExYThmYTI5MjljYS4uOWM1ZTJjNTA3OWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTk0
LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XYXNtTW9kdWxlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KQEAgLTM0Miw4ICszNDMsOSBAQCBzdGF0aWMgdW5zaWduZWQgY291bnRVc2FnZXMo
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVyc2lvbiA3LiBhZGRlZCBzdXBwb3J0
IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNpb24gOC4gYWRkZWQg
c3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCiAgKiBWZXJzaW9u
IDkuIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlQml0bWFwIGNvbG9yIHNwYWNlLgorICogVmVyc2lv
biAxMC4gY2hhbmdlZCB0aGUgbGVuZ3RoIChhbmQgb2Zmc2V0cykgb2YgQXJyYXlCdWZmZXJzIChh
bmQgQXJyYXlCdWZmZXJWaWV3cykgZnJvbSAzMiB0byA2NCBiaXRzCiAgKi8KLXN0YXRpYyBjb25z
dCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3Vy
cmVudFZlcnNpb24gPSAxMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBUZXJtaW5hdG9yVGFnID0g
MHhGRkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdQb29sVGFnID0gMHhGRkZG
RkZGRTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb25JbmRleFByb3BlcnRpZXNUYWcgPSAweEZG
RkZGRkZEOwpAQCAtMzk5LDcgKzQwMSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdE
YXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IE9iamVjdFJlZmVyZW5jZQogICog
ICAgfCBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IEFy
cmF5QnVmZmVyCi0gKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1ZmZlclZpZXdTdWJ0
YWcgPGJ5dGVPZmZzZXQ6dWludDMyX3Q+IDxieXRlTGVuZ3RoOnVpbnQzMl90PiAoQXJyYXlCdWZm
ZXIgfCBPYmplY3RSZWZlcmVuY2UpCisgKiAgICB8IEFycmF5QnVmZmVyVmlld1RhZyBBcnJheUJ1
ZmZlclZpZXdTdWJ0YWcgPGJ5dGVPZmZzZXQ6dWludDY0X3Q+IDxieXRlTGVuZ3RoOnVpbnQ2NF90
PiAoQXJyYXlCdWZmZXIgfCBPYmplY3RSZWZlcmVuY2UpCiAgKiAgICB8IENyeXB0b0tleVRhZyA8
d3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRle3dyYXBwZWRLZXlMZW5ndGh9
PgogICogICAgfCBET01Qb2ludAogICogICAgfCBET01SZWN0CkBAIC00NjMsNyArNDY1LDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsK
ICAqICAgIE9iamVjdFJlZmVyZW5jZVRhZyA8b3BJbmRleDpJbmRleFR5cGU+CiAgKgogICogQXJy
YXlCdWZmZXIgOi0KLSAqICAgIEFycmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250
ZW50czpieXRle2xlbmd0aH0+CisgKiAgICBBcnJheUJ1ZmZlclRhZyA8bGVuZ3RoOnVpbnQ2NF90
PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgogICogICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA8
dmFsdWU6dWludDMyX3Q+CiAgKiAgICBTaGFyZWRBcnJheUJ1ZmZlclRhZyA8dmFsdWU6dWludDMy
X3Q+CiAgKgpAQCAtOTEwLDcgKzkxMiw2IEBAIHByaXZhdGU6CiAjaWYgVVNFKEJJR0lOVDMyKQog
ICAgIHZvaWQgZHVtcEJpZ0ludDMyRGF0YShpbnQzMl90IGludGVnZXIpCiAgICAgewotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZih1aW50NjRfdCkgPT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcg
bG9uZykpOwogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50OF90PihpbnRlZ2VyIDwgMCkp
OwogICAgICAgICBpZiAoIWludGVnZXIpIHsKICAgICAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0
PHVpbnQzMl90PigwKSk7IC8vIExlbmd0aC1pbi11aW50NjRfdApAQCAtOTIwLDE4ICs5MjEsMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+
KGludGVnZXIpOwogICAgICAgICBpZiAodmFsdWUgPCAwKQogICAgICAgICAgICAgdmFsdWUgPSAt
dmFsdWU7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4odmFs
dWUpKTsKKyAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSk7CiAgICAg
fQogI2VuZGlmCiAKICAgICB2b2lkIGR1bXBIZWFwQmlnSW50RGF0YShKU0JpZ0ludCogYmlnSW50
KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YodWludDY0X3QpID09IHNpemVv
Zih1bnNpZ25lZCBsb25nIGxvbmcpKTsKICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDhf
dD4oYmlnSW50LT5zaWduKCkpKTsKICAgICAgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJ
bnQ6OkRpZ2l0KSA9PSBzaXplb2YodWludDY0X3QpKSB7CiAgICAgICAgICAgICB3cml0ZShzdGF0
aWNfY2FzdDx1aW50MzJfdD4oYmlnSW50LT5sZW5ndGgoKSkpOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYmlnSW50LT5sZW5ndGgoKTsgKytpbmRleCkKLSAg
ICAgICAgICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGJpZ0lu
dC0+ZGlnaXQoaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGJpZ0ludC0+ZGlnaXQoaW5kZXgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gc2l6ZW9mKHVpbnQzMl90KSk7
CiAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGhJblVpbnQ2NCA9IGJpZ0ludC0+bGVuZ3RoKCkg
LyAyOwpAQCAtOTQ0LDEyICs5NDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBiaWdJbnQtPmRpZ2l0KGluZGV4KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpZ0ludC0+
ZGlnaXQoaW5kZXgpKSA8PCAzMikgfCB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPih2YWx1ZSkpOworICAgICAgICAgICAgICAg
ICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpKTsKICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICYgMHgxKQotICAgICAgICAgICAgICAgIHdyaXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4odmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB3cml0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtOTk4LDggKzk5OCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRv
UG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlclZpZXcodm0sIG9iaik7Ci0gICAgICAgIHdyaXRlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSkpOwotICAg
ICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVu
Z3RoKCkpKTsKKyAgICAgICAgdWludDY0X3QgYnl0ZU9mZnNldCA9IGFycmF5QnVmZmVyVmlldy0+
Ynl0ZU9mZnNldCgpOworICAgICAgICB3cml0ZShieXRlT2Zmc2V0KTsKKyAgICAgICAgdWludDY0
X3QgYnl0ZUxlbmd0aCA9IGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpOworICAgICAgICB3
cml0ZShieXRlTGVuZ3RoKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IGFycmF5QnVmZmVyVmlldy0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgaWYg
KCFhcnJheUJ1ZmZlcikgewogICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpWYWxpZGF0aW9uRXJyb3I7CkBAIC0xMTMxLDggKzExMzMsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihidWZmZXItPnJlc29sdXRpb25TY2FsZSgp
KSk7CiAgICAgICAgIHdyaXRlKGJ1ZmZlci0+Y29sb3JTcGFjZSgpKTsKIAotICAgICAgICB3cml0
ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkpOwotICAg
ICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEo
KSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBDaGVja2VkVWludDMyIGJ5
dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBpZiAoYnl0ZUxl
bmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIHdyaXRlKGJ5dGVMZW5ndGgpOworICAgICAgICB3cml0ZShzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGJ5dGVMZW5ndGgpOwogICAg
IH0KIAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCkBAIC0xMjU2LDE1
ICsxMjYzLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9ibG9iSGFuZGxlcy5hcHBl
bmQoYmxvYi0+aGFuZGxlKCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGJsb2ItPnVybCgpLnN0
cmluZygpKTsKICAgICAgICAgICAgICAgICB3cml0ZShibG9iLT50eXBlKCkpOwotICAgICAgICAg
ICAgICAgIHdyaXRlKGJsb2ItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YodWludDY0X3QpID09IHNpemVvZihkZWNsdHlwZShibG9iLT5zaXplKCkpKSk7Cisg
ICAgICAgICAgICAgICAgdWludDY0X3Qgc2l6ZSA9IGJsb2ItPnNpemUoKTsKKyAgICAgICAgICAg
ICAgICB3cml0ZShzaXplKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gSlNJbWFnZURhdGE6OnRvV3JhcHBl
ZCh2bSwgb2JqKSkgewogICAgICAgICAgICAgICAgIHdyaXRlKEltYWdlRGF0YVRhZyk7CiAgICAg
ICAgICAgICAgICAgd3JpdGUoZGF0YS0+d2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUo
ZGF0YS0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmRhdGEoKS5sZW5n
dGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLmRhdGEoKSwgZGF0YS0+
ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBDaGVja2VkVWludDMyIGRhdGFMZW5n
dGggPSBkYXRhLT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5n
dGguaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShkYXRh
TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCkuZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5jb2xvclNwYWNlKCkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTMxMSw4ICsxMzI1
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgd3JpdGUoQXJyYXlCdWZmZXJUYWcpOwotICAgICAgICAgICAgICAgIHdyaXRl
KGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgYnl0ZUxlbmd0aCA9IGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgd3JpdGUoYnl0ZUxlbmd0
aCk7CisgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFy
cmF5QnVmZmVyLT5kYXRhKCkpLCBieXRlTGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzPEpTQXJy
YXlCdWZmZXJWaWV3Pih2bSkpIHsKQEAgLTE1MDIsNyArMTUxNyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsKICAgICB9CiAKLSAgICB2b2lkIHdy
aXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQorICAgIHZvaWQgd3JpdGUodWludDY0X3QgaSkKICAg
ICB7CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG1fYnVmZmVyLCBpKTsKICAgICB9CkBAIC0y
MzkxLDcgKzI0MDYsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBib29sIHJlYWQodW5zaWduZWQgbG9uZyBsb25nJiBpKQorICAgIGJvb2wgcmVhZCh1aW50
NjRfdCYgaSkKICAgICB7CiAgICAgICAgIHJldHVybiByZWFkTGl0dGxlRW5kaWFuKGkpOwogICAg
IH0KQEAgLTI1NTUsOSArMjU3MCwxMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBib29sIHJlYWRBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiBh
cnJheUJ1ZmZlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMZW5ndGhUeXBlPgorICAgIGJvb2wg
cmVhZEFycmF5QnVmZmVySW1wbChSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikKICAg
ICB7Ci0gICAgICAgIHVpbnQzMl90IGxlbmd0aDsKKyAgICAgICAgTGVuZ3RoVHlwZSBsZW5ndGg7
CiAgICAgICAgIGlmICghcmVhZChsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAobV9wdHIgKyBsZW5ndGggPiBtX2VuZCkKQEAgLTI1NjksMTUgKzI1ODUsMjMg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCByZWFk
QXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3KQorICAgIGJv
b2wgcmVhZEFycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKQorICAg
IHsKKyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAgICAgICAgcmV0dXJuIHJlYWRB
cnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5QnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHJl
YWRBcnJheUJ1ZmZlckltcGw8dWludDY0X3Q+KGFycmF5QnVmZmVyKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGVuZ3RoVHlwZT4KKyAgICBib29sIHJlYWRBcnJheUJ1ZmZlclZp
ZXdJbXBsKFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3KQogICAgIHsKICAgICAgICAg
QXJyYXlCdWZmZXJWaWV3U3VidGFnIGFycmF5QnVmZmVyVmlld1N1YnRhZzsKICAgICAgICAgaWYg
KCFyZWFkQXJyYXlCdWZmZXJWaWV3U3VidGFnKGFycmF5QnVmZmVyVmlld1N1YnRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IGJ5dGVPZmZzZXQ7CisgICAg
ICAgIExlbmd0aFR5cGUgYnl0ZU9mZnNldDsKICAgICAgICAgaWYgKCFyZWFkKGJ5dGVPZmZzZXQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50MzJfdCBieXRlTGVuZ3Ro
OworICAgICAgICBMZW5ndGhUeXBlIGJ5dGVMZW5ndGg7CiAgICAgICAgIGlmICghcmVhZChieXRl
TGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgSlNPYmplY3QqIGFy
cmF5QnVmZmVyT2JqID0gYXNPYmplY3QocmVhZFRlcm1pbmFsKCkpOwpAQCAtMjU4Nyw3ICsyNjEx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSB0eXBlZEFycmF5
RWxlbWVudFNpemUoYXJyYXlCdWZmZXJWaWV3U3VidGFnKTsKICAgICAgICAgaWYgKCFlbGVtZW50
U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gYnl0ZUxlbmd0aCAvIGVsZW1lbnRTaXplOworICAgICAgICBMZW5ndGhUeXBlIGxlbmd0aCA9
IGJ5dGVMZW5ndGggLyBlbGVtZW50U2l6ZTsKICAgICAgICAgaWYgKGxlbmd0aCAqIGVsZW1lbnRT
aXplICE9IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2MzQs
NiArMjY1OCwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCByZWFk
QXJyYXlCdWZmZXJWaWV3KFZNJiB2bSwgSlNWYWx1ZSYgYXJyYXlCdWZmZXJWaWV3KQorICAgIHsK
KyAgICAgICAgaWYgKG1fdmVyc2lvbiA8IDEwKQorICAgICAgICAgICAgcmV0dXJuIHJlYWRBcnJh
eUJ1ZmZlclZpZXdJbXBsPHVpbnQzMl90Pih2bSwgYXJyYXlCdWZmZXJWaWV3KTsKKyAgICAgICAg
cmV0dXJuIHJlYWRBcnJheUJ1ZmZlclZpZXdJbXBsPHVpbnQ2NF90Pih2bSwgYXJyYXlCdWZmZXJW
aWV3KTsKKyAgICB9CisKICAgICBib29sIHJlYWQoVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7CkBAIC0zMzQ1LDcgKzMzNzYs
NyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlcjsK
IAotICAgICAgICBpZiAoIXJlYWQoc2VyaWFsaXphdGlvblN0YXRlKSB8fCAhcmVhZChsb2dpY2Fs
V2lkdGgpIHx8ICFyZWFkKGxvZ2ljYWxIZWlnaHQpIHx8ICFyZWFkKHJlc29sdXRpb25TY2FsZSkg
fHwgKG1fdmVyc2lvbiA+IDggJiYgIXJlYWQoY29sb3JTcGFjZSkpIHx8ICFyZWFkQXJyYXlCdWZm
ZXIoYXJyYXlCdWZmZXIpKSB7CisgICAgICAgIGlmICghcmVhZChzZXJpYWxpemF0aW9uU3RhdGUp
IHx8ICFyZWFkKGxvZ2ljYWxXaWR0aCkgfHwgIXJlYWQobG9naWNhbEhlaWdodCkgfHwgIXJlYWQo
cmVzb2x1dGlvblNjYWxlKSB8fCAobV92ZXJzaW9uID4gOCAmJiAhcmVhZChjb2xvclNwYWNlKSkg
fHwgIXJlYWRBcnJheUJ1ZmZlckltcGw8dWludDMyX3Q+KGFycmF5QnVmZmVyKSkgewogICAgICAg
ICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQpA
QCAtMzQxMSw4ICszNDQyLDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gc2l6ZW9mKHVpbnQ2NF90
KSk7CiAgICAgICAgIGlmIChsZW5ndGhJblVpbnQ2NCA9PSAxKSB7Ci0gICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpID09IHNpemVvZih1aW50NjRfdCkp
OwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRpZ2l0NjQgPSAwOworICAgICAgICAg
ICAgdWludDY0X3QgZGlnaXQ2NCA9IDA7CiAgICAgICAgICAgICBpZiAoIXJlYWQoZGlnaXQ2NCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmIChzaWdu
KSB7CkBAIC0zNDQ3LDggKzM0NzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGlu
ZGV4ID0gMDsgaW5kZXggPCBsZW5ndGhJblVpbnQ2NDsgKytpbmRleCkgewotICAgICAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykgPT0gc2l6ZW9mKHVp
bnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRpZ2l0NjQgPSAw
OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRpZ2l0NjQgPSAwOwogICAgICAgICAgICAgICAg
IGlmICghcmVhZChkaWdpdDY0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKICAgICAgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KGluZGV4LCBkaWdpdDY0KTsKQEAg
LTM0NjEsOCArMzQ5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAodWludDMyX3QgaW5kZXggPSAw
OyBpbmRleCA8IGxlbmd0aEluVWludDY0OyArK2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSA9PSBzaXplb2YodWludDY0X3Qp
KTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlnaXQ2NCA9IDA7CisgICAg
ICAgICAgICAgICAgdWludDY0X3QgZGlnaXQ2NCA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKCFy
ZWFkKGRpZ2l0NjQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICAgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoaW5kZXggKiAyLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZGlnaXQ2NCkpOwpAQCAtMzYxOCw3ICszNjQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIENhY2hlZFN0cmluZ1JlZiB0eXBlOwogICAgICAgICAgICAgaWYgKCFyZWFkU3RyaW5nRGF0
YSh0eXBlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBsb25nIHNpemUgPSAwOworICAgICAgICAgICAgdWludDY0X3Qgc2l6ZSA9
IDA7CiAgICAgICAgICAgICBpZiAoIXJlYWQoc2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVhdGVET01PYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmlu
ZGV4IGZiNzU3YTRkNzRmNi4uN2U0OWE5ZTczMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBpZiAoaGFzQXJyYXkpIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPnNpemUoKSk7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byAmYXJyYXlCdWZmZXJDb250ZW50cyA6ICptX2FycmF5QnVmZmVyQ29udGVu
dHNBcnJheSkgewotICAgICAgICAgICAgZW5jb2RlciA8PCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNp
emVJbkJ5dGVzKCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCkpOwogICAgICAgICAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5
QnVmZmVyQ29udGVudHMuZGF0YSgpKSwgYXJyYXlCdWZmZXJDb250ZW50cy5zaXplSW5CeXRlcygp
LCAxKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5OSw5ICsxOTksMTIgQEAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIAogICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVl
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICAgICAgd2hpbGUgKGFycmF5TGVuZ3Ro
LS0pIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNpemU7CisgICAgICAgICAgICB1aW50
NjRfdCBidWZmZXJTaXplOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJT
aXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIENoZWNr
ZWRTaXplIGNoZWNrZWRCdWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGlmIChj
aGVja2VkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMjEyLDcgKzIxNSw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVm
ZmVyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS0+YXBwZW5kKHsgYnVmZmVyLCBidWZm
ZXJTaXplLCBBcnJheUJ1ZmZlcjo6cHJpbWl0aXZlR2lnYWNhZ2VEZXN0cnVjdG9yKCkgfSk7Cisg
ICAgICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXktPmFwcGVuZCh7IGJ1ZmZlciwgY2hl
Y2tlZEJ1ZmZlclNpemUsIEFycmF5QnVmZmVyOjpwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3Io
KSB9KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5jcHAKaW5kZXggYTY2YjE5MWQ2ODZkLi41NTllYmNjNDhjNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNjgsNyArNjgsOSBA
QCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29yZTo6QmxvYiYgYmxvYikKIAog
ICAgIGF1dG8gYnl0ZUxlbmd0aCA9IGJsb2Iuc2l6ZSgpOwogICAgIGlmICghYnl0ZUxlbmd0aCkg
ewotICAgICAgICBlbnF1ZXVlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZSgwVSwgMSksIDAsIDAp
OworICAgICAgICAvLyBUaGUgY2FzdCBsb29rcyB3ZWlyZCwgYnV0IGlzIHJlcXVpcmVkIGZvciB0
aGUgb3ZlcmxvYWRpbmcgcmVzb2x1dGlvbiB0byBzdWNjZWVkLgorICAgICAgICAvLyBXaXRob3V0
IGl0LCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkgd2hlcmUgQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25z
dCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKSBjb3VsZCBiZSBjYWxsZWQgaW5zdGVh
ZC4KKyAgICAgICAgZW5xdWV1ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
c2l6ZV90PigwVSksIDEpLCAwLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRv
IGJsb2JMb2FkZXIgPSBtYWtlVW5pcXVlUmVmPEJsb2JMb2FkZXI+KFt0aGlzXShCbG9iTG9hZGVy
JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIu
Y3BwCmluZGV4IDI1YmZmMTUzZDEyYy4uNzU0M2Y0NzVhMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCkBAIC03NCw2ICs3NCw4IEBA
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1
ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChidWZmZXJTaXplKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPQm94LmgKaW5kZXggODcwYmRjODBmMzU1Li5kODNlNGE0MDQwY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkZvdXJDQy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02Myw3ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIGJvb2wgY2hlY2tlZFJlYWQoUiYgcmV0dXJuVmFsdWUsIFYmIHZpZXcsIHVuc2lnbmVk
JiBvZmZzZXQsIEVuZGlhbm5lc3MgZW5kaWFubmVzcykKICAgICB7CiAgICAgICAgIGJvb2wgcmVh
ZFN0YXR1cyA9IGZhbHNlOwotICAgICAgICBUIHZhbHVlID0gdmlldy50ZW1wbGF0ZSByZWFkPFQ+
KG9mZnNldCwgZW5kaWFubmVzcyA9PSBMaXR0bGVFbmRpYW4sICZyZWFkU3RhdHVzKTsKKyAgICAg
ICAgc2l6ZV90IGFjdHVhbE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgVCB2YWx1ZSA9IHZpZXcu
dGVtcGxhdGUgcmVhZDxUPihhY3R1YWxPZmZzZXQsIGVuZGlhbm5lc3MgPT0gTGl0dGxlRW5kaWFu
LCAmcmVhZFN0YXR1cyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5Cb3VuZHM8dWludDMy
X3Q+KGFjdHVhbE9mZnNldCkpOworICAgICAgICBvZmZzZXQgPSBhY3R1YWxPZmZzZXQ7CiAgICAg
ICAgIGlmICghcmVhZFN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>